
前言
因为公司项目中引入私有库很久了,一直想写一篇关于创建私有库的步骤总结。这几天正好比较闲,在同事Bartholomew大熊的帮助下,完成了这篇文章。
具体私有库是什么,就不再赘述,直接开始创建私有库啦。
下面我们就直接开始!Go!
详细步骤
1.创建私有库
首先我们要创建两个私有仓库。一个仓库是存放代码的仓库JATestKit(带上README.md和LICENSE),一个是索引库JAPrivateRepos,两个库的关系就好比AFNetworking和cocoapod的关系,换句话说,你的索引库对于你的代码库来说,就相当于cocoapod,你创建的所有代码库都存放在索引库里。
因为GitHub的私有库需要收费,我这里使用的是coding.net创建的私有库。
创建私有库的步骤在这里就不详细写了......因为太简单了~

创建完成之后,我们先不管代码库。先将索引库添加到本地的cocoapods/repos目录下。
到在终端中执行如下命令
cd .cocoapods/repos
pod repo add JAPrivateRepos https://git.coding.net/Plotac/JAPrivateRepos.git
即pod repo add +你的索引库名称 +索引库地址
回车,出现如下所示就成功辣~

此时可以进入.cocoapods/repos目录下验证一下是否创建成功

今后你的所有私有库,在不更改索引库的情况下,都会在这个文件里。
Nice!Next!
2.创建Pod项目工程文件
接下来要创建podspecs代码库 ,代码如下
pod lib create JATestKit_Local
即pod lib create +代码库名称。
我这里把它放在了桌面。
执行命令,成功后,桌面就会出现
JATestKit_Local文件夹了。
紧接着,终端上会出现几个问题,如下图

全部回答完之后,会自动执行pod install命令创建项目并生成依赖。若出现下图所示,说明Pod项目工程文件就创建成功了!

3.配置Pod项目工程文件
打开我们刚刚clone下来的 JATestKit_Local。
JATestKit_Local -> Example -> JATestKit_Local.xcworkspace
展开Podspec Metadata文件,点击JATestKit_Local.podspec,开始编辑。

编辑完之后,我们可以验证一下这个文件是否可用。cd到这个文件中,执行一行命令:
pod lib lint JATestKit_Local.podspec
出现如图所示的情况,就是成功了哟~

如果没有成功,就要重新编辑,把warning和error全部消除。
4.向私有库中提交Pod工程文件
现在我们的Pod工程文件podspec已经制作好了。
打开JATestKit_Local.xcworkspace,我们在如图所示的目录下创建一个类JATestClass,记得要把里面Classes里面自动生成的ReplaceMe.m文件删除~

我们在JATestClass.h文件中声明一个方法,并在.m文件中实现它。
.h中
- (void)ja_test;
.m中
- (void)ja_test {
NSLog(@"Private Specs:success");
}
等一下我们就用这个方法来验证私有库是否可用。
接下来,就该将代码上传到coding.net的仓库里啦~
命令如下:
git add .
git commit -m "commit"
git remote add origin https://git.coding.net/Plotac/JATestKit.git
git push -u origin master
然后,在push的时候,华丽丽的失败了- 0-。

这是因为仓库里的README.MD、LICENSE和我们podspecs里的冲突了。
解决冲突:
git pull origin master
git pull origin master --allow-unrelated-histories
然后解决冲突之后再提交
git add .
git commit -m 'commit2'
并且重新push到git上去。
命令:
git pull origin master
git push -u origin master
tips:如果中间出现错误可用如下命令查看状态
git status
成功以后,coding.net上就有了我们的代码了~

5.标记tag
code上传成功以后,标记tag
git tag 0.1.0
git push origin 0.1.0

6.将私有库放到索引库里
在第一步中,我们已经将索引库clone到了我们的cocoapods/repos目录下了。
cd到JATestKit_Local,执行命令:
pod repo push JAPrivateRepos JATestKit_Local.podspec
即pod repo push +索引库名 +podspec名
出现下图,说明你就大功告成了,撒花,鼓掌👏

验证一下:
pod search JATestKit_Local

至此,私有库的制作就完成了。
7.验证
接下来,我们新建一个工程PrivateSpecsTest,测试一下是否正常使用。
Podfile:
source 'https://git.coding.net/Plotac/JAPrivateRepos.git'
platform :ios, '8.0'
target 'PrivateSpecsTest' do
pod 'JATestKit_Local', '0.1.0'
end
然后:
pod install
打开工程后就发现导入成功啦~:

在ViewController里,导入头文件
#import "JATestClass.h"
- (void)viewDidLoad {
[super viewDidLoad];
JATestClass *obj = [[JATestClass alloc]init];
[obj ja_test];
}
Command+R ..
控制台输出:

干的漂亮!
8.更新版本
私有库已经制作成功了,现在我们就要对自己的库进行更新维护,提交新版本~
打开例子工程:
JATestKit_Local -> Example -JATestKit_Local.xcworkspace
比如说,我们要给我们的JATestClass类扩充一个新的方法。
.h中
- (void)ja_newTest;
.m中
- (void)ja_newTest {
NSLog(@"Update Success");
}
点击JATestKit_Local.podspec,开始编辑:

如果你的更新有很多内容,可以在详细介绍里面完善,这里只做一个例子。
更改之后,提交:
git add .
git commit -m 'commit666'
git pull origin master(先拉一下代码,防止多人开发的时候别人有提交的代码)
git push -u origin master
标记新的tag
git tag 0.1.2
git push origin 0.1.2
Push到索引库里
pod repo push JAPrivateRepos JATestKit_Local.podspec
如果没有出现error和warning,就说明成功了
搜索一下
pod search JATestKit_Local
更新成功

棒棒哒!💯
至此,私有库的制作和更新就全部完成~
有错误不对的地方还望多多指教,感谢阅读。
参考资料:
使用Cocoapods创建私有podspec
Creating Your First CocoaPod
再次感谢 Bartholomew大熊 的帮助~
网友评论