Podfile文件的编写
platform :ios, '6.0'
pod 'LocalPod', :path =>'~/Project/CodingTom/Cartfile'
pod 'ObjectiveSugar', '~> 0.5'
pod 'Objection', '0.9'
pod 'PonyDebugger', :configurations => ['Release', 'App Store']
pod 'QueryKit', :subspecs => ['Attribute', 'QuerySet']
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git'
target :test do
pod 'OCMock', '~> 2.0.1'
end
凡是做iOS开发的,应该没人不知道CocoaPods吧,它大大提高了我们的引入开源库的效率,可以很方便就获取到我们需要的第三方类库,节省了很多时间。相信大家对使用Pods库已经非常熟悉,不过今天我们主要讲讲如何在项目中制作开源库和私有Pods库。
我们平时用的最多的命令
pod install
pod update
有时候会很慢,我们往往喜欢在后面加个参数,变成
pod install --no-repo-update
意思是不需要更新repo库,这里的repo库指的是CocoaPods官方索引库( https://github.com/CocoaPods/Specs.git ),这个库记录了所有被CocoaPods官方收录的第三方类库,我们在使用CocoaPods时,会自动clone这个库到本地(~/.cocoapods/repos/master)。
以后每次 pod install 时会检查本地repo库需不需要更新,如果不需要,便会在本地repo库中获取第三方库的信息,进行配置,而这个库很大,更新需要很久,所以我们一般喜欢加上一句 --no-repo-update。
下面我们进入正题
CocoaPod库与通用开源库的区别
一个CocoaPod库和一个通用的开放源码库都开源自己的源代码,但CocoaPod库最主要的特点是有 podspec 文件 和 LICENSE,CocoaPod不接受没有代码许可证的库。
CocoaPods开源库项目实践
CocoaPods库的从制作到使用主要有以下几个步骤:
- 创建Spec Repo
创建 pod lib 项目
pod lib create ProjectName
- 开发代码和测试代码
创建完成后编写代码
修改 podspec 中的 s.source 为自己GitHub库的地址
把代码 push 到 GitHub 网站上,为代码添加Tag(podspec中的s.version和tag保持一致)。
- 发布CocoaPods库
之前的开发和测试就绪后,就要准备发布库了.
首先要检测Podspec的正确性
pod lib lint 或者 pod spec lint
pod lib lint 不会连接网络,而是检查本地项目配置是否正确
pod spec lint 会读取线上的repo并检查相应的tag
以后发布库版本
pod trunk push NAME.podspec
什么是Private Spec Repo
CocoaPods最核心的功能是类库管理,我们平时用的最多的是管理公共类库,说到这你也许已经猜到了,对,它也支持管理非公开的类库。现在大点的iOS项目,代码行数千千万,很多业务模块或者工具类都是相对独立的,可以以独立类库的方式集成进项目中,但是因为种种原因,这些代码不能公开放到GitHub上,只能放在公司服务器上,这时候就需要Private Spec Repo上场了。简而言之它是一个私有的repo库,功能和官方的repo库一样,唯一的区别是它放在自己公司的服务器上,只有本公司的人可以访问,它维护着公司内部私有类库的索引。
CocoaPods私有库项目实践
私有库的从制作到使用主要有以下几个步骤:
- 创建Private Spec Repo
首先在公司服务器上创建一个仓库然后将服务器中的仓库与本地 pod repo 关联:
pod repo add [Private Repo Name][GitHub HTTPS clone URL]
pod repo add REPO_NAME SOURCE_URL
pod repo add privateRepo http://公司服务器地址/privateRepo.git
备注:此处privateRepo名可以随便取,只是取在你本地的一个命名,作为与远端相关联的一个名称。
- 创建pod lib项目,并修改podspec文件
创建 pod lib 项目
pod lib create ProjectName
通过 pod lib create 创建一个pod,分析创建流程
当执行pod lib create ProjectName时,其实是下载了一个pod模板,然后在内部通过更改.podspec文件的配置定制化自己的pod,pod lib create ProjectName其实使用了默认参数,补全的话 pod lib create ProjectName --template-url=https://github.com/CocoaPods/pod-template.git
我们也可以自定义模板
pod lib create ProjectName --template-url=你自己模板的URL
修改 podspec 中的 s.source 为自己私有库的地址
s.source = { :git => 'https://gitlab.name.com/project_name.git' }
- 发布私有库
之前的开发和测试就绪后,就要准备发布私有库了.
首先要检测Podspec的正确性
pod lib lint 或者 pod spec lint
pod lib lint 不会连接网络,而是检查本地项目配置是否正确
pod spec lint 会读取线上的repo并检查相应的tag
以后发布版本
pod repo push REPO_NAME SPEC_NAME.podspec --verbose
网友评论