本篇中使用的远程仓库是<a href="https://coding.net">码市</a>
注意: 默认读者会使用Git管理代码, 以及上传至远程Git仓库
如果有错误的地方请留言, 我会修改
第一步, 添加远程私有索引仓库
-
注册登录后的界面
码市 -
点击添加项目
远程私有索引库 -
点击创建项目后跳转界面
创建仓库后直接跳转的界面 -
点击左侧 代码 选项卡, 进入私有的远程cocoaPods仓库界面
远程cocoaPods私有索引仓库界面 -
打开终端, 输入指定 pod repo
当前的远程索引仓库- 可以看到cocoaPods目前链接了一个远程索引仓库, URL是在github上的远程索引仓库, Path是通过pod setup下载到本地的索引仓库
-
可以输入指令 pod repo --help 查看当前pod repo 拥有的命令
命令 -
输入 pod repo add 仓库名 仓库SSH(HTTPS)地址 来添加一个远程索引仓库
添加一个远程索引仓库 -
仓库SSH(HTTPS)地址位置在码市上的下图位置
仓库SSH(HTTPS)地址位置 -
再次输入 pod repo 命令
成功添加LTPodspecs远程私有索引库- LTPodspecs就是我刚才添加的远程私有索引库
第二步, 配置一个私有的代码仓库
-
打开码市, 新添加项目, 这个项目是被CocoaPods管理的私有代码仓库, 用来存储需要被管理的代码, 和上面创建的索引库用处不同
-
我在桌面上创建了一个新的文件夹, 用来配置私有代码库
新建文件夹 -
使用终端cd到当前文件夹
cd -
输入指令创建一个git本地仓库 pod lib create 仓库名
git仓库- 本仓库用来测试和上传 私有代码
-
创建的git本地仓库
git本地仓库 -
打开测试工程, 找到<a>ReplaceMe.m</a>文件并删除
打开测试工程
删除文件 -
找到需要CocoaPods私有仓库管理的源码(我这里的是Category文件夹), 并拖拽代码文件到Classes文件夹中, 选择<a>Copy Items if needed</a>
选择Copy Items if needed
拖拽代码到Classes文件夹中 -
可以通过<a>Show In Finder</a>查看拖入文件夹的所在真实位置
Show In Finder
24.png -
因为测试工程创建完之后引用的LTCategorys文件中并没有刚拖入的Category文件夹中文件, 所以需要重新pod install一下
-
cd到测试工程文件夹, 并执行命令 pod install
cd到Example文件夹, 并执行pod install
-
-
此时拖入工程的Category中文件就可以正常使用了, 此时使用的是本地私有库
-
打开测试工程, 在下面的位置可以进行podspec文件的配置
podspec文件位置 -
简单解释
简单解释
配置完成- s.homepage需要设置刚创建的私有代码仓库的地址, 不是私有索引库的地址
- s.source 需要设置的是私有代码仓库的源地址(选择使用HTTPS地址)
-
将刚创建的本地仓库上传到这个项目中, 并打上tag, 这个tag必须和上面podspec文件中的版本一致(我上面的版本是0.1.0, 所以我打的tag就是0.1.0)
上传代码到远程私有仓库
打上的tag -
打开终端, cd到LTCategorys文件夹(使用pod lib screate 命令创建的本地代码仓库), 分别使用 pod lib lint 和 pod spec lint 命令进行podspec的本地校验和远程校验
cd
校验 -
以上步骤完成后, 需要将LTCategorys.podspec文件上传到本地的私有索引库, 接着会自动上传至远程私有库
- 终端使用pod repo文件查看现有索引库
-
cd 至 LTCategorys 文件夹下, 接着执行 pod repo push 索引库名 podspec文件名
查看现有索引库
上传到本地索引库, 自动上传至远程索引库
-
远程索引库中的索引文件
远程索引库中的索引文件 -
在桌面上创建一个测试工程
新建测试工程 -
cd到Test文件夹, 并使用终端调用pod init命令创建一个Podfile文件
Podfile文件 -
调用pod repo命令, 查看当前索引库的URL地址
查看URL地址 -
打开Test中的Podfile文件, 如下填写
介绍
填写完毕 -
cd 到Test文件夹下, 使用终端执行pod install 命令, 此时两个第三方代码就成功安装到项目中
使用CocoaPods安装第三方代码 -
打开Test工程, 可以看到安装的第三方库, 一个是AFNetworking(公共库) 和 LTCategorys(远程私有库)
Test工程
最后
- 创建的LTPodspecs私有库是用来存放CocoaPods索引文件(podspec类型)的
- 创建的LTCategorys私有库是用来存放远程私有代码的(同github分享开源代码)
- 使用LTPodspecs来存放LTCategorys的podspec文件, 就是远程私有库的核心
- 最后使用CocoaPods就可以安装私有库中的代码了, 私有库中代码只有自己和自己指定的人使用 (其他人使用, 必须添加你的CocoPods私有库, 并且要在你的码市账号中设置SSH的公钥才行)
- 以后的私有远程代码也可以使用这个LTPodspecs索引库来管理
下一篇: <a href="http://www.jianshu.com/p/c0b7cc68509b">iOS开发: CocoaPods远程私有仓库的维护升级</a>
网友评论
from /Library/Ruby/Gems/2.3.0/gems/xcodeproj-1.5.8/lib/xcodeproj/project/object/helpers/build_settings_array_settings_by_object_version.rb:8:in `<class:XCBuildConfiguration>'
from /Library/Ruby/Gems/2.3.0/gems/xcodeproj-1.5.8/lib/xcodeproj/project/object/helpers/build_settings_array_settings_by_object_version.rb:4:in `<module:Object>'
from /Library/Ruby/Gems/2.3.0/gems/xcodeproj-1.5.8/lib/xcodeproj/project/object/helpers/build_settings_array_settings_by_object_version.rb:3:in `<class:Project>'
from /Library/Ruby/Gems/2.3.0/gems/xcodeproj-1.5.8/lib/xcodeproj/project/object/helpers/build_settings_array_settings_by_object_version.rb:2:in `<module:Xcodeproj>'
from /Library/Ruby/Gems/2.3.0/gems/xcodeproj-1.5.8/lib/xcodeproj/project/object/helpers/build_settings_array_settings_by_object_version.rb:1:in `<top (required)>'
from /Library/Ruby/Site/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Site/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Gems/2.3.0/gems/xcodeproj-1.5.8/lib/xcodeproj/project/object/build_configuration.rb:194:in `<top (required)>'
from /Library/Ruby/Site/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Site/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Gems/2.3.0/gems/xcodeproj-1.5.8/lib/xcodeproj/project/object.rb:521:in `<top (required)>'
from /Library/Ruby/Site/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Site/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Gems/2.3.0/gems/xcodeproj-1.5.8/lib/xcodeproj/project.rb:5:in `<top (required)>'
from /Library/Ruby/Site/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
这个仓库可以用本地SVN么?