iOS快速生成 靜態(tài)庫

開發(fā)中糕篇,一些核心技術(shù)或者常用框架火诸,出于安全性和穩(wěn)定性的考慮躲查,不想被外界知道它浅,所以會把核心代碼打包成靜態(tài)庫,只暴露頭文件.比如微信 支付寶 友盟 百度地圖等等,他們的SDK中有很多的framework 和.a文件,相信使用過的盆友都有印象.
在我初出茅廬的時候著實(shí)覺得那些后綴名為“.frameworke”镣煮、“.a”姐霍、“.dylib”的文件很神秘,很高冷,但對這個“庫”究竟是什么“鬼”,一直都是云里霧里镊折。

區(qū)別

 靜態(tài)庫:.a 和 .framework
 動態(tài)庫:.dylib 和 .framework
靜態(tài)庫:鏈接時黔衡,靜態(tài)庫會被完整地復(fù)制到可執(zhí)行文件中,被多次使用就有多份冗余拷貝
動態(tài)庫:鏈接時不復(fù)制腌乡,程序運(yùn)行時由系統(tǒng)動態(tài)加載到內(nèi)存盟劫,供程序調(diào)用,系統(tǒng)只加載一次与纽,多個程序共用侣签,節(jié)省內(nèi)存

庫分開源庫和閉源庫

開源庫
源代碼是公開的,你可以看到具體實(shí)現(xiàn)急迂。比如GitHub上比較出名的第三方框架AFNetworking影所、SDWebImage。
閉源庫
不公開源代碼僚碎,只公開調(diào)用的接口猴娩,看不到具體的實(shí)現(xiàn),是一個編譯后的二進(jìn)制文件勺阐。這種常見于一些公司的SDK包卷中,比如高德地圖SDK、環(huán)信即時通訊SDK,微信SDK,百度地圖SDK等等渊抽。

但是蘋果爸爸比較兇悍在iOS8之前不讓開發(fā)者使用動態(tài)庫了,如果你的項(xiàng)目中使用了動態(tài)庫 ,蘋果爸爸會很無情的拒絕你提交的app.但是iOS8以后可以支持“Embed Frameworks”功能

制作打包靜態(tài)庫

制作打包靜態(tài)庫一般有2種方式,打包成.a 和打包成.framework

framework打包

framework打包方式和.a打包很相似我就簡單講一下,為了簡單我們就不新創(chuàng)建工程了.

  • 1 添加framework
    方式和添加stadic 類似 只是選擇的模式不同,這個framework 我命名為WWFirst
7932DB14-F621-42EB-B101-20D232747BF6.png
F174F99C-EEFA-4AEA-BD3C-B7779A1BF0F0.png
  • 2 添加測試類和方法
    和.a 不同的是這個framework只生成了頭文件 沒有.m文件 ,測試需要我們你自己添加類FrameWorkTestTool(自定義)
    聲明了一個公開方法
+(void)testLog
{
    NSLog(@"靜態(tài)庫測試");
}
DB92EE80-F7B7-4485-B637-F17EF50824DF.png
  • 3 設(shè)置打包的是靜態(tài)庫蟆豫。因?yàn)閯討B(tài)庫也可以是以framework形式存在,所以需要設(shè)置懒闷,否則默認(rèn)打出來的是動態(tài)庫.
B9C769EC-EB63-4374-8633-305D8ABEF32E.png
  • 4 編譯打包,同.a編譯后products下文件(WWFirst)會由紅色變黑色
    注意target的切換 編譯時target應(yīng)該是WWFirst
ABC1980C-98B7-40AF-AC5F-B9B125C361A7.png
36475C94-06E4-4516-B6DA-5BFC713CC498.png
  • 5 測試運(yùn)行
    切換target
5B8AD0F4-6D6B-4C32-B161-C69DB61F2344.png

導(dǎo)入頭文件
測試運(yùn)行

25ECBACC-C446-442C-AB12-E053894A7CE4.png
.a打包
    1. 創(chuàng)建一個工程,名字簡單命名我的命名為TestA,添加靜態(tài)庫AStadic(自己命名)
D87B253A-DACE-4931-8565-B540A2A10177.png
5542EA5B-B90D-4278-8C15-AE8323BB81CC.png
4FDCB3DC-14D1-47CB-A632-FD23BEC30268.png
  • 2.在生成的AStadic中添加測試代碼
5C84D2F2-1972-4D9E-95AD-0B06F852B574.png
+(void)testA
{
    NSLog(@"我遇見誰會有怎么樣的對白");
}
  • 3.編譯生成.a
    選擇AStadic 按住command+ B,編譯
屏幕快照 2017-10-31 下午3.25.02.png

編譯通過后 我們在左邊Products文件夾下可以看到libAStadic 會由火紅色變黑色,圖中l(wèi)ibBStadic是為了對比的 未編譯仍是紅色
另外我們選中l(wèi)ibAStadic 右鍵選擇show in Finder,會看到下圖


2A8DFEAB-ED70-4603-9A9A-3A034745889D.png
    1. 運(yùn)行測試
      切換編譯運(yùn)行的target
屏幕快照 2017-10-31 下午3.36.42.png

導(dǎo)入頭文件

import "AStadic.h"

調(diào)用 [AStadic testA];
如果編譯同過,需要把libAStadic.a添加到進(jìn)去

92199CC2-6FAF-4F02-B63A-834F8DCCD146.png

運(yùn)行結(jié)果

21CEFB6C-6F93-410E-B320-341CF4C2B71F.png

總結(jié)說明

靜態(tài)庫版本有四種,編譯時選擇切換就可以打包成不同的靜態(tài)庫

真機(jī)-Debug版本
真機(jī)-Release版本
模擬器-Debug版本
模擬器-Release版本

framework是現(xiàn)在比較流行的打包方式,用“Cocoa Touch Framework”創(chuàng)建的插件可以包含資源文件十减,而“Cocoa Touch Static Library”只能包含代碼.而且使用Cocoa Touch Framework也是能打包生成.a的,畢竟“Cocoa Touch Static Library”創(chuàng)建插件已經(jīng)是很老的技術(shù).所以還是推薦大家使用framework

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市愤估,隨后出現(xiàn)的幾起案子帮辟,更是在濱河造成了極大的恐慌,老刑警劉巖玩焰,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件由驹,死亡現(xiàn)場離奇詭異,居然都是意外死亡震捣,警方通過查閱死者的電腦和手機(jī)荔棉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒿赢,“玉大人,你說我怎么就攤上這事渣触∠劭茫” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵嗅钻,是天一觀的道長皂冰。 經(jīng)常有香客問我店展,道長,這世上最難降的妖魔是什么秃流? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任赂蕴,我火速辦了婚禮,結(jié)果婚禮上舶胀,老公的妹妹穿的比我還像新娘概说。我一直安慰自己,他們只是感情好嚣伐,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布糖赔。 她就那樣靜靜地躺著,像睡著了一般轩端。 火紅的嫁衣襯著肌膚如雪放典。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天基茵,我揣著相機(jī)與錄音奋构,去河邊找鬼。 笑死拱层,一個胖子當(dāng)著我的面吹牛声怔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播舱呻,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼醋火,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了箱吕?” 一聲冷哼從身側(cè)響起芥驳,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茬高,沒想到半個月后兆旬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怎栽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年丽猬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熏瞄。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡脚祟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出强饮,到底是詐尸還是另有隱情由桌,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站行您,受9級特大地震影響糯崎,放射性物質(zhì)發(fā)生泄漏裹赴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望否副。 院中可真熱鬧德召,春花似錦嫉嘀、人聲如沸苛吱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽经瓷。三九已至,卻和暖如春洞难,著一層夾襖步出監(jiān)牢的瞬間舆吮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工队贱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留色冀,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓柱嫌,卻偏偏與公主長得像锋恬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子编丘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

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