我们开发项目不可能私有库创建好以后就不管了,产品的更新迭代、版本的开发、修改或者优化问题时,都需要给私有库进行升级更新。就如没有组件化前每开发一个版本,新拉一个分支打一个Tag,防止版本的更新造成代码的紊乱、业务的不流畅。
我们以在私有库新增一个页面为例。
1. 代码添加好,执行pod install
PS:上面的代码进行了分层,在下面会将到。分层后执行pod install
代码消失,请看最后。
leon:Example huanghaipo$ pod install
2. 提交代码
# 保存代码
$ git add .
# 先提交到本地仓库,并填写提交描述
$ git commit -a -m "私有库版本更新"
# git pull origin maste可能会失败 ,提示:fatal: refusing to merge unrelated histories 原因是远程仓库origin上的分支master和本地分支master被Git认为是不同的仓库,所以不能直接合并,需要添加 --allow-unrelated-histories 如果已经绑定过这
$ git pull origin master --allow-unrelated-histories
# 推送项目到master分支上 第一次push如果报错的话可以加上 origin 前面加上 -f
$ git push origin master
# 提交版本号 建议和 podspec文件里面写的版本号一致
$ git tag -a '新版本号' -m '注释'
# push到远程分支 或者执行git push --tags
$ git push origin 0.0.1
3. 修改podspec
文件,更新索引库。
1. 修改podspec
文件中的版本号,版本号要和刚才的tag
一致。
s.version = '0.0.2'
2. 远程验证podspec
文件。
//--private私有库参数
pod spec lint --private
3. 更新索引库
pod repo push HPSpeccs(索引库名) 项目名称.podspec(podspec文件)
查看本地索引库,有刚才更新的版本。
查看远端索引库,有刚才更新的版本。
4. 更新项目中的私有库版本
不过一般执行过第一步的pod install
这一步就不用执行了,执行第一步的时候就已经把代码添加进去了。
// --no-repo-update 如果不更新版本索引库加这条命令
pod update
第一步出现的问题
问题:执行过后私有库的代码都没了。
原因:我对于代码进行分层分类,在Classes
下新建文件(HPPrivateLibraryClass)将所有代码放到这里,但是没有告诉CocoaPods对代码进行了分层,它在去安装时找不到代码。
解决办法:在HPPrivateLibrary.podspec
文件中添加分层说明。
//HPPrivateLibrary 当前项目的名称
//ViewControllers HPPrivateLibraryClass文件下的子文件 存放视图控制器
//sss.source_files 代码存放的路径 *代表ViewControllers下的所有文件
s.subspec 'HPPrivateLibrary' do |ss|
ss.subspec 'ViewControllers' do |sss|
#不是真实路径依赖 比如说ViewControllers依赖了Views,Views依赖了Models,所以不需要在写依赖Models
sss.source_files = 'HPPrivateLibrary/Classes/HPPrivateLibraryClass/ViewControllers/*'
end
end