iOS開發(fā)之靜態(tài)庫.a的制作教程

http://www.cocoachina.com/ios/20150226/11182.html

簡介

什么是庫?

庫是程序代碼的集合,是共享程序代碼的一種方式

根據(jù)源代碼的公開情況,庫可以分為?2?種類型

開源庫

公開源代碼,能看到具體實現(xiàn)

比如?SDWebImage?、?AFNetworking

閉源庫

不公開源代碼,是經(jīng)過編譯后的二進制文件,看不到具體實現(xiàn)

主要分為:靜態(tài)庫、動態(tài)庫

靜態(tài)庫和動態(tài)庫

靜態(tài)庫和動態(tài)庫的存在形式

靜態(tài)庫:?.a?和?.framework

動態(tài)庫:?.dylib?和?.framework

靜態(tài)庫和動態(tài)庫在使用上的區(qū)別

靜態(tài)庫:鏈接時,靜態(tài)庫會被完整地復制到可執(zhí)行文件中,?被多次使用就有多份冗余拷貝?(左圖所示)

動態(tài)庫:鏈接時不復制,程序運行時由系統(tǒng)動態(tài)加載到內(nèi)存,供程序調(diào)用,系統(tǒng)只加載一次,多個程序共用,節(jié)省內(nèi)存?(右圖所示)


需要注意的是:

項目中如果使用了自制的動態(tài)庫,不能被上傳到?AppStore

制作?.a

新建項目->?選擇?“Cocoa Touch Static Library”



添加庫需要包含的源代碼




將李明杰老師的刷新框架MJRefresh拖入工程


選擇需要暴露出來的 .h 文件, .m 文件會自動編譯到 .a 文件中





選擇真機設(shè)備,然后 Command+B 編譯, libMJRefresh.a 文件從紅色變?yōu)楹谏?br>




選擇模擬器,依然 Command+B ,模擬器和真機環(huán)境下用的 .a 文件是分開的





右擊 “Show In Finder” ,查看制作好的 .a 文件






Debug-iphoneos 文件夾里面的東西是用在真機上的

Debug-iphonesimulator?文件夾里面的東西是用在模擬器上的

如果?Scheme?是?Release?模式,生成的文件夾就以?Release?開頭

如果想讓一個?.a?文件能同時用在真機和模擬器上,需要進行合并

在終端輸入指令

1

lipo?-create?Debug-iphoneos/libMJRefresh.a?Debug-iphonesimulator/libMJRefresh.a?-output?libMJRefresh.a

.a?文件的體積(一般情況下)

真機用的?.a >?模擬器用的?.a

所合成?.a ==?真機用的?.a +?模擬器用的?.a

通過?lipo –info?libMJRefresh.a?可以查看?.a?的類型(模擬器還是真機)

使用?.a

如何使用?.a

直接將?.a?、?.h?、資源文件拖拽到其他項目中即可




最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容