利用cocopods管理本地私有庫遇到的問題

一滨达、拉取團隊的項目后,運行提示無權(quán)限

The file couldn't be opened because you don't have permission to view it
點擊pod中的類,得到如下提示

WechatIMG4.png

可以嘗試以下幾個方案:
(1):清除緩存
xcode->preferences->Derived Data .然后刪除這個Derived Data文件夾
再clean一下,然后再運行

(2):從工程外導入文件時,有一個要注意的地方描睦,


WechatIMG5.png

導入的文件會變藍色


WechatIMG6.png

如果換一種方式導入


WechatIMG7.png

導入的文件為黃色


WechatIMG8.png

因為勾選folder references一欄,只是單純有引用导而,但文件路徑不明確忱叭,沒有實際加入到工程中來,所以可能造成問題嗡载。

(3):我的問題的解決方案
打開設(shè)置窑多,選擇安全性與隱私,并按照下圖操作:


WechatIMG9.png
二洼滚、項目中圖片加載不出來埂息,從接口中發(fā)現(xiàn)圖片url為http

xCode 配置允許HTTP請求

info.plist里面增加:
App Transport Security Settings 屬性
再在此屬性內(nèi)增加Allow Arbitrary Loads,并設(shè)置值為YES

三遥巴、'libxml/tree.h' file not found

pod本地私有庫千康,需要依賴系統(tǒng)的library----> libxml2
推薦使用方法1
(1)在本地庫的podspec中添加

spec.libraries =  "xml2"
spec.pod_target_xcconfig = {'HEADER_SEARCH_PATHS' => '${SDK_DIR}/usr/include/libxml2'}

(2)手動添加引用
首先檢查
我們要在Build Setting中搜索other linker,在這里面添加:
若引用的libxml2.tbd铲掐,添加-lxml2
若引用libz.dylib,則添加-lz
然后拾弃,
在本地私有庫的Build Setting中搜索Header Search Paths,添加路徑:
${SDK_DIR}/usr/include/libxml2
這樣做的缺陷是每次重新pod install摆霉,都需要重新手動添加豪椿。

這里有一個細節(jié)奔坟,
spec.pod_target_xcconfig設(shè)置的是當前庫的Build Settings,這里對應的是本地私有庫搭盾。
spec.user_target_xcconfig設(shè)置的是project中的Build Settings咳秉,即在運行的target中的Build Settings。這個在Cocoapods的官網(wǎng)上不建議使用鸯隅,官網(wǎng)說設(shè)置這個有可能會和工程中本身的設(shè)置造成沖突澜建。

四、CocoaPod出現(xiàn)target overrides the OTHER_LDFLAGS build setting defined in Pods/Target Support的解決方案

利用cocopods管理多個三方庫及本地庫蝌以,pod install后報錯

[!] The `AllBlue [Debug]` target overrides the `OTHER_LDFLAGS` build setting defined in Pods/Target Support Files/Pods/Pods.debug.xcconfig. This can lead to problems with the CocoaPods installation

Use the `$(inherited)` flag, or
Remove the build settings from the target.

意思就是target的設(shè)置覆蓋了 pod的設(shè)置炕舵。

解決方案:
Build Settings -> Other linker flags 中添加$(inherited)

五、關(guān)于本地私有庫中圖片的加載問題

盡量將圖片等資源打包成bundle文件, 這樣有效的防止了資源文件命名的沖突, 引用方法
可以嘗試:

NSBundle *bundle = [NSBundle bundleForClass:["pod中隨意一個類" class]];
NSURL *bundleURL = [bundle URLForResource:@"bundle文件名" withExtension:@"bundle"];
NSBundle *resourceBundle = [NSBundle bundleWithURL: bundleURL];
UIImage *img = [UIImage imageNamed:icon inBundle:bundle compatibleWithTraitCollection:nil];

先拿到該pod下隨意一個類的bundle(該bundle與資源文件是一個bundle), 
再根據(jù)該bundle找到bundle資源文件的路徑, 最后使用資源文件.

另外可以hook imageNamed:方法

六跟畅、引用外部靜態(tài)庫(.a文件)時或打包.a時咽筋,Category方法無法調(diào)用。

Targets選項下有Other linker flags的設(shè)置為 -ObjC碍彭。

下面逐個介紹3個常用參數(shù):
-ObjC:加了這個參數(shù)后晤硕,鏈接器就會把靜態(tài)庫中所有的Objective-C類和分類都加載到最后的可執(zhí)行文件中
-all_load: 會讓鏈接器把所有找到的目標文件都加載到可執(zhí)行文件中,但是千萬不要隨便使用這個參數(shù)庇忌!假如你使用了不止一個靜態(tài)庫文件,然后又使用了這個參數(shù)舰褪,那么你很 有可能會遇到ld: duplicate symbol錯誤皆疹,因為不同的庫文件里面可能會有相同的目標文件,所以建議在遇到-ObjC失效的情況下使用-force_load參數(shù)占拍。
-force_load:所做的事情跟-all_load其實是一樣的略就,但是-force_load需要指定要進行全部加載的庫文件的路徑,這樣的話晃酒,你就只是完全加載了一個庫文件表牢,不影響其余庫文件的按需加載

七、

(1):如果一個本地庫需要import其他庫的頭文件贝次,
需要設(shè)置其podspec中spec.dependency添加依賴崔兴,才能正確索引到。

(2):pod中引入多個庫蛔翅,如果出現(xiàn)相同的類名敲茄,編譯會報錯,有沖突山析。
pod庫中不允許出現(xiàn)相同的類堰燎,需要更改類名,或者刪除笋轨。但是秆剪,如果pod庫中與target中同時包含相同的類赊淑,編譯不報錯。

(3):利用cocopods導入三方庫或者本地庫仅讽,打包.a文件時陶缺,添加Public Headers是無法添加庫中頭文件的,只能添加target中的.h文件何什。

八组哩、制作.a

1.創(chuàng)建新工程 Cocoa Touch Framework文件,第二個是靜態(tài)庫文件处渣,也就是我們常說的.a文件伶贰。
2.將自動生成的.h,.m文件刪掉
3.將所需文件加入靜態(tài)庫工程中罐栈。
4.下面進行整個工程的配置:

       4.1黍衙、TARGETS - >Build Settings -> Architectures:添加 armv7s;
 增加armv7架構(gòu)
       4.2荠诬、 "Build Active Architecture Only" 設(shè)置為 "NO"

注:Build active Architecture Only為什么設(shè)置為NO琅翻?

在目標設(shè)備上,執(zhí)行設(shè)備對應的指令集柑贞。Build active Architecture Only 設(shè)置為YES方椎,只會選擇編譯、鏈接對應的指令集钧嘶,設(shè)置為NO時棠众,會涵蓋所有指令集,在必要的時候選擇執(zhí)行對應的指令集有决。所以一般在Debug時會選擇設(shè)置為YES(效率會高點闸拿,雖然也沒什么卵用),Release時會選擇設(shè)置為NO书幕,以支持所有可能的架構(gòu)新荤。

      4.3、"Mach-O Type" 設(shè)置為 "Static Library"  默認為動態(tài)庫 ,蘋果審核不通過台汇。
      4.4苛骨、"iOS Deployment Target" 設(shè)置為 "iOS 9.0" ,這是支持最低運行iOS系統(tǒng)版本(可自行選擇励七,但是要注意的是智袭,iOS SDK中,已經(jīng)廢棄的方法掠抬,這個需要配合 Base SDK 設(shè)置)吼野。

5.下面我們將頭文件(.h)暴露在外,實現(xiàn)文件(.m)隱藏起來两波,如下:

TARGETS - >Build Settings -> Build Phases中瞳步,將Headers中的Project內(nèi)的頭文件拖到Public中闷哆。

6.制作.a文件

來到工程目錄樹,Products下的文件都是紅色的单起,現(xiàn)在我們選中.a文件抱怔,分別真機和模擬器運行一遍(成功運行),然后Show in Finder 找到對應的 .a文件(上級目錄可以看出是真機還是模擬器文件夾)嘀倒,真機和模擬器運行成功的文件是在這倆個文件夾內(nèi)的屈留。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市测蘑,隨后出現(xiàn)的幾起案子灌危,更是在濱河造成了極大的恐慌,老刑警劉巖碳胳,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勇蝙,死亡現(xiàn)場離奇詭異,居然都是意外死亡挨约,警方通過查閱死者的電腦和手機味混,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诫惭,“玉大人翁锡,你說我怎么就攤上這事∠ν粒” “怎么了盗誊?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長隘弊。 經(jīng)常有香客問我,道長荒适,這世上最難降的妖魔是什么梨熙? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮刀诬,結(jié)果婚禮上咽扇,老公的妹妹穿的比我還像新娘。我一直安慰自己陕壹,他們只是感情好质欲,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著糠馆,像睡著了一般嘶伟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上又碌,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天九昧,我揣著相機與錄音绊袋,去河邊找鬼。 笑死铸鹰,一個胖子當著我的面吹牛癌别,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蹋笼,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼展姐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了剖毯?” 一聲冷哼從身側(cè)響起圾笨,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎速兔,沒想到半個月后墅拭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡涣狗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年谍婉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片镀钓。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡穗熬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出丁溅,到底是詐尸還是另有隱情唤蔗,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布窟赏,位于F島的核電站妓柜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏涯穷。R本人自食惡果不足惜棍掐,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拷况。 院中可真熱鬧作煌,春花似錦、人聲如沸赚瘦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽起意。三九已至鹰服,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杜恰,已是汗流浹背获诈。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工仍源, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人舔涎。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓笼踩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親亡嫌。 傳聞我的和親對象是個殘疾皇子嚎于,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

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