在上一小节开发打包静态动态库中,已经介绍了怎么打包成一个framework的库,在这小节就来介绍不打包成framework,使用cocoapods来管理自己的私有组件。
其实怎么开发私有组件,跟上一小节讲的都一样,只不过最后不用打包,通过cocoapods来引用私有库,跟引用第三方开源库是一样的。
1、创建私有的CocoaPods索引仓库(Specs Repo)
这里我们先去开源中国创建一个私有的Git仓库,用来专门存放私有组件的Spec。复制git的https链接,打开终端,输入命令,添加repo,因为是私有仓库,所以会叫你输入用户名和密码。
pod repo add 私有Repo名字 GitURL
pod repo add TestSpecs https://git.oschina.net/Test/TestSpecs.git
添加完成后,使用命令可以查看cocoapods的所有仓库,是否存在我们新添加的
pod repo list #或者
pod repo
2、创建lib
创建lib这一步其实大多步骤跟之前讲的一样,只要不同的就是需要提交到远程仓库,主要还是要修改 ".,podspec"文件。
首先我们还是需要在开源中国创建一个私有的Git仓库,用来存放我们lib的代码。创建好私有的Git仓库,复制链接到Sourcetree克隆到本地。然后使用命令在终端pod lib create LibName
创建初始化自己的lib。把创建出来的项目文件,除了.git文件夹之外复制到服务器端的文件夹内,提交push到远端服务器,这样服务器和本地的lib项目就关联了。
接下来就是开发lib完成,然后修改 ".,podspec"文件,跟之前的主要不同点就是
s.source = { :git => 'https://git.oschina.net/Test/test.git', :tag => s.version.to_s } #更改为服务器的git地址
s.version = '0.1.0'#版本号更改
3、pod 验证 ,提交代码
当自己的lib开发完成,用xcode能编译通过,则就使用命令pod lib lint
验证项目是否符合cocoapods,验证通过则提交到git,然后添加tag,tag的名字就是版本号(s.version),最后推送到服务器上。
4、提交lib的podspec文件到SpecsRepo
终端切换到lib的目录,输入命令
pod repo push 私有索引仓库 LibName.podspec --allow-warnings #这里也可以加上参数忽略警告,要不然提交不上去
提交成功后,使用命令pod search LibName
搜索,就可以看到刚刚提交的lib信息。
5、项目中集成Lib
到了这一步其实就跟我们平时使用pod集成开源的第三方库一样了,在Podfile文件中输入 pod '自己私有lib名字',然后在pod install就可以集成到项目中了。
如果遇到问题[!] Unable to find a specification for “LibName”
,就在Podfile文件中增加source再执行pod install 命令
# Uncomment the next line to define a global platform for your project
platform :ios, '8.0'
source 'https://git.oschina.net/Test/TestSpecs.git'#自己的私有仓库
source 'https://github.com/CocoaPods/Specs.git'#官方仓库
target 'Test' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
# Pods for Test
pod 'libname'#集成自己的lib
end
6、如果不使用私有索引仓库,其他集成命令
#使用仓库中的master分支
pod 'LibName', :git => 'https://git.oschina.net/Test/test.git'
#使用仓库的某个tag
pod 'LibName', :git => 'https://git.oschina.net/Test/test.git', :tag => '0.1.0'
#使用podspec(可以是本地路径也可以是网络的)
pod 'LibName', :podspec => 'https://example.com/JSONKit.podspec'
其实我觉得也不用这么麻烦管理那么多索引仓库,直接使用podspec文件集成就好,把编写好的podspec文件跟随项目提交到git不就可以了吗?