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