使用CocoaPods私有库管理组件

/ 0

当多人协作组件化开发时,我们需要使用 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]