Cocoapods使用私有庫中遇到的坑

以前使用Cocoapods時候就是簡單的創(chuàng)建Podfile榕堰,然后執(zhí)行pod install就完事。最近臨近過年了空閑時間比較多就琢磨把項目中復(fù)用比較多的代碼抽取出來然后用Cocoapods管理,算是邁開項目組件化的第一步。途中遇到若干坑,這里就總結(jié)下方便自己日后查看犹芹。

這里先給出簡單使用私有庫的教程鏈接:
Cocoapods 應(yīng)用第二部分-私有庫相關(guān)

1.pod lib lint 和 pod spec lint 命令的區(qū)別

pod lib lint是只從本地驗證你的pod能否通過驗證
pod spec lint是從本地和遠程驗證你的pod能否通過驗證
我一般都是直接使用pod spec lint去驗證pod有沒有問題

2.私有pod的驗證

使用pod spec lint去驗證私有庫能否通過驗證時應(yīng)該,應(yīng)該要添加--sources選項鞠绰,不然會出現(xiàn)找不到repo的錯誤

pod spec lint --sources='私有倉庫repo地址,https://github.com/CocoaPods/Specs'

3.subspec

為了讓自己的Pod被導入時顯示出良好的文件層劃分腰埂,subspec是必須的。
若subspec要依賴其它的subspec蜈膨,則subspec的dependency后面接的不是目錄路徑屿笼,而是specA/specB這種spec關(guān)系

4.私有庫引用私有庫的問題

在私有庫引用了私有庫的情況下牺荠,在驗證和推送私有庫的情況下都要加上所有的資源地址,不然pod會默認從官方repo查詢驴一。

pod spec lint --sources='私有倉庫repo地址,https://github.com/CocoaPods/Specs'
pod repo push 本地repo名 podspec名 --sources='私有倉庫repo地址,https://github.com/CocoaPods/Specs'

5.引用自己或第三方的framework或.a文件時
在podsepc中應(yīng)該這樣寫:

s.ios.vendored_frameworks = "xxx/**/*.framework"
s.ios.vendored_libraries = "xxx/**/*.a”

5.便捷地開發(fā)本地私有庫

Cocoapods就提供了一個開發(fā)模式,其實操作起來也是非常簡單的事情休雌,就是將所謂的引用路徑修改成本地路徑即可。就是講Podfile中的pod '庫名', :path => '本地路徑'即可蛔趴。這樣在通常的修改代碼中是不需要執(zhí)行pod update的挑辆,但是對于如果修改了目錄結(jié)構(gòu)(添加、刪除或者移動文件文件)或者是修改了Podspec文件的配置的話孝情,最好是運行一下pod update的命令。普通修改代碼的情況下就不需要運行pod update命令和打tag了洒嗤。
pod 'iOS-Test', :path => '../iOS-Test’

6.私有庫中添加資源(圖片箫荡、音視頻等)

方法共有三種:

  • 第一種
spec.resources = ["Images/*.png", "Sounds/*"]

但是這些資源會在打包的時候直接拷貝的app的Bundle中,這樣說不定會和其它資源產(chǎn)生命名沖突

  • 第二種
spec.resource = "Resources/MYLibrary.bundle"

把資源都放在bundle中渔隶,然后打包時候這個bundle會直接拷貝進app的mainBundle中羔挡。使用的時候在mainBundle中查找這個bundle然后再搜索具體資源

    NSURL *bundleURL = [[NSBundle mainBundle] URLForResource:@"JZShare" withExtension:@"bundle"];
    NSBundle *bundle = [NSBundle bundleWithURL:bundleURL];
    UIImage *img = [UIImage imageNamed:icon inBundle:bundle compatibleWithTraitCollection:nil];
  • 第三種
spec.resource_bundles = {
  'MyLibrary' => ['Resources/*.png'],
  'OtherResources' => ['OtherResources/*.png']
}

這種方法利用 framework 的命名空間,有效防止了資源沖突间唉。
使用方法是先拿到最外面的 bundle绞灼,然后再去找下面指定名字 的 bundle 對象,再搜索具體資源

NSBundle *bundle = [NSBundle bundleForClass:[MYSomeClass class]];
NSURL *bundleURL = [bundle URLForResource:@"MyLibrary" withExtension:@"bundle"];
NSBundle *resourceBundle = [NSBundle bundleWithURL: bundleURL];
UIImage *img = [UIImage imageNamed:icon inBundle:bundle compatibleWithTraitCollection:nil];

7.如果私有庫添加了靜態(tài)庫或者dependency用了靜態(tài)庫

那么執(zhí)行pod lib lint還有pod spec lint時候需要加上—user-libraries選項
否則會出現(xiàn)'The 'Pods' target has transitive dependencies錯誤

8.如果私有庫只引用其他庫的subspec

只需要依賴想依賴的subspec呈野,不用管主spec(因為依賴subspec必然要依賴主spec)

9.私有庫已經(jīng)通過驗證并傳到私有repo也能通過pod search低矮,但是就是pod install失敗。

這時候只要執(zhí)行pod update 然后去喝杯水就好了被冒。军掂。。(前提是你把官方源換成國內(nèi)的昨悼,不然從github上更新官方repo的速度你懂的蝗锥。 更換官方源

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市率触,隨后出現(xiàn)的幾起案子终议,更是在濱河造成了極大的恐慌,老刑警劉巖葱蝗,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件穴张,死亡現(xiàn)場離奇詭異,居然都是意外死亡垒玲,警方通過查閱死者的電腦和手機陆馁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來合愈,“玉大人叮贩,你說我怎么就攤上這事击狮。” “怎么了益老?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵彪蓬,是天一觀的道長。 經(jīng)常有香客問我捺萌,道長档冬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任桃纯,我火速辦了婚禮酷誓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘态坦。我一直安慰自己盐数,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布伞梯。 她就那樣靜靜地躺著玫氢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谜诫。 梳的紋絲不亂的頭發(fā)上漾峡,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音喻旷,去河邊找鬼生逸。 笑死,一個胖子當著我的面吹牛掰邢,可吹牛的內(nèi)容都是我干的牺陶。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼辣之,長吁一口氣:“原來是場噩夢啊……” “哼掰伸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起怀估,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤狮鸭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后多搀,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歧蕉,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年康铭,在試婚紗的時候發(fā)現(xiàn)自己被綠了惯退。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡从藤,死狀恐怖催跪,靈堂內(nèi)的尸體忽然破棺而出锁蠕,到底是詐尸還是另有隱情,我是刑警寧澤懊蒸,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布荣倾,位于F島的核電站,受9級特大地震影響骑丸,放射性物質(zhì)發(fā)生泄漏舌仍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一通危、第九天 我趴在偏房一處隱蔽的房頂上張望铸豁。 院中可真熱鬧,春花似錦黄鳍、人聲如沸推姻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至增炭,卻和暖如春忍燥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背隙姿。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工梅垄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人输玷。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓队丝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親欲鹏。 傳聞我的和親對象是個殘疾皇子机久,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

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