iOS關(guān)于靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)

最近,由于項(xiàng)目中使用了擴(kuò)展開(kāi)發(fā)纺涤。為了進(jìn)行開(kāi)發(fā)文件的共享译暂,故在工程中創(chuàng)建了Framework進(jìn)行開(kāi)發(fā)文件的共享。結(jié)果上架失敗撩炊,才想起來(lái)外永,自己創(chuàng)建的framework是動(dòng)態(tài)庫(kù),包含動(dòng)態(tài)庫(kù)的項(xiàng)目是不能上架的拧咳。過(guò)后對(duì)靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)進(jìn)行了一次總結(jié)伯顶。

使用.a靜態(tài)庫(kù)

1、創(chuàng)建靜態(tài)庫(kù)
  1. File -> Framework & Library -> Coco Touch Framework(.framework文件) Cocoa Touch Static Library(.a文件)骆膝,此時(shí)創(chuàng)建.a文件
  2. 可以把static文件下原來(lái)的2個(gè)文件刪除砾淌,創(chuàng)建自定義的工具類(lèi)Tool,在Tool中聲明且實(shí)現(xiàn)一個(gè)類(lèi)方法
  3. 在模擬器和真機(jī)的環(huán)境下進(jìn)行分別編譯(此時(shí)有一個(gè)錯(cuò)誤谭网,不用管汪厨。libstatic.a文件會(huì)變成黑色,在show in finder中把紅色的文件刪除)
  4. 此時(shí)Tool還不可以使用愉择,因?yàn)闆](méi)有暴露.h頭文件劫乱。點(diǎn)擊項(xiàng)目 -> Build Phases -> Copy Files -> + -> 選中Tool.h文件,再次分別編譯
  5. 將生成的Debug-iphonesimulator文件拖進(jìn)項(xiàng)目中锥涕,此時(shí)就可以使用Tool.h文件了衷戈。但還會(huì)有一個(gè)問(wèn)題,新生成文件不能適用全部機(jī)型的cpu指令集
  6. 解決5中的問(wèn)題层坠,點(diǎn)擊項(xiàng)目 -> Build Settings -> 在Architectures中將Build Active Architecture Only中的Debug屬性值改為NO殖妇,再次分別編譯
  7. 將項(xiàng)目中的Debug-iphonesimulator文件刪除(在show in finder中也要?jiǎng)h除),再次導(dǎo)入Debug-iphonesimulator文件
2破花、詳解1-(5)的問(wèn)題

每個(gè)機(jī)型的CPU都會(huì)有不同的架構(gòu)谦趣,我們創(chuàng)建的靜態(tài)庫(kù)不能適用于全部機(jī)型的CPU架構(gòu)疲吸。
使用命令查看第三方靜態(tài)庫(kù)都支持那些架構(gòu):切換至靜態(tài)庫(kù)文件夾(使用cd命令),然后輸入lipo -info 靜態(tài)庫(kù)名稱(chēng)

  1. 在模擬器中
    i386架構(gòu):iPhone模擬器 3gs -> iPhone5
    x86_64架構(gòu):iPhone模擬器 5s -> 6p
  2. 在真機(jī)中
    armv7:iPhone 3gs -> 4s
    armv7s:iPhone 5 -> 5c
    armv64:iPhone 5s -> 6p
3前鹅、如何讓i386和x86_64可以兼容:
  1. 1-7中的配置摘悴,可以使編譯好后的靜態(tài)庫(kù)同時(shí)支持i386和x86_64架構(gòu)
  2. 合并文件夾
    創(chuàng)建靜態(tài)庫(kù)文件時(shí),當(dāng)模擬器是iphone5以下的時(shí)候舰绘,編譯出來(lái)的靜態(tài)庫(kù)文件支持的是i386架構(gòu)蹂喻。當(dāng)模擬器是5s以上的時(shí)候,編譯出來(lái)的靜態(tài)庫(kù)文件支持的是x86_64文件捂寿。兩個(gè)編譯好的靜態(tài)庫(kù)文件夾的名字是相同的口四,為了防止后編譯生成的文件夾覆蓋先編譯的,修改第一個(gè)文件夾的名字(原文件名字后+1就行)秦陋。然后使用命令(lipo -create)合并兩個(gè)文件夾窃祝。
    cd …
lipo -create Debug-iphonesimulator/libstaticLib.a Debug-iphonesimulator1/libstaticLib.a -output libstatic.a
4、在.a靜態(tài)庫(kù)中使用圖片
  1. 創(chuàng)建一個(gè).bundle類(lèi)型的文件夾踱侣,在該文件中放入靜態(tài)庫(kù)要使用的圖片
  2. 在靜態(tài)庫(kù)中粪小,讀取該bundle文件下的圖片,使用如下代碼抡句。
NSString *path=[[NSBundle mainBundle] pathForResource:@"papa.png" ofType:nil inDirectory:@"testimg.bundle"];
[UIImage imageWithContentsOfFile:path];
  1. 將靜態(tài)庫(kù)設(shè)置為所有CPU架構(gòu)可用(1-6)探膊,在真機(jī)和模擬器環(huán)境下分別編譯
  2. 在使用靜態(tài)庫(kù)的項(xiàng)目中,導(dǎo)入Debug-iphonesimulator文件待榔,同時(shí)也要把靜態(tài)庫(kù)中存放圖片的bundle文件也導(dǎo)入項(xiàng)目中

使用.framework靜態(tài)庫(kù)

  1. 注意:自己創(chuàng)建的.framework文件都是動(dòng)態(tài)庫(kù)逞壁,項(xiàng)目中如果包含動(dòng)態(tài)庫(kù),該項(xiàng)目是不允許上架的锐锣。
  2. 如何將.framework動(dòng)態(tài)庫(kù)轉(zhuǎn)換為靜態(tài)庫(kù):
    在Project中選中項(xiàng)目 -> Build Settings -> All -> 在右側(cè)搜索框輸入mach -> 將Mach-O Type的值改為Static Library
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腌闯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子雕憔,更是在濱河造成了極大的恐慌姿骏,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斤彼,死亡現(xiàn)場(chǎng)離奇詭異分瘦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)琉苇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)嘲玫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人并扇,你說(shuō)我怎么就攤上這事去团。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵土陪,是天一觀的道長(zhǎng)昼汗。 經(jīng)常有香客問(wèn)我,道長(zhǎng)旺坠,這世上最難降的妖魔是什么乔遮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任扮超,我火速辦了婚禮取刃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘出刷。我一直安慰自己璧疗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布馁龟。 她就那樣靜靜地躺著崩侠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坷檩。 梳的紋絲不亂的頭發(fā)上却音,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音矢炼,去河邊找鬼系瓢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛句灌,可吹牛的內(nèi)容都是我干的夷陋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼胰锌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼骗绕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起资昧,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤酬土,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后格带,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體诺凡,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年践惑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了腹泌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尔觉,死狀恐怖凉袱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤专甩,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布钟鸵,位于F島的核電站,受9級(jí)特大地震影響涤躲,放射性物質(zhì)發(fā)生泄漏棺耍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一种樱、第九天 我趴在偏房一處隱蔽的房頂上張望蒙袍。 院中可真熱鬧,春花似錦嫩挤、人聲如沸害幅。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)以现。三九已至,卻和暖如春约啊,著一層夾襖步出監(jiān)牢的瞬間邑遏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工恰矩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留记盒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓枢里,卻偏偏與公主長(zhǎng)得像孽鸡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子栏豺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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