在ios中制作靜態(tài)庫之前,先來了解關于靜態(tài)庫的一些概念传轰。
一剩盒、什么是庫?
庫是共享程序代碼的方式慨蛙,一般分為靜態(tài)庫和動態(tài)庫辽聊。
靜態(tài)庫:鏈接時完整地拷貝至可執(zhí)行文件中,被多次使用就有多份冗余拷貝期贫。
動態(tài)庫:鏈接時不復制跟匆,程序運行時由系統(tǒng)動態(tài)加載到內(nèi)存,供程序調(diào)用通砍,系統(tǒng)只加載一次玛臂,多個程序共用,節(jié)省內(nèi)存封孙。
二迹冤、庫的類型
開源庫
公開源代碼,能看到具體實現(xiàn)
比如 SDWebImage 虎忌、 AFNetworking
閉源庫
不公開源代碼泡徙,是經(jīng)過編譯后的二進制文件,看不到具體實現(xiàn)
主要分為:靜態(tài)庫膜蠢、動態(tài)庫
三堪藐、iOS里靜態(tài)庫形式?
.a和.framework
四挑围、iOS里動態(tài)庫形式庶橱?
.dylib和.framework
五、framework為什么既是靜態(tài)庫又是動態(tài)庫贪惹?
系統(tǒng)的.framework是動態(tài)庫,我們自己建立的.framework是靜態(tài)庫寂嘉。
六奏瞬、a與.framework有什么區(qū)別枫绅?
.a是一個純二進制文件,.framework中除了有二進制文件之外還有資源文件硼端。
.a文件不能直接使用并淋,至少要有.h文件配合,.framework文件可以直接使用珍昨。
.a + .h + sourceFile = .framework县耽。
建議用.framework.
七、為什么要使用靜態(tài)庫镣典?
方便共享代碼兔毙,便于合理使用。
實現(xiàn)iOS程序的模塊化兄春∨彀可以把固定的業(yè)務模塊化成靜態(tài)庫。
和別人分享你的代碼庫赶舆,但不想讓別人看到你代碼的實現(xiàn)哑姚。
開發(fā)第三方sdk的需要。
八芜茵、靜態(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)存(下圖示)
在實際的編程過程中躬贡,通常會把一些公用函數(shù)制成函數(shù)庫谆奥,供其它程序使用,一則提搞了代碼的復用拂玻;二則提搞了核心技術的保密程度酸些。所以在實際的項目開發(fā)中,經(jīng)常會使用到函數(shù)庫檐蚜,函數(shù)庫分為靜態(tài)庫和動態(tài)庫兩種魄懂。
和多數(shù)人所熟悉的動態(tài)語言和靜態(tài)語言一樣,這里的所謂靜態(tài)和動態(tài)是相對編譯期和運行期的:靜態(tài)庫在程序編譯時會被鏈接到目標代碼中闯第,程序運行時將不再需要改靜態(tài)庫市栗;而動態(tài)庫在程序編譯時并不會被鏈接到目標代碼中,只是在程序運行時才被載入,因為在程序運行期間還需要動態(tài)庫的存在填帽。
下面介紹下關于.a靜態(tài)庫制作的基本流程
1.創(chuàng)建靜態(tài)庫
2.靜態(tài)庫中聲明方法并實現(xiàn)(用于靜態(tài)庫使用的測試)
3.關于靜態(tài)庫的一些參數(shù)配置
4.靜態(tài)庫中需要暴露的頭文件
5.分別使用模擬器和真機編譯
編譯模式設置為Release模式蛛淋,原來的庫文件由紅色變?yōu)楹谏f明編譯成功篡腌。
6.查看打包出來的文件狀態(tài)
Show Finder查看庫文件
7.合并真機和模擬器庫文件
打開終端褐荷,進行以下操作
一、在終端輸入:lipo -create
二嘹悼、將release-iphonesimulator下的.a拖進終端叛甫,輸入一個空格;
三杨伙、繼續(xù)將release-iphoneos 下.a 拖進終端其监,輸入空格;
四缀台、繼續(xù)輸入:-output 棠赛,打個空格;
五膛腐、輸入合并后的.a所要放的文件路徑
8.查看靜態(tài)庫狀態(tài)
一睛约、在終端輸入:lipo -info ;
二、將合并后的.a拖進終端 哲身,回車辩涝;
[圖片上傳中...(8.查看靜態(tài)庫狀態(tài).png-db2f76-1513126960067-0)]
至此,關于靜態(tài)庫制作完成勘天。
接下來怔揩,介紹如何導入并使用剛剛打包好的靜態(tài)庫。
1.導入庫文件
查看庫文件脯丝,是否在引用庫中
2.使用靜態(tài)庫
至此商膊,全文關于.a靜態(tài)庫的制作和使用介紹完畢。
參考文章
手把手教你制作.a靜態(tài)庫
iOS開發(fā)中靜態(tài)庫制作 之.a靜態(tài)庫制作及使用篇