当多人协作组件化开发时,我们需要使用 CocoaPods私有库
来管理我们的组件。
熟悉 CocoaPods 的人都知道,我们 pod install
一个第三方库的时候,会根据库名去本地索引库中查找库的索引文件,从而获取到第三方库的远程地址。而本地索引库则是从远程索引库中的拷贝下来的,而我们要做私有库的话,其实也就是自己创建一个私有的 Specs库
来管理自己私有库的 podspec索引文件
。这样Specs库
和我们开发的组件库都私有化了,自然就实现了 CocoaPods 私有库。
私有远程索引库
这里我们用码市(Coding.net)来做示例,首先创建一个名为 SpecsTest
的私有仓库,作为我们的远程索引库。
查看当前我们已经存在的索引库
pod repo
可以看到当前我们已经有2个存在的索引库了,并且可以看到远程索引库的地址和本地索引库的路径。现在我们再添加刚创建的私有库 SpecsTest
。
pod repo add SpecsTest 'git@git.coding.net:cn_6ag/SpecsTest.git'
这里我们使用 SSH
方式,如果是第一次使用这个平台则需要配置公钥,这个应该大家都会,就不在赘述。成功后我们查看一下当前以及存在的索引库,看看是不是已经添加好了呢。
pod repo
可以看到,我们已经成功添加了私有远程索引库 SpecsTest
。接下来我们就可以创建 CocoaPods 私有组件库,并将 podspec索引文件
上传到我们添加的私有索引库里。
CocoaPods私有库
首先在码市创建一个名为 Test
的私有仓库,作为我们的私有组件库。然后在桌面使用 CocoaPods模板
创建一个组件库 Test
。
cd ~/Desktop pod lib create Test
创建过程中会填写一些基本信息,这些都是 CocoaPods
基础内容,这里就不详细说明了。创建成功后的目录如下图所示。
Test
:存放组件源码和素材的目录。
Example
: Test 组件库的测试工程目录。
Test.podspec
: Test 组件库的CocoaPods库索引文件。
我们这里暂且不编写任何组件库中的代码,直接修改 Test.podspec索引文件
。
Pod::Spec.new do |s| s.name = 'Test' s.version = '0.1.0' s.summary = 'Test.' s.description = <<-DESC TODO: Add long description of the pod here...... DESC s.homepage = 'https://coding.net/u/cn_6ag/p/Test' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { '6ag' => 'admin@6ag.cn' } s.source = { :git => 'https://git.coding.net/cn_6ag/Test.git', :tag => s.version.to_s } s.ios.deployment_target = '8.0' s.source_files = 'Test/Classes/**/*' end
然后将源码 push 到 Test 私有仓库,并打一个 0.1.0
的 tag 。
git init git add . git commit -m "初始化组件库" git remote add origin https://git.coding.net/cn_6ag/Test.git git push origin master git tag -a 0.1.0 -m "测试" git push origin 0.1.0
将 CocoaPods 索引文件 push 到我们的私有索引库 SpecsTest
。
pod repo push SpecsTest Test.podspec
此操作会将索引文件上传到远程索引库和本地索引库中。执行此操作之前,我们可以分别进行本地和远程验证,不过直接 push 也会自动帮我们进行索引文件验证。如果需要手动验证可以执行下面操作:
本地验证
pod lib lint
远程验证
pod spec lint
使用 cocoapods 私有库
完成上面2个任务后,就可以使用我们的 CocoaPods 私有库了。我们创建一个测试工程 TestDemo
,并使用 CocoaPods 来集成我们的组件私有库。 Podfile
文件内容如下:
target 'TestDemo' do use_frameworks! pod 'Test', :source => 'git@git.coding.net:cn_6ag/SpecsTest.git' end
可以看到,我们指定了一个 source(远程索引库地址),含义是 Test
库会去指定的 source 中查找索引文件。
[button]demo下载[/button]