IOS靜態(tài)庫(kù)的制作

一、靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)

1.靜態(tài)庫(kù)

后綴是.a和.framework的文件
在使用的時(shí)候,靜態(tài)庫(kù)會(huì)被完整地復(fù)制到可執(zhí)行文件中,被多次使用就有多份冗余拷貝。

優(yōu)點(diǎn):
1.模塊化,分工合作
2.避免少量改動(dòng)經(jīng)常導(dǎo)致大量的重復(fù)編譯連接
3.也可以重用,注意不是共享使用

2.動(dòng)態(tài)庫(kù)

后綴是.dylib 和 .framework(當(dāng)然現(xiàn)在在導(dǎo)入第三方的時(shí)候會(huì)找不到.dylib文件,而是用.tbd代替了,.tbd的實(shí)質(zhì)其實(shí)就是.dylib)
在使用的時(shí)候,由系統(tǒng)動(dòng)態(tài)加載到內(nèi)存,供程序調(diào)用,系統(tǒng)只加載一次,多個(gè)程序共用,節(jié)省內(nèi)存。

優(yōu)點(diǎn):
1.可以將最終可執(zhí)行文件體積縮小
2.多個(gè)應(yīng)用程序共享內(nèi)存中得同一份庫(kù)文件,節(jié)省資源
3.可以不重新編譯連接可執(zhí)行程序的前提下,更新動(dòng)態(tài)庫(kù)文件達(dá)到更新應(yīng)用程序的目的。

當(dāng)然有一點(diǎn)需要注意的是

項(xiàng)目中如果使用了自制的動(dòng)態(tài)庫(kù),不能被上傳到AppStore

3.a與.framework的區(qū)別

.a是一個(gè)純二進(jìn)制文件,.framework中除了有二進(jìn)制文件之外還有資源文件。
.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。
.a + .h + sourceFile = .framework。

建議用.framework.

二、靜態(tài)庫(kù)的制作(.framework)

1.新建一個(gè)framework庫(kù)
2.添加需要打包的文件
3.添加打包到靜態(tài)庫(kù)中的.m文件和需要暴露出來的.h文件
4.分別選擇模擬器和真機(jī)運(yùn)行一次
5.在finder中查看這個(gè)文件
6.這是release下的真機(jī)和模擬器的靜態(tài)庫(kù),BHImage是二進(jìn)制文件,Headders包含的是頭文件(字有點(diǎn)丑。。)

到這里其實(shí)靜態(tài)庫(kù)都已經(jīng)做好了,但是這個(gè)是分開的。真機(jī)的就用真機(jī)下的,模擬器就用模擬器下的。所以我們需要把它們合并在一起:
在終端輸入指令:
  lipo -create 真機(jī)下的二進(jìn)制文件路徑(BHImage) 模擬器下的二進(jìn)制文件路徑(BHImage) -output 合并生成輸出的文件路徑

Paste_Image.png

最后把合成好的二進(jìn)制文件放入.framework中。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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