CocoaPods 是一個(gè)ruby工具. Mac下優(yōu)秀的第三方包管理工具,幫助管理和集成,自動(dòng)更新網(wǎng)絡(luò)上的第三方類庫(kù).方便了配置.大概原理是將所有依賴庫(kù)都放到另一個(gè)名為pods項(xiàng)目中.然后讓主項(xiàng)目依賴pods項(xiàng)目.
CocoaPods本地的存儲(chǔ)路徑
本地一個(gè)名為 .cocoapods的文件 下載到本地的第三方庫(kù)的文件路徑
- repos 就是pod搜索的目錄(基于本地), master的來(lái)源:(https://github.com/CocoaPods/Specs)
- specs,現(xiàn)在pod能找到第三方庫(kù)的目錄.然后就可以根據(jù)里面所寫(xiě)的內(nèi)容完成下載.
個(gè)人或公司在開(kāi)發(fā)過(guò)程中,會(huì)積累很多可以復(fù)用的代碼包,有些我們不想開(kāi)源,又想像開(kāi)源庫(kù)一樣在CocoaPods中管理它們,那么通過(guò)私有倉(cāng)庫(kù)來(lái)管理就很必要。
CocoaPods默認(rèn)只能管理基于git管理的代碼,如果要使用svn或者mercurial管理代碼,則需要安裝一些插件(cocoapods-repo-svn).我們通過(guò)git上的插件把私有代碼通過(guò)svn下載到本地的私有倉(cāng)庫(kù).這樣委托pod來(lái)管理.
1.在git上的設(shè)置私有代碼庫(kù)
以下方法都是基于git來(lái)操作。
1.創(chuàng)建代碼倉(cāng)庫(kù)
將自己寫(xiě)的代碼推送到git服務(wù)器。如果代碼可以開(kāi)源的話,可以用github來(lái)托管。參考我們所開(kāi)源的代碼
2.給穩(wěn)定的代碼打上版本tag,一般以版本號(hào)作為tag名
$ git tag -a
將tag推送到git服務(wù)器
$ git push --tags
這里一般是類似1.0.2的版本號(hào)。版本號(hào)的規(guī)范參考這里
3.創(chuàng)建spec文件
在shell中運(yùn)行:
$ pod spec create
會(huì)在當(dāng)前目錄創(chuàng)建.podspec文件,創(chuàng)建的文件是個(gè)完整的配置模板,根據(jù)字面意思以及注釋,大體上都能弄明白。不清楚的地方可以到https://guides.cocoapods.org/making/specs-and-specs-repo.html看看,github上也有很多開(kāi)源代碼可以參考。
4.驗(yàn)證spec文件有效性
spec文件修改完成后,運(yùn)行
pod spec lint .podspec
根據(jù)輸出提示修改你的spec文件或者代碼,直到能pass.
5.創(chuàng)建spec repository(spec 倉(cāng)庫(kù))
除了上面創(chuàng)建的代碼倉(cāng)庫(kù),還需要?jiǎng)?chuàng)建一個(gè)spec倉(cāng)庫(kù),存放spec,目錄結(jié)構(gòu)應(yīng)該遵照以下的規(guī)范:
[plain] view plaincopy
├── Specs
└── [SPEC_NAME]
└── [VERSION]
└── [SPEC_NAME].podspec
例:
├─Specs
├──QueryKit/
├── 0.8.0
│ └── QueryKit.podspec
├── 0.8.1
│ └── QueryKit.podspec
├── 0.8.2
│ └── QueryKit.podspec
└── 0.8.3
└── QueryKit.podspec
URITemplate
├── 1.0.0
│ └── URITemplate.podspec
└── 1.0.1
└── URITemplate.podspec
這里的版本號(hào)要和代碼倉(cāng)庫(kù)里的tag一一對(duì)應(yīng)。
將其推送到git服務(wù)器,參考我們開(kāi)源的代碼
6.添加私有repo到CocoaPods中
$ pod repo add REPO_NAME SOURCE_URL
7.驗(yàn)證私有repo安裝無(wú)誤:
$ cd ~/.cocoapods/repos/REPO_NAME
$ pod repo lint .
后面如果還要往REPO_NAME里添加新包,只需運(yùn)行下面命令:
$ pod repo push REPO_NAME SPEC_NAME.podspec
如要?jiǎng)h除私有repo:
$ pod repo remove [name]
8.添加包到工程的Podfile中如下:
source 'https://github.com/agdsdl/Specs.git'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, "7.0"
target "XXX" do
pod 'DLSlideView','~>0.8.1'
end
- That's it!
接下來(lái)測(cè)試運(yùn)行:
到工程目錄下運(yùn)行
$ pod update
依賴包更新完畢后,打開(kāi)workspace文件,點(diǎn)擊Go!
一些坑:
很容易把spec repository和代碼repository弄混,我一開(kāi)始就在這里掛起了好久。代碼repository是代碼倉(cāng)庫(kù),我們把包代碼上傳到這個(gè)倉(cāng)庫(kù)。
spec repository是配置倉(cāng)庫(kù),所有的配置按照包名、版本號(hào)分門(mén)別類的存放在這個(gè)倉(cāng)庫(kù)。這個(gè)倉(cāng)庫(kù)只用來(lái)存放spec文件,不存放代碼。
spec repository可以放在本地,不用git服務(wù)器,但是貌似必須用git init初始化這個(gè)目錄。
詳細(xì)的一些東西可以看這里
1到8步都只需在本機(jī)執(zhí)行一次,團(tuán)隊(duì)里的其他人只需更新Podfile就可以直接使用私有倉(cāng)庫(kù)了。
2.使用cocoapods-repo-svn管理svn上的代碼
1.安裝**cocoapods-repo-svn **
gem install cocoapods-repo-svn
2.安裝 cocoapods-repo-svn 后,添加自己的Spec源,并驗(yàn)證是否成功(檢查 ~/.cocoapods/repos 里面有沒(méi)有XXXSpecs)
cocoapods-repo-svn Commands
Add
$ pod repo-svn add my-svn-repo http://svn-repo-url
Update
$ pod repo-svn update my-svn-repo
Remove
$ pod repo-svn remove my-svn-repo
把svn上的內(nèi)容下載到本地,通過(guò)pod來(lái)管理
有時(shí)候沒(méi)權(quán)限的時(shí)候, 可以先用svn下載到本地再執(zhí)行添加命令
svn checkout http://your SVN Address
項(xiàng)目管理:CocoaPods建立私有倉(cāng)庫(kù)
http://www.cocoachina.com/ios/20150508/11785.html
CocoaPods 英文說(shuō)明
https://guides.cocoapods.org
git安裝和使用就看這篇文章
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
cocoapods的使用安裝就看這篇文章
http://code4app.com/article/cocoapods-install-usage