接着上两篇文章CocoaPods公有库和CocoaPods本地私有库,这篇就来讲解下CocoaPods远程私有库,啥叫CocoaPods远程私有库?CocoaPods远程私有库就是库存在远程仓库,权限归自己管理,不是公开的,但可以通过source地址给伙伴们获取自己的私有库。公司需求要用CocoaPods管理模块开发,一般都是做远程私有库,公司的代码不能公开。
一、创建私有索引库(Spec Repo)
私有索引库Spec Repo可以这样理解,公有索引库就是存放在CocoaPods的远程仓库且是公开的,大家都可以用到的,安装CocoaPods的时候已经自动添加索引repo到本地了,其中master就是CocoaPods公有的索引repo。所以自己要创建一个私有的远程仓库存放索引库并把索引repo添加到本地,这样就不是公开的了,是自己私有的。如图所示:
代码托管除了GitHub还有码云和coding,GitHub的私有项目时要钱的,其他两个是免费的,我这里就用码云来创建私有索引库,创建点击右上角的+选择新建项目,如图所示:
创建私有索引库完成后,使用命令 “pod repo add repo的名(如CocoaPods自带的master) 码云项目spec的地址 ” 来创建本地spec库,这里码云项目spec的地址有https和ssh,如果用https的话,别人要用到你的库就要给密码他,这样不方便,ssh不需要输入密码,但第一次的配置的话要配置公钥。
如果没有配置好公钥,执行创建本地spec库就报没有权限的错误,如图:
然后就是生成ssh公钥,通过命令 $ ssh-keygen 来生成ssh公钥,通过提示操作输入保存的密码,我这就不演示了,我之前已经生成过,进入.ssh的路径,用xcode打开id_rsa.pub文件,复制内容。
把复制好的ssh-rsa填到码云的ssh公钥,如图所示:
码云配置好ssh的公钥后,在用命令执行生成本地spec库,结果通过了,然后在repos看到多了一个remoteLib的文件就证明成功了。
用到的命令:
pod repo //查询有多少本地repo
ssh-keygen //生成ssh公钥
pod repo add remoteLib git@gitee.com:vxchj/RemoteLibSpec.git //remoteLib是repo保存的名字 //git@gitee.com:vxchj/RemoteLibSpec.git是在码云创建私有索引库的地址
二、创建Pod私有库所需要的项目工程文件
这里就不详细讲解创建私有项目了,大家用过的应该都知道,直接上图展示。
clone到本地桌面
三、通过CocoPods的官方命令创建Pod项目工程
这也是在桌面创建pod项目工程,使用命令创建Pod项目工程文件 $ pod lib create RemoteLibQiuyh ,RemoteLibQiuyh是工程名,然后等待一下会出现很多选择,按照提示选择输入就OK,下载完就会自动打开工程。
打开刚刚下载好的工程,把自己要做的库放进去,然后删除多余的ReplaceMe.m文件,如图所示:
替换好要上传的库之后,cd到项目中的Example,执行 $ pod install 安装本地库,看能不能安装成功,如图:这时候项目就相当于本地私有库项目了。
四、pod项目关联远程私有仓库、修改.podspec文件和上传远程仓库
有了本地私有库项目后,我们要的是远程私有库,所以要修改.podspec文件并且上传库到仓库。修改.podspec文件这里不多说,详情请看CocoaPods公有库,这一步可以在上传到仓库之后再修改也可以,我这里就先修改了,直接上图,
刚才第二步骤已经创建远程仓库了,也clone到本地了,把通过pod命令生成的pod项目的.git文件替换成远程私有仓库的.git,这样就关联远程仓库了。
替换成.git文件关联远程私有仓库后,就是上传到远程仓库,详细步骤我就不细说了,CocoaPods公有库有说明
配置好.podspec文件,接着就是把代码上传到远程仓库,通过
$ git add . ;
$ git commit -m “XX” ;
$ git push。
打tag,打的tag一定要对应版本号,因为.podspec文件配置已经写好跟版本号一样的,通过
$ git tag '0.1.0' ;
$ git push --tags;
上传成功之后仓库就有源代码和打tag了
五、验证pod是否能通过和提交pod
这里就不详细说明了,请看CocoaPods公有库,我就直接操作上图,这里要详说的是,我直接用pod spec lint --allow-warnings来验证,--allow-warnings是忽略警告,然后就是提交到spec repo,通过命令pod repo push remoteLib RemoteLibQiuyh.podspec ,remoteLib是之前生成的本地repo名,可以进入repos查看,或者直接命令 pod repo查看,RemoteLibQiuyh.podspec就是你笨项目的.podspec文件,如图所示就是通过验证并且提交成功。(注:如果没有改命令就要注册CocoaPods账号,详情请看CocoaPods公有库)
提交pod成功后搜索一下看能不能搜索到,通过命令pod search RemoteLibQiuyh搜索,结果可以搜索的到,那证明制作完成。
用到的命令:
$ pod repo //查询repo
$ pod spec lint --allow-warnings //远程本地pod验证
$ pod repo push remoteLib RemoteLibQiuyh.podspec //提交pod到自己的私有索引库,remoteLib是之前生成的本地repo名
$ pod search RemoteLibQiuyh //查询库
六、如何使用
这不知你自己个人使用,还要整个团队使用,那么怎样使用呢,直接按照正常的逻辑直接在Podfile文件填写pod 'RemoteLibQiuyh', '~> 0.1.0',然后pod install安装??那当然不行了,所谓的私有库就是不能所有的能都能用,只有你给谁用谁就可以用。
首先在在Podfile文件填写source '私有索引库的地址',官方的CocoaPods地址就是source 'https://github.com/CocoaPods/Specs.git',这时候你要填写你对应的地址,可以用个pod repo 查看。如果要用到其他CocoaPods的第三方库就要把官方的CocoaPods地址也添加上。如图所示:
填写完之后就通过pod install安装。
注意:如果是队友的话,直接这样安装时会报错的,说没有什么权限的,那是没有在自己的git账号设置中安装ssh公钥,其安装方法跟步骤一一样的,生成添加到账号中的ssh公钥,然后在pod install安装就OK了。
七、版本更新
版本更新跟之前的步骤差不多,这就简单说一下步骤:
1.修改.podspec文件中的版本号;
s.version = "0.1.1" //修改0.1.1版本,不能是之前的版本,要不提交不成功
2.上传到远程仓库;
$ git add . ;
$ git commit -m “XX” ;
$ git push。
3.打tag并上传;
$ git tag '0.1.1' ;
$ git push --tags;
4.验证pod并提交到pod。
$ pod repo //查询repo
$ pod spec lint --allow-warnings //远程本地pod验证
$ pod repo push remoteLib RemoteLibQiuyh.podspec //提交pod到自己的私有索引库,remoteLib是之前生成的本地 repo名
$ pod search RemoteLibQiuyh //查询库