首先来说说什么是私有库
顾名思义,就是你的私人代码仓库,而不是开源出去让大家都能看到并参与开发的项目。私有仓库可以进行权限控制,只有拥有权限的人才能访问并修改它,也就是我们所说的合作者。
私有库不在cocoaPods的官方Repo仓库中,而是在自建的spec repo中,库索引是以 *.podspec
文件形式存在,自建的spec repo放在路径~/.cocoapods/repos下,与master同级,其链接的远程仓库可以是公开的,也可以是私有的。
创建pod库
创建私有库有两种方案,第一种方案手动创建 podspec
与自己私有仓库进行关联,第二种直接使用cocoapods
创建
方案一
首先选择在xcode里新建framework
项目,并且在公司仓库gitLab新建两个远程仓库(索引库、代码库)用git将本地framework项目推入远端
在用终端本地执行
#用于创建一个新的 Pod(即一个 iOS 或 macOS 的库或框架)的规范文件(`.podspec` 文件)
pod spec create PodName
在.podspec
里面进行编辑,稍后会详细讲解 podspec文件内容
最后在终端执行查看当前pod文件是否规范
#用于检查一个 Pod 的规范文件(`.podspec` 文件)是否符合规范和要求
pod spec lint PodName.podspec
如果编译成功,符合规范要求就可以提交pod 方案一与方案二提交都一样,此处先略过了
pod repo push 索引库 podName.podspec--verbose--use-libraries--allow-warning
方案二
- 直接使用
cocoapods
创建
pod lib create PodName
- 然后依次输入,执行即可
What platform do you want to use?? [ iOS / macOS ]
> iOS
What language do you want to use?? [ Swift / ObjC ]
> ObjC
Would you liketo include a demo application with your library? [ Yes / No ]
> YES
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> None
Would you like to do view based testing? [ Yes / No ]
> No
What is your class prefix?
> HY
-
添加库文件。
成功后会创建出一个pod_test工程,目录结构如下
将编写好的一些文件拉入pod_test/classes中。
Example是创建Pods工程时生成的一个工程,用于验证添加的库文件是否能正常使用。Example目录下Podfile文件中自动设置了pod_test依赖,如下:
target 'pod_test_Example' do
pod 'pod_test', :path => '../' #自动添加了
cd Example文件夹下,终端执行pod install或pod update,安装pod_test依赖就可以查看在项目中应用了
- 提交pods库到github上。打标签,推送到远程。重点:tag打的版本号必须和podspec中的s.version值相同
.podspec文件配置
#
# Be sure to run `pod lib lint SYCoreKit.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
s.name = 'xxxxx' #搜索的关键词,注意这里一定要和.podspec的名称一样
s.version = '0.0.1' #版本号,每一个版本对应一个tag
s.summary = "iOS框架" #项目简介
s.description = "iOS框架" #pod详细描述
s.homepage = 'http://114.116.222.206:9002/zhangchao/siyucorekit.git' #项目主页地址
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' } #许可证
s.author = { 'superMan' => 'xxxxxxxx' }#作者
s.source = { :git => 'http://xxx.git', :tag => s.version.to_s }#项目的地址
s.social_media_url = 'https://twitter.com/xxx'#作者社交地址
# s.pod_target_xcconfig = { 'VALID_ARCHS' => 'arm64'} 是修改当前pod工程中的项目设置
# s.user_target_xcconfig = { 'VALID_ARCHS' => 'arm64','EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64'} 是修改当前用户工程中的项目设置
s.ios.deployment_target = '12.0' #支持的pod最低版本
s.static_framework = true #动态库模式pod
s.requires_arc = true # 是否启用ARC
s.source_files = 'SYCoreKit/Classes/**/*' #需要包含的源文件
# s.resource_bundles = {
# 'SYCoreKit' => ['SYCoreKit/Assets/*.png']
# } 资源文件
# s.public_header_files = 'Pod/Classes/**/*.h' #标记公共头文件列表
s.ios.frameworks = "UIKit", "Foundation" #支持的系统框架
s.dependency 'YYModel', '1.0.4'#三方依赖
end