使用cocoaPods结合git源代码管理工具可以轻松实现项目组件化,多分支开发,下面记录使用过程中命令以作备忘.
CocoaPods-远程私有(公开)库创建与更新-多分支开发
使用cocoaPods结合git源代码管理工具可以轻松实现项目组件化,多分支开发,下面记录使用过程中命令以作备忘.
以开发一个轮播器组件为实例,一步步演示组件化开发过程.由于不是公司项目,并且本着开源分享精神.所有源代码和远程代码库均开源在github公开库中.
1.创建”图片轮播器”组件工程代码库(使用pod模板工程进行创建) - 本地库
$ pod lib create XWPicCarouselLib
其中”XWPicCarouselLib”为本地项目模板库的名称,随便起
可能遇到的坑:
1.填写相应信息,如果遇到创建失败建议翻墙
2.模板工程界面显示不全 可以自己生成一个 Launch Screen.storyboard 设为启动界面
2.在Github上创建相应远程库进行管理,并将本地代码仓库上传远程.
1.github创建对应远程仓库地址
2.将本地仓库上传到远程仓库
$ git add .
$ git commit -m "项目初始化"
$ git remote
查看本地所关联的远程仓库
$ git remote add origin https://github.com/qxuewei/XWPicCarouselLib.git
关联远程仓库
$ git push origin master
push到远程仓库
中间可能会要求输入github用户名密码
如果报403错误原因是本地缓存了用户名密码,使用 git remote set-url origin 远程仓库地址
3.开始进行开发,实现相应功能.
开发结束之后替换相应文件
3.1.使用 $ pod install
重新安装
修改.podspec文件相应内容
可参考:
Pod::Spec.new do |s|
s.name = 'XWPicCarouselLib'
s.version = '0.1.0'
s.summary = 'XWPicCarouselLib.'
s.description = <<-DESC
XWPicCarouselLib.图片轮播组件
DESC
s.homepage = 'https://github.com/qxuewei/XWPicCarouselLib'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'Xuewei' => 'qxuewei@yeah.net' }
s.source = { :git => 'https://github.com/qxuewei/XWPicCarouselLib.git', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'
s.source_files = 'XWPicCarouselLib/Classes/**/*'
end
3.2.将开发完成的项目重新上传到 github 远程仓库
根据.podspec文件中s.version版本号为模板工程创建tag版本并push到远程仓库
$ git tag 0.1.0
$ git push --tags
3.3 验证podspec文件
$ pod lib lint
验证本地连接
$ pod spec lint
验证远程连接
验证通过继续执行后续操作,验证失败检查相应错误信息
4.创建远程索引库
5. 将远程索引库clone到本地,会自动将自己创建的远程索引库拷贝到cocoapod索引库的同级目录中.(/Users/carayfire-develop/.cocoapods/repos)
克隆之前可查看当前本地pod索引库
$ pod repo
添加远程索引库
pod repo add XWFMSpecsOC https://github.com/qxuewei/XWFMSpecsOC.git
链接为远程索引库地址
克隆成功再使用 $ pod repo
查看会发现我们的远程索引库已经克隆到本地
6. 将开发的本地 .podspec 文件添加到本地索引库,系统会自动将其上传到远程索引库
$ pod repo push XWFMSpecsOC XWPicCarouselLib.podspec
其中 XWFMSpecsOC 为之前克隆到本地的私有库名称,XWPicCarouselLib.podspec 为自己开发的自有库索引文件
上传成功-> 之后就可以在任何设备进行第五步操作之后使用自己刚才开发的框架了.
在使用时需要注意在podfile文件中,需要指明数据源
source 'https://github.com/qxuewei/XWFMSpecsOC.git'
source 'https://github.com/CocoaPods/Specs.git' #官方仓库的地址
补充:
podspec文件的编写是可能遇坑的地方.
如果希望框架中的文件夹能够选定导入,需要在podspec文件中做相应修改,如:
s.subspec 'XXXSub' do |sb|
sb.source_files = '相对路径/**/*'
sb.public_header_files = '相对路径/**/*.h'
sb.resource = "相对路径/**/*.{bundle,nib,xib}"
sb.dependency 'xx框架', '~> 1.0.0'
end
或者项目中依赖某个框架需要在podspec文件中同样进行指明
s.dependency 'AFNetworking'