上一篇(让自己的开源项目支持CocoaPods集成)介绍了将自己开发的框架代码发布到Cocoapods,全球的开发者都可以通过pod search搜索到我们的框架代码以及通过pod install进行安装。但有时候我们希望只有我们项目内部的人才可以集成和修改,此时就可以创建远程的私有库。
通过pod search命令,Cocoapods会在官方索引库中进行搜索,通过pod repo可以查看本机添加了的索引库,其中的master( https://github.com/CocoaPods/Specs.git ) 就是官方的索引库。如果要创建私有库,我们可以添加一个不对外公开的索引库,使得pod search时,直接通过我们的索引库找到我们的代码。
主要步骤为
- 创建自己的远程私有索引库,即在远程git仓库创建一个包含.podspec索引文件的git仓库,并设置为私有(github需要收费,可以选择免费的码云gitee.com)
- 配置公私钥后,通过pod repo add ’远程私有索引库名称‘ ’远程私有索引库地址‘ ,添加为新的索引库。此时我们通过pod search '项目名称’时,就会同时在官方索引库和我们新添加的索引库中搜索。
- 通过pod lib create ‘远程私有框架库名称’,在本地创建模板库,放入我们的框架代码。
- 修改模板库里.podspec文件里的配置信息
- 在远程git仓库创建包含我们代码的git仓库,提交模板库到第3步中创建的远程git仓库
- 将框架.podspec文件提交到私有索引库
下面以实际例子创建HYSpecs远程私有索引库和远程框架HYBase
一、创建自己的远程私有索引库
- 码云创建名称为HYSpecs的git仓库,注意要选择私有
二、添加私有索引库
为了访问上一步创建的索引库,我们先配置公钥和私钥
- 创建公钥和私钥
在终端输入
ssh-keygen
显示Enter passphrase (empty for no passphrase): 时直接回车,此时成功在本地生成私钥和公钥。
-
将公钥配置到码云
在码云上点击设置-ssh公钥,然后用Xcode或Sublime打开用户名/.ssh/id_rsa.pub文件,将内容拷贝到码云上。 -
通过以下命令添加私有索引库
pod repo add HYSpecs git@gitee.com:xwjadmin/HYSpecs.git
此时用以下命令查看所有的索引库,可以看到已经成功添加HYSpecs
pod repo
三、创建本地框架模板
- cd到放项目的目录后,通过以下命令创建框架模板
pod lib create HYBase
此时会询问我们框架项目的一些基本信息,根据实际填写即可
-
模板创建成功后,把我们的框架代码(此示例为HYBaseViewController)放入Classes文件夹
-
cd到Example文件夹,执行安装命令
pod install
此时已经将Classes中的代码集成到Example的HYBase项目中,运行一下看是否能编译成功。
四、 配置HYBase.podspec
用Xcode或Sumlime打开HYBase.podspec文件,进行基本配置:
Pod::Spec.new do |s|
s.name = 'HYBase'
s.version = '1.0.0'
s.summary = 'HYBase.'
s.description = <<-DESC
HYBase.
DESC
s.homepage = 'https://gitee.com/xwjadmin/HYBase'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { '151611438@qq.com' => '151611438@qq.com' }
s.source = { :git => 'https://gitee.com/xwjadmin/HYBase.git', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'
s.source_files = 'HYBase/Classes/**/*'
end
详细参数请参照上一篇(https://blog.csdn.net/dolacmeng/article/details/88416019)
五、创建并提交到远程仓库
在码云创建名为HYBase的远程仓库
将第三步创建的模板提交的远程HYBase仓库:
git remote add origin https://gitee.com/xwjadmin/HYBase.git
git add .
git commit --m 'init'
push -u origin master -f
git tag '1.0.0'
git push --tags
具体步骤解释参照上一篇https://blog.csdn.net/dolacmeng/article/details/88416019
六、将框架的.podspec文件提交到私有索引库
pod repo push HYSpecs HYBase.podspec
此时我们的描述文件已经被提交到本地的私有索引库中,然后本地私有索引库会自动将描述文件同步到我们的远程私有索引库当中。
此时通过pod search命令就可以搜索到我们的框架了
pod search HYBase
注意在Podfile文件中,我们需要先声明使用的索引库
source 'git@gitee.com:xwjadmin/HYSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'
此时再执行pod install
七、子库
搜索AFNetworking,可以看见有多个子库
pod search AFNetworking
如检查网络状态的Reachability,可以只集成AFNetworking/Reachability这一子库,只需在Podfile文件添加:
pod "AFNetworking/Reachability"
例如框HYBase框架中需要集成Base、Category、Network等多个子库,在HYBase.podspec文件中添加如下:
s.subspec 'Base' do |b|
b.source_files = ''
end
s.subspec 'Category' do |c|
b.source_files = ''
end
s.subspec 'Network' do |n|
n.source_files = ''
n.dependency = 'AFNetworking'
end
其中source_files路径为对应代码的本地路径。