[toc]
CocoaPods 是一个很好的三方开源库管理工具,在配置和更新上为我们节省了大量的时间与降低了工作的繁琐度。CocoaPods不仅可以对公有的Git仓库进行分享开源(AFNetworking等),还可以对我们自己的私有Git仓库进行管理。这里我们就利用CocoaPods来对我们私有的Git仓库进行索引。
一 、基本概念
-
Podspec : 该文件为你的代码仓库索引描述文件
CocoaPods :通过该文件对你真正存储代码工程的 Git 仓库进行索引与下载
Project :你上传到远程Git仓库的代码工程,将来用于开源共享或则私有
-
索引流程
索引流程
二 、原理
CocoaPod 通过第一个 Git 仓库的里 .podspec 描述文件找到真正存储你代码的第二个 Git 仓库,然后根据 .podspec 里的相关字段对特定目录下的代码,三方依赖库,资源文件等进行下载。
换一种说法来理解,第一个 Git 仓库里的 .podspec 描述文件相当于我们的指针, 其指向的另一个 Git 仓库(内存)才是你自己真正所共享的代码。
三 、制作流程
-
创建两个git仓库,一个用于存储 .podspec 后缀文件的私有 Git 仓库(公开的public),一个用于存储的共享代码的私有 Git 仓库(私有的private)。
-
本地创建后续要被共享的代码项目
-
打开终端工具,cd到你要创建的目录下
-
然后输入
创建项目模板.jpgpod lib create XXX
命令创建一个待上传的项目模板 -
然后系统会要求你配置相关的设置,可以根据自己需求进行配置。
配置相关参数.jpg
-
-
然后打开项目目录,显示如下:
需替换文件目录.jpg后续添加的文件需要放到Classes文件夹下面,示例文件ReplaceMe.m可以删除替换为自己的文件。
-
接下来我们需要配置一下podspec ,打开Example文件夹下面的.xcworkspace文件,显示如下:
配置podspec文件.jpg
配置 **.podspec** 后缀文件
配置podspec文件注意事项.jpg
```
s.name : 项目名
s.version : 版本号(需跟代码仓库后面打 Tag 的值相等)
s.homepage : 项目主页(请注意,这里的地址跟git仓库地址有一定差别)---------注意修改
s.license : 开源协议
s.source : Git 仓库地址
s.ios.deployment_target : 项目最低支持版本
s.source_files : 具体去那个目录下下载特定共享代码 ---------注意修改
s.frameworks : 项目所依赖的系统库
s.dependency : 项目所依赖的第三方库
```
-
配置完成之后,验证一下 .podspec 文件格式的正确性
在同一目录下面,使用终端命令行工具输入:
pod lib lint
出现警告使用pod lib lint --allow-warnings
出现 passed validation 说明验证成功。
验证podspec文件成功.jpg
-
将本地代码工程与远程私有仓库关联
git remote add origin 远程仓库地址
-
将本地仓库内容同步到远程仓库
git add . git commit -m 'Something description' git push origin master
-
同步到远程之后,我们需要打一个
.podsepc
文件中s.version
版本 一致的 tag 分支(创建本地tag分支,提交远程tag分支)
打tag标记.jpggit tag -a 0.1.0 -m '0.1.0版本' git push --tags
当你的tag 版本和podspec 文件里面的版本不一致的时候可以删除tag 分支重新打一个新的tag分支
(删除本地tag分支,然后删除对应远程tag分支,执行上面的两个命令)
```
git tag -d 0.1.0
git push origin :refs/tags/0.1.0
```
删除远端tag标记.jpg
然后进行本地和远程验证一下文件有效性:输入命令 `pod spec lint `
验证一下有效性.jpg
验证通过!!!
- 至此Podfile中可以用
pod 'LFPodDemo', :git => 'http://git.longhu.net/lijunjie/LFPodDemo.git'
方式正常使用pod install
,但是本地不能使用pod search XXX
命令搜索到
-
要想使用
pod search XXX
需要我们项目组每个成员自己本地配置一下。 拉取项目代码到本地然后关联到远程仓库。上传.podspec到第一个远程私有仓库-
首先进入 ~/.cocoapods/repos 目录下
cd ~/.cocoapods/repos
-
然后创建一个私有仓库目录
创建私有仓库目录.jpgpod repo add LFPodPublicSpec spec远端的git仓库地址
-
-
然后向私有的 LFPodPublicSpec 远程仓库中提交 .podspec 文件
向远端私有spec文件仓库提交podspec文件.jpgpod repo push LFPodPublicSpec LFPodDemo.podspec
提交成功,然后看一下.cocoapods目录下面的变化:
本地cocoapods变化情况.jpg
0.1.0版本出现了。然后我们使用 ` pod search LFPodDemo ` 命令搜索一下。
能够search到了.jpg
成功了!!!!!!!
-
如何使用私有库
-
使用
pod 'LFPodDemo', :git => 'http://git.longhu.net/lijunjie/LFPodDemo.git'
方式该方式不支持项目私有库引用dependency
使用方式一.jpg
-
-
使用spec -- source 方式
该方式支持项目私有库引用dependency,但是需要创建许多spec的git仓库用来搜索。
-
把不同的specs文件集中到一个git代码仓库的整合,类似于CocoaPods/Specs.git
将不同的项目代码下载到本地,然后在本地项目代码路径下面执行下面代码,在向私有的 LFPodPublicSpec 远程仓库中提交 .podspec 文件
pod repo push LFPodPublicSpec LFXXX.podspec
整合到一个PublickSpec文件夹下面了。nice!!!!
- 使用
pod search LFPodDemo
搜索一下
成功了!!!!!!!
网友评论