開發(fā)不了解靜態(tài)庫/動態(tài)庫,這些坑你可躲不掉

踩坑是為了更好的填坑

  • 在日常的開發(fā)過程中,關(guān)于靜態(tài)庫和動態(tài)庫,稍不注意,就會出現(xiàn)問題.不僅影響工作效率,當(dāng)你的同事在使用你寫的庫的時候,還會出現(xiàn)各種讓人看不懂的報錯,進(jìn)而懷疑你的編寫水平.究其原因就是在編寫庫的時候,遺漏了一些配置步驟.在此我把這些錯誤列出來,如果以后關(guān)于庫的問題報錯,你可以來查看相關(guān)的報錯信息.

關(guān)于庫的簡單介紹

庫分為兩大類

  • 靜態(tài)庫: .a .framework
  • 動態(tài)庫: .dylib .framework
  • 默認(rèn)情況下,編譯出來的framework庫是一個動態(tài)庫
  • 如果想編譯的時候直接將編譯的framework改成靜態(tài)庫: 工程 --> BuildSettings --> mach -> 選擇static lib


    Paste_Image.png

使用庫之前,要了解的知識.

  • 先來個最常見的
    Undefined symbols for architecture arm64
Snip20161120_4.png

如果出現(xiàn)這樣的報錯,想想自己是不是因為工作太累,而忽略了對真機設(shè)置的編譯.
為了避免大家對設(shè)備架構(gòu)知識的混亂,我整理如下,供大家參考.

首先要明確,每一個設(shè)備都有自己的CPU --> 都有的CPU架構(gòu)(指令集)
每一個靜態(tài)庫都有自己支持的CPU架構(gòu)&不支持的CPU架構(gòu)

* 那么如何查看靜態(tài)庫支持哪些CPU架構(gòu),很簡單,在終端找到庫的位置,輸入下面的命令行就可以查詢到.
    lipo -info 靜態(tài)庫名稱

總結(jié)常見模擬器&真機所使用的CPU架構(gòu)
* 模擬器使用的CPU架構(gòu)
iPhone3gs~iPhone5 : i386
iPhone5s~iPhone7plus : x86_64
* 真機設(shè)備CPU架構(gòu)
iPhone3gs~iPhone4s : armv7
iPhone5~iPhone5c : armv7s(只要支持armv7即可)
iPhone5s~iPhone7plus : arm64
如何合并兩個靜態(tài)庫
* lipo -create 靜態(tài)庫1 靜態(tài)庫2 -output 新靜態(tài)庫的名稱

使用庫的小技巧

  • 每次編譯的時候,需要切換模擬器, 然后得到想要的 CPU 架構(gòu),這時候我們只需要在工程中配置一下,就不用來回的切換模擬器了.
Snip20161120_5.png
  • 將默認(rèn)的 NO 改為 YES, 那么以后你所編譯的靜態(tài)庫就可以支持所有的模擬器了.

關(guān)于 OC 和 Swift 使用庫的注意點

  • 首先要明確 一般情況下,OC不支持動態(tài)庫, Swift 不支持靜態(tài)庫.也就是說,當(dāng)你進(jìn)行混編的時候,是非常痛苦的.因為你很容易就串了.
    你會看到以下錯誤.


    Snip20161120_6.png
  • 它會說動態(tài)庫不能被加載.而在 Swift 中,它又提示靜態(tài)庫不能被使用. 這時候你還需要去編譯一個靜態(tài)庫和動態(tài)庫,分別在不同的語言中使用嗎? 我告訴你,根本不需要.只要在工程中一個簡簡單單的配置,就可以實現(xiàn)靜態(tài)庫和動態(tài)庫的雙重使用.

工程 ---> General ---> Embedded Binaries 中添加你編譯的庫,就可以解決這個問題.

Snip20161120_9.png

先寫這么多,如果大家在開發(fā)中遇到了相關(guān)類似的問題,可以在評論中回復(fù).愿我們的開發(fā)之路越走越好.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笤休,一起剝皮案震驚了整個濱河市鼓寺,隨后出現(xiàn)的幾起案子青责,更是在濱河造成了極大的恐慌古劲,老刑警劉巖修械,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件住练,死亡現(xiàn)場離奇詭異官撼,居然都是意外死亡骑科,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門哼蛆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蕊梧,“玉大人,你說我怎么就攤上這事腮介》适福” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵叠洗,是天一觀的道長甘改。 經(jīng)常有香客問我,道長灭抑,這世上最難降的妖魔是什么十艾? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮腾节,結(jié)果婚禮上忘嫉,老公的妹妹穿的比我還像新娘荤牍。我一直安慰自己,他們只是感情好榄融,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布参淫。 她就那樣靜靜地躺著,像睡著了一般愧杯。 火紅的嫁衣襯著肌膚如雪涎才。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天力九,我揣著相機與錄音耍铜,去河邊找鬼。 笑死跌前,一個胖子當(dāng)著我的面吹牛棕兼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抵乓,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼伴挚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了灾炭?” 一聲冷哼從身側(cè)響起茎芋,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜈出,沒想到半個月后田弥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡铡原,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年偷厦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片燕刻。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡只泼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卵洗,到底是詐尸還是另有隱情请唱,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布忌怎,位于F島的核電站,受9級特大地震影響酪夷,放射性物質(zhì)發(fā)生泄漏榴啸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一晚岭、第九天 我趴在偏房一處隱蔽的房頂上張望鸥印。 院中可真熱鬧,春花似錦、人聲如沸库说。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽潜的。三九已至骚揍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間啰挪,已是汗流浹背信不。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留亡呵,地道東北人抽活。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像锰什,于是被迫代替她去往敵國和親下硕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

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