一图张、安裝
1.網(wǎng)上教程有太多锋拖,先來一個(gè)CocoaPods的安裝與使用(一)[http://www.reibang.com/p/13cb4937108a]
注意:安裝之前先確認(rèn)電腦上之前是否安裝過pod,執(zhí)行命令pod —version
安裝簡(jiǎn)要步驟:
1.查看鏡像
$?gem?sources?-l
2.若是ruby的https://rubygems.org/則需要換成淘寶的祸轮,如本來就已經(jīng)是淘寶的(https://ruby.taobao.org/)姑隅,就不用換了
更改的方式為:
a.$ gem source -rhttps://rubygems.org/
b.$ gem source -ahttps://ruby.taobao.org/
3.查看是否替換成功:
$?gem?sources?-l
4、安裝cocopods
$sudo gem install cocoapods(步驟有點(diǎn)慢倔撞,不要急)
2.?如果安裝過讲仰,實(shí)用當(dāng)前pod 執(zhí)行install 或者update老是失敗,但其他人install和update能成功痪蝇,可能是本地pod做過不干凈的操作鄙陡,
被損壞,可以卸載本地pod躏啰,重新安裝趁矾,卸載重裝的教程也很清楚:cocopods卸載、安裝给僵、重裝等問題解決[http://blog.csdn.net/qtds8810/article/details/50510910](重裝解決90%問題)
卸載關(guān)鍵步驟:
二.簡(jiǎn)單的pod file文件
先是最簡(jiǎn)單的例子毫捣,針對(duì)測(cè)試的簡(jiǎn)單工程
target : test do?
pod'OCMock','~> 2.0.1'
end
再到復(fù)雜一點(diǎn)的详拙,
source'https://github.com/CocoaPods/Specs.git'//可以不要? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
platform:ios,‘6.0’//可以不要inhibit_all_warnings!//可以不要
xcodeproj'MyProject'//路徑對(duì)的話,可以不要
pod'ObjectiveSugar','~> 0.5'
target : test ?do//target必須要
pod'OCMock','~> 2.0.1'
end
pod install 或者 pod update 失敗了跟第三方庫(kù)有沒有關(guān)系蔓同?
測(cè)試:
1.向pod倉(cāng)庫(kù)中提交了一個(gè)自己的podspec文件饶辙,podspec文件中指向gitHub上一些項(xiàng)目文件,故意在文件中寫了一些編譯不過的語(yǔ)法斑粱,首先實(shí)用pod spec lint 命令去檢驗(yàn)podspec文件的有效性時(shí)弃揽,在debug信息中發(fā)現(xiàn)輸出了Xcode的編譯信息,提示了語(yǔ)法的warnning则北,但還是通過了矿微。
2.將這個(gè)自己的第三方庫(kù)引入到測(cè)試工程的podfile中,再執(zhí)行pod update 操作時(shí)任然成功了尚揣。
結(jié)論:pod install 和pod update 失敗與第三方庫(kù)的文件無關(guān)
三涌矢、podSpec文件的結(jié)構(gòu)
1.先從簡(jiǎn)單的例子來看清文件的結(jié)構(gòu)
例.?AFNetWorking.podSpec文件
s.name:名稱,pod search 搜索的關(guān)鍵詞
s.version:版本
s.summary:簡(jiǎn)介快骗,pod search 搜索的關(guān)鍵詞
s.homepage:主頁(yè)地址蒿辙,例如Github地址
s.license:許可證
s.author:作者
s.social_media_url:社交網(wǎng)址
s.platform:平臺(tái)
s.source:Git倉(cāng)庫(kù)地址,例如在Github地址后邊加上 .git 就是Git倉(cāng)庫(kù)地址滨巴,常見寫法如下
s.source_files:需要包含的源文件,常見的寫法如下
s.resources:需要包含的圖片等資源文件
s.dependency:依賴庫(kù)俺叭,不能依賴未發(fā)布的庫(kù)
s.dependency:依賴庫(kù)恭取,如有多個(gè)可以這樣寫
s.requires_arc:是否要求ARC
s.source_files 常見寫法
[
? ? ? "Directory1/*”,
? ? ? "Directory1/Directory2/*.{h,m}”,
? ? ? "Directory1/**/*.h”
]
“*” 表示匹配所有文件
“*.{h,m}” 表示匹配所有以.h和.m結(jié)尾的文件
“**” 表示匹配所有子目錄
s.source 常見寫法
s.source = { :git=>"https://github.com/xiaofei86/LPPushService.git", :commit=>"68defea"}
s.source = { :git=>"https://github.com/xiaofei86/LPPushService.git", :tag=>1.0.0}
s.source = { :git=>"https://github.com/xiaofei86/LPPushService.git", :tag=>s.version }
commit => "68defea" 表示將這個(gè)Pod版本與Git倉(cāng)庫(kù)中某個(gè)commit綁定
tag => 1.0.0 表示將這個(gè)Pod版本與Git倉(cāng)庫(kù)中某個(gè)版本的comit綁定
tag => s.version 表示將這個(gè)Pod版本與Git倉(cāng)庫(kù)中相同版本的commit綁定
四、pod使用過程中常見報(bào)錯(cuò)
檢測(cè)podSpec文件錯(cuò)誤
1.語(yǔ)法錯(cuò)誤
如果是因?yàn)檎Z(yǔ)法錯(cuò)誤熄守,驗(yàn)證失敗后會(huì)給出錯(cuò)誤的準(zhǔn)確定位
[!] Invalid `LPPushService.podspec`file: no . floating literal anymore;put0beforedot? s.version= “1.0.0”? ? ? ? ? ? ? ? ? ? ? ? ^LPPushService.podspec:5: syntaxerror, unexpected tFLOAT, expecting '('? s.version= “1.0.0”? ? ? ? ? ? ? ? ? ? ? ? ? ^
標(biāo)記“^”的地方即為有語(yǔ)法錯(cuò)誤的地方蜈垮。
2.依賴錯(cuò)誤
但是,有些非語(yǔ)法錯(cuò)誤是不會(huì)給出錯(cuò)誤原因的裕照。這個(gè)時(shí)候可以使用“--verbose”來查看詳細(xì)的驗(yàn)證過程來幫助定位錯(cuò)誤攒发。
pod spec lint LPPushService.podspec--verbose
如下錯(cuò)誤通過 --verbose 就可以找到原因。
-> LPPushService (1.0.0)? ? - ERROR | [iOS] Encountered an unknown error (The'Pods'target has transitivedependenciesthatincludestaticbinaries: (/private/var/folders/jz/b_m3k7ln47524cm__h3__mk00000gn/T/CocoaPods/Lint/Pods/BPushSDK/LibBPush/libBPush.a)) during validation.
這個(gè)錯(cuò)誤是因?yàn)橐蕾噹?kù)(s.dependency)包含了.a靜態(tài)庫(kù)造成的晋南。雖然這并不影響Pod的使用惠猿,但是驗(yàn)證是無法通過的「杭洌可以通過 --use-libraries 來讓驗(yàn)證通過偶妖。
podspeclintLPPushService.podspec--verbose--use-libraries
這種情況下使用 --use-libraries 雖然不會(huì)出現(xiàn)錯(cuò)誤(error),但是有時(shí)候會(huì)帶來一些警告(waring)政溃,警告同樣是無法通過驗(yàn)證的趾访。這時(shí)可以用 --allow-warnings 來允許警告。
podspeclintLPPushService.podspec--verbose--use-libraries--allow-warnings
安裝錯(cuò)誤
如果在其他項(xiàng)目 pod install 的過程中董虱,出現(xiàn)包含“undefined method `end_with?' for nil”字樣的報(bào)錯(cuò)扼鞋。進(jìn)入“~/.cocoapods/repos”目錄,刪除“master”,并將 master-1 改為 master 即可云头。
如果出現(xiàn)如下錯(cuò)誤捐友,而你的驗(yàn)證可以通過,那么一般更新下版本號(hào)就可以解決盘寡。
[!] Unabletofinda specificationfor'LPPushService'.
五楚殿、制作自己的pod庫(kù)
1.在github上創(chuàng)建自己的項(xiàng)目庫(kù)
2.自己的代碼庫(kù)創(chuàng)建成功后,克隆到本地竿痰,添加自己的文件到本地代碼倉(cāng)庫(kù)脆粥,然后向遠(yuǎn)程倉(cāng)庫(kù)push代碼
1.? git clonehttps://github.com/13554175559/TestPodSpec.git2.? cd TestPodSpec3.? git add a.file4.? git commit -am “add files”5.? git push6.? git tag 0.0.17.? git push origin 0.0.1
3.然后就可以創(chuàng)建庫(kù)所對(duì)應(yīng)的podSpec文件了
打開terminal在自己的庫(kù)的根目錄下執(zhí)行?
pod spec create TestPodSpec
然后就可以編輯產(chǎn)生的TestPodSpec.podspec 文件了,編輯時(shí)參考上面的-》三影涉、podSpec文件的結(jié)構(gòu)
4.驗(yàn)證pod spec文件的有效性
在terminal中進(jìn)入庫(kù)的根目錄变隔,執(zhí)行
?pod spec lint TestPodSpec.podspec?—allow-warnings
中間如果驗(yàn)證失敗的話,需要根據(jù)error信息提示來改正蟹倾。
5.驗(yàn)證通過了就可以準(zhǔn)備發(fā)布了
先注冊(cè)發(fā)布帳號(hào) ?匣缘,
pod trunk register[郵箱XXXXXX@163.com]“名字”
注冊(cè)完了去郵箱瞅一眼,激活一下
發(fā)布:
pod trunk push TestPodSpec.podspec --allow-warnings
會(huì)看到如下提示
??congratulations ……..
然后在本地 pod search 就可以找到之前提交的庫(kù)了鲜棠,如果要在別人的電腦上也能搜到的話肌厨,需要等pod審核