pod安裝及使用說明手销,制作自己的代碼庫(kù),并發(fā)布到pod

一图张、安裝

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)

圖1

例.?AFNetWorking.podSpec文件

圖2

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ù)

圖3


圖4


圖5

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審核

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市豁陆,隨后出現(xiàn)的幾起案子柑爸,更是在濱河造成了極大的恐慌,老刑警劉巖盒音,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件表鳍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡祥诽,警方通過查閱死者的電腦和手機(jī)譬圣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雄坪,“玉大人厘熟,你說我怎么就攤上這事∥” “怎么了盯漂?”我有些...
    開封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)笨农。 經(jīng)常有香客問我就缆,道長(zhǎng),這世上最難降的妖魔是什么谒亦? 我笑而不...
    開封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任竭宰,我火速辦了婚禮空郊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘切揭。我一直安慰自己狞甚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開白布廓旬。 她就那樣靜靜地躺著哼审,像睡著了一般。 火紅的嫁衣襯著肌膚如雪孕豹。 梳的紋絲不亂的頭發(fā)上涩盾,一...
    開封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音励背,去河邊找鬼春霍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛叶眉,可吹牛的內(nèi)容都是我干的址儒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼衅疙,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼莲趣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起饱溢,我...
    開封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤喧伞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后理朋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绿聘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年嗽上,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熄攘。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兽愤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挪圾,到底是詐尸還是另有隱情浅萧,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布哲思,位于F島的核電站洼畅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏棚赔。R本人自食惡果不足惜帝簇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一徘郭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丧肴,春花似錦残揉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至纸巷,卻和暖如春镇草,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背何暇。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工陶夜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人裆站。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓条辟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親宏胯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子羽嫡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容