CocoaPods上传公用项目
存在的问题
项目写到一定阶段时,在新建项目另起炉灶的时候,大量的使用了老项目的公用部分,暂且不论copy/paste
对我们自身成长的局限吧,单单从下面的场景可以看到单纯的copy/paste
是多么的致命:
场景:新的项目使用到老项目的公用代码,但是在开发过程中,这部分的公用代码可能并不完善或者性能并不高效的代码,虽然你会很积极用心的改好了新项目中的这部分代码,往往回去再改老项目的时候会非常非常的痛苦,哪怕这块公用代码只有新老两个项目使用。
CocoaPods介绍
CocoaPods
可以说是解决这个问题比较好的方式了,作为iOS
非常好用的项目依赖管理工具,它能方便的管理和更新项目中使用的第三方库。关于它的一些介绍,iOS
的大大们都已经开好了大道,推荐看看唐巧大大的CocoaPods做iOS程序的依赖管理
CocoaPods上传项目步骤
接下来简单高效的说明CocoaPods
上传公用项目的步骤:
1、创建Pod项目
工程文件;
2、在github
或者其他git
服务网站对该项目建立git仓库
;
3、配置HDBaseProject.podspec
文件;
4、将代码放在Pods-Development Pods/HDBaseProject/Pod/Classes/
目录下;
5、在项目的master分支
加上版本号;
6、在CocoaPods
上注册刚刚的Pod项目
;
7、验证Pod项目
是否符合CocoaPods
的规范;
8、将HDBaseProject.podspec
到cocoaPods
中;
9、新项目使用;
10、一些问题;
接下来详细的说明CocoaPods
上传公用项目的步骤:
1、创建Pod项目
工程文件:
$ pod lib create HDBaseProject
2、在github对该项目建立git仓库:
$ cd projectPath
$ git add .
$ git commit -s -m "Initial Commit of Library"
$ git remote add origin https://github.com/erduoniba/ HDBaseProject.git
$ git push origin master
3、配置HDBaseProject.podspec
文件:
Pod::Spec.new do |s|
s.name = "HDBaseProject"
s.version = "1.0.0"
s.summary = "快速搭建项目"
s.description = "新建项目中常用的基础类,项目有一定量的时候,都是代码的复制和粘贴,但是在后台的粘贴中或许有好的代码更正,这个时候我们往往没有时间去维护以前的老代码,不经意间会出现代码不同步的问题"
s.homepage = "https://github.com/erduoniba/HDBaseProject"
s.license = 'MIT'
s.author = { "Harry" => "328418417@qq.com" }
s.source = { :git => "https://github.com/erduoniba/HDBaseProject.git", :tag => "1.0.0" }
s.platform = :ios, '7.0'
s.requires_arc = true
s.source_files = 'Pod/Classes/**/*'
s.resource_bundles = {
'HDBaseProject' => ['Pod/Assets/*.png']
}
s.dependency 'AFNetworking' #依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependency
end
4、将代码放在Pods-Development Pods/HDBaseProject/Pod/Classes/
目录下:
5、在项目的master分支
加上版本号:
这个地方的tag值需要和HDBaseProject.podspec
中的v.version
保存一致
$ cd projectPath
$ git tag -m "first release" 1.0.0
$ git push --tags #推送tag到远端仓库
6、在CocoaPods
上注册刚刚的Pod项目
:
$ cd HDBaseProject.podspec文件所在的路径
$ pod trunk register 13049862397@163.com 'HDBaseProject' --description='新建项目中常用的基础类,项目有一定量的时候,都是代码的复制和粘贴,但是在后台的粘贴中或许有好的代码更正,这个时候我们往往没有时间去维护以前的老代码,不经意间会出现代码不同步的问题'
注册之后收到来自info@cocoapods.org的一封验证邮箱,点击链接确认即可
7、验证Pod项目
是否符合CocoaPods
的规范:
$ cd HDBaseProject.podspec文件所在的路径
$ pod lib lint
当显示HDBaseProject passed validation
表示验证通过
8、将HDBaseProject.podspec
到Spec Repo
中:
$ cd HDBaseProject.podspec文件所在的路径
$ pod trunk push HDBaseProject.podspec
成功之后使用
$ pod search HDBaseProject
可以搜索到该项目,这表明在Cocoapods
上传项目已经成功
9、新项目使用:
会使用CocoaPods
的同学都懂,在项目的Podfile
中添加
pod 'HDBaseProject'
执行:
$ cd newProjectPath
$ pod update
10、一些问题:
10.1
HDBaseProject
本身依赖其他pod工程
,比如依赖AFNetworking
,需要对Pods/Podfile
进行修改:source 'https://github.com/CocoaPods/Specs.git' use_frameworks! target 'HDBaseProject_Example', :exclusive => true do pod 'HDBaseProject', :path => "../" pod 'AFNetworking' end target 'HDBaseProject_Tests', :exclusive => true do pod 'HDBaseProject', :path => "../" pod 'AFNetworking' end
然后终端执行:
$ cd Pods/Podfile所在的路径
$ pod update
10.2 对
.spec
文件的理解:
在Specs仓库中包含了所有Pod项目
,随便点击一个Pod项目
进去可以发现里面只有一个json
文件:(里面内容其实就是开发者上传的.spec
文件转json
后的文件)
同样的,我们在安装或者更新CocoaPods
的时候,实际上就是在更新Specs仓库
,本地存放地址是:.cocoapods/repos/master/Specs
10.3 项目更新:
项目编辑完成之后,将这个工程push到远端仓库,并打上新的tag->1.0.1
和HDBaseProject.spec
中的v.version
保存一致$ cd HDBaseProject.podspec文件所在的路径 $ pod lib lint
验证通过,再次提交到
Spec Repo
中
最后再次使用pod lib lint验证编辑好的podsepc文件,没有自身的WARNING或者ERROR之后,就可以再次提交到Spec Repo中了,命令跟之前是一样的
$ cd HDBaseProject.podspec文件所在的路径
$ pod trunk push HDBaseProject.podspec
10.4 项目删除:(未试验��)
$ cd .cocoapods/repos/master/Specs $ rm -Rf HDBaseProject $ git add --all . $ git ci -m "remove HDBaseProject" $ git push origin master
10.4 项目邀请他人共同维护:(未试验��)
$ pod repo add HDBaseProject https://github.com/erduoniba/HDBaseProject.git