使用Cocoapods進(jìn)行組件化開發(fā)遇到的坑

這里先給出簡單使用私有庫的教程鏈接:
CocoaPods三重奏(二) 之 組件化開發(fā)

Specs satisfying the XXX dependency were found, but they required a higher minimum deployment target

原因是“XXX”需要需要一個(gè)更高的最低部署目標(biāo)(就是podspec文件中依賴的庫的最低部署版本)
把工程部署版本改為 依賴庫的最低版本

include of non-modular header inside framework module

背景:
當(dāng)制作自己的pod時(shí),我的代碼依賴 MBProgressHUD第三方庫惋增,pod spec lint驗(yàn)證過程一直出這個(gè)錯(cuò)誤
解決辦法:
1.buldsetting 中設(shè)置 Allow Non-modular Includes In Framework Modules 為 YES
但是對我無用
2.將#import "**.h" 第三方庫寫在 .m文件中拄氯,而不是放在.h文件中即可
e.g.:
我的文件 UIView+Hint
將 #import "MBProgressHUD.h" 這行代碼放在 UIView+Hint.m文件中

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

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

私有pod的驗(yàn)證

使用pod spec lint去驗(yàn)證私有庫能否通過驗(yàn)證時(shí)應(yīng)該,應(yīng)該要添加--sources選項(xiàng),不然會(huì)出現(xiàn)找不到repo的錯(cuò)誤
pod spec lint --sources='私有倉庫repo地址,https://github.com/CocoaPods/Specs'
3.subspec
為了讓自己的Pod被導(dǎo)入時(shí)顯示出良好的文件層劃分,subspec是必須的菩鲜。
若subspec要依賴其它的subspec,則subspec的dependency后面接的不是目錄路徑惦积,而是specA/specB這種spec關(guān)系

私有庫引用私有庫的問題

在私有庫引用了私有庫的情況下接校,在驗(yàn)證和推送私有庫的情況下都要加上所有的資源地址,不然pod會(huì)默認(rèn)從官方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文件時(shí)
在podsepc中應(yīng)該這樣寫:

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

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

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

私有庫中添加資源(圖片狱窘、音視頻等)

方法共有三種:

第一種

spec.resources = ["Images/.png", "Sounds/"]
但是這些資源會(huì)在打包的時(shí)候直接拷貝的app的Bundle中杜顺,這樣說不定會(huì)和其它資源產(chǎn)生命名沖突

第二種

spec.resource = "Resources/MYLibrary.bundle"
把資源都放在bundle中,然后打包時(shí)候這個(gè)bundle會(huì)直接拷貝進(jìn)app的mainBundle中蘸炸。使用的時(shí)候在mainBundle中查找這個(gè)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];

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

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

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

只需要依賴想依賴的subspec,不用管主spec(因?yàn)橐蕾噑ubspec必然要依賴主spec)

私有庫已經(jīng)通過驗(yàn)證并傳到私有repo也能通過pod search淹禾,但是就是pod install失敗馁菜。

這時(shí)候只要執(zhí)行pod update 然后去喝杯水就好了。铃岔。汪疮。(前提是你把官方源換成國內(nèi)的,不然從github上更新官方repo的速度你懂的德撬。 更換官方源)

參考

what's the different between 'pod spec lint' and 'pod lib lint'
給Pod添加資源文件
Reject installation if a static library is used as a transitive dependency while using frameworks

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铲咨,一起剝皮案震驚了整個(gè)濱河市躲胳,隨后出現(xiàn)的幾起案子蜓洪,更是在濱河造成了極大的恐慌,老刑警劉巖坯苹,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隆檀,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)恐仑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門泉坐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人裳仆,你說我怎么就攤上這事腕让。” “怎么了歧斟?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵纯丸,是天一觀的道長。 經(jīng)常有香客問我静袖,道長觉鼻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任队橙,我火速辦了婚禮坠陈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捐康。我一直安慰自己仇矾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布解总。 她就那樣靜靜地躺著若未,像睡著了一般。 火紅的嫁衣襯著肌膚如雪倾鲫。 梳的紋絲不亂的頭發(fā)上粗合,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機(jī)與錄音乌昔,去河邊找鬼隙疚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛磕道,可吹牛的內(nèi)容都是我干的供屉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼溺蕉,長吁一口氣:“原來是場噩夢啊……” “哼伶丐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起疯特,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤哗魂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后漓雅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體录别,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朽色,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了组题。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葫男。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖崔列,靈堂內(nèi)的尸體忽然破棺而出梢褐,到底是詐尸還是另有隱情,我是刑警寧澤赵讯,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布利职,位于F島的核電站,受9級特大地震影響瘦癌,放射性物質(zhì)發(fā)生泄漏猪贪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一讯私、第九天 我趴在偏房一處隱蔽的房頂上張望热押。 院中可真熱鬧,春花似錦斤寇、人聲如沸桶癣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牙寞。三九已至,卻和暖如春莫秆,著一層夾襖步出監(jiān)牢的瞬間间雀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工镊屎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惹挟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓缝驳,卻偏偏與公主長得像连锯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子用狱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

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