[toc]
CocoaPods 是一個很好的三方開源庫管理工具,在配置和更新上為我們節(jié)省了大量的時間與降低了工作的繁瑣度。CocoaPods不僅可以對公有的Git倉庫進行分享開源(AFNetworking等),還可以對我們自己的私有Git倉庫進行管理。這里我們就利用CocoaPods來對我們私有的Git倉庫進行索引。
一 、基本概念
-
Podspec : 該文件為你的代碼倉庫索引描述文件
CocoaPods :通過該文件對你真正存儲代碼工程的 Git 倉庫進行索引與下載
Project :你上傳到遠程Git倉庫的代碼工程,將來用于開源共享或則私有
-
索引流程
索引流程
二 、原理
CocoaPod 通過第一個 Git 倉庫的里 .podspec 描述文件找到真正存儲你代碼的第二個 Git 倉庫,然后根據(jù) .podspec 里的相關(guān)字段對特定目錄下的代碼,三方依賴庫,資源文件等進行下載。
換一種說法來理解,第一個 Git 倉庫里的 .podspec 描述文件相當(dāng)于我們的指針, 其指向的另一個 Git 倉庫(內(nèi)存)才是你自己真正所共享的代碼。
三 、制作流程
創(chuàng)建兩個git倉庫,一個用于存儲 .podspec 后綴文件的私有 Git 倉庫(公開的public),一個用于存儲的共享代碼的私有 Git 倉庫(私有的private)。
-
本地創(chuàng)建后續(xù)要被共享的代碼項目
打開終端工具,cd到你要創(chuàng)建的目錄下
-
然后輸入
pod lib create XXX
命令創(chuàng)建一個待上傳的項目模板創(chuàng)建項目模板.jpg -
然后系統(tǒng)會要求你配置相關(guān)的設(shè)置,可以根據(jù)自己需求進行配置。
配置相關(guān)參數(shù).jpg
-
然后打開項目目錄,顯示如下:
后續(xù)添加的文件需要放到Classes文件夾下面,示例文件ReplaceMe.m可以刪除替換為自己的文件。
需替換文件目錄.jpg
-
接下來我們需要配置一下podspec ,打開Example文件夾下面的.xcworkspace文件,顯示如下:
配置podspec文件.jpg
配置 **.podspec** 后綴文件
```
s.name : 項目名
s.version : 版本號(需跟代碼倉庫后面打 Tag 的值相等)
s.homepage : 項目主頁(請注意,這里的地址跟git倉庫地址有一定差別)---------注意修改
s.license : 開源協(xié)議
s.source : Git 倉庫地址
s.ios.deployment_target : 項目最低支持版本
s.source_files : 具體去那個目錄下下載特定共享代碼 ---------注意修改
s.frameworks : 項目所依賴的系統(tǒng)庫
s.dependency : 項目所依賴的第三方庫
```
-
配置完成之后,驗證一下 .podspec 文件格式的正確性
在同一目錄下面,使用終端命令行工具輸入:
pod lib lint
出現(xiàn)警告使用pod lib lint --allow-warnings
出現(xiàn) passed validation 說明驗證成功。
-
將本地代碼工程與遠程私有倉庫關(guān)聯(lián)
git remote add origin 遠程倉庫地址
-
將本地倉庫內(nèi)容同步到遠程倉庫
git add . git commit -m 'Something description' git push origin master
-
同步到遠程之后,我們需要打一個
.podsepc
文件中s.version
版本 一致的 tag 分支(創(chuàng)建本地tag分支,提交遠程tag分支)
git tag -a 0.1.0 -m '0.1.0版本' git push --tags
打tag標(biāo)記.jpg
當(dāng)你的tag 版本和podspec 文件里面的版本不一致的時候可以刪除tag 分支重新打一個新的tag分支
(刪除本地tag分支,然后刪除對應(yīng)遠程tag分支,執(zhí)行上面的兩個命令)
```
git tag -d 0.1.0
git push origin :refs/tags/0.1.0
```
然后進行本地和遠程驗證一下文件有效性:輸入命令 `pod spec lint `
驗證通過!!!
- 至此Podfile中可以用
pod 'LFPodDemo', :git => 'http://git.longhu.net/lijunjie/LFPodDemo.git'
方式正常使用pod install
,但是本地不能使用pod search XXX
命令搜索到
-
要想使用
pod search XXX
需要我們項目組每個成員自己本地配置一下。 拉取項目代碼到本地然后關(guān)聯(lián)到遠程倉庫。上傳.podspec到第一個遠程私有倉庫-
首先進入 ~/.cocoapods/repos 目錄下
cd ~/.cocoapods/repos
-
然后創(chuàng)建一個私有倉庫目錄
pod repo add LFPodPublicSpec spec遠端的git倉庫地址
創(chuàng)建私有倉庫目錄.jpg
-
-
然后向私有的 LFPodPublicSpec 遠程倉庫中提交 .podspec 文件
pod repo push LFPodPublicSpec LFPodDemo.podspec
向遠端私有spec文件倉庫提交podspec文件.jpg
提交成功,然后看一下.cocoapods目錄下面的變化:
0.1.0版本出現(xiàn)了。然后我們使用 ` pod search LFPodDemo ` 命令搜索一下。
成功了!!!!!!!
-
如何使用私有庫
-
使用
pod 'LFPodDemo', :git => 'http://git.longhu.net/lijunjie/LFPodDemo.git'
方式該方式不支持項目私有庫引用dependency
使用方式一.jpg
-
-
使用spec -- source 方式
該方式支持項目私有庫引用dependency,但是需要創(chuàng)建許多spec的git倉庫用來搜索。
-
把不同的specs文件集中到一個git代碼倉庫的整合,類似于CocoaPods/Specs.git
將不同的項目代碼下載到本地,然后在本地項目代碼路徑下面執(zhí)行下面代碼,在向私有的 LFPodPublicSpec 遠程倉庫中提交 .podspec 文件
pod repo push LFPodPublicSpec LFXXX.podspec
整合到一個PublickSpec文件夾下面了。nice!!!!
- 使用
pod search LFPodDemo
搜索一下
成功了!!!!!!!
pod lib lint --verbose --sources='xxx,xxxxx' --allow-warnings --use-libraries --skip-import-validation
--sources 所需要的source源
--verbose log打印
--allow-warnings 允許存在警告
--use-libraries 使用libraries,解決一些報錯
--skip-import-validation 解決pods-App的一些報錯