創(chuàng)建.a動(dòng)態(tài)庫(kù)和.framework靜態(tài)庫(kù)

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

  • 動(dòng)態(tài)庫(kù):動(dòng)態(tài)庫(kù)在程序編譯時(shí)并不會(huì)被連接到目標(biāo)代碼中,而是在程序運(yùn)行時(shí)才被載入,因此在程序運(yùn)行時(shí)還需要?jiǎng)討B(tài)庫(kù)存在。
    .dylib和.framework
    .framework可靜可動(dòng),取決于配置
  • 靜態(tài)庫(kù):靜態(tài)庫(kù)在程序編譯時(shí)會(huì)被連接到目標(biāo)代碼中,程序運(yùn)行時(shí)將不再需要該靜態(tài)庫(kù)。
    .a和.framework

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

1、新建工程,選擇Static Library

新建工程

2、Build Active Architecture Only 設(shè)置為NO(不同機(jī)型的架構(gòu)不一樣,設(shè)置為NO適配不同機(jī)型)
Build Active Architecture Only 設(shè)置

3、設(shè)置最低支持版本和暴露頭文件
設(shè)置最低支持版本

設(shè)置暴露頭文件

4、運(yùn)行代碼生成對(duì)應(yīng)庫(kù)(模擬器和真機(jī)下分別在debug和release環(huán)境下運(yùn)行代碼,總共是4次,右鍵點(diǎn)擊上圖中的紅框內(nèi)庫(kù)文件,Show in Finder會(huì)發(fā)現(xiàn)4個(gè)人文件,對(duì)應(yīng)剛才4次運(yùn)行結(jié)果)

5、合并庫(kù)文件
說(shuō)明:最終生成了兩個(gè)合并好的庫(kù)文件,debug和release。使用時(shí)根據(jù)當(dāng)前工程配置情況選用對(duì)應(yīng)庫(kù)文件。

生成debug庫(kù)文件
終端:lipo -create debug下模擬器庫(kù)文件路徑  debug模式下真機(jī)庫(kù)文件路徑  -output  合并后庫(kù)文件路徑+合并后庫(kù)文件名.a
生成release庫(kù)文件
終端:lipo -create release下模擬器庫(kù)文件路徑 release模式下真機(jī)庫(kù)文件路徑  -output 合并后庫(kù)文件路徑+合并后庫(kù)文件名.a

6、驗(yàn)證
注:.a靜態(tài)庫(kù)文件沒(méi)有頭文件,需要自己手動(dòng)添加,找到剛才生成的四個(gè)文件,任選一個(gè),拷貝include文件夾,同合并好的庫(kù)文件一起添加到工程中才能正常使用。

驗(yàn)證

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

1、新建framework工程

新建framework工程

2、Build Active Architecture Only 設(shè)置為NO(不同機(jī)型的架構(gòu)不一樣,設(shè)置為NO適配不同機(jī)型)
Build Active Architecture Only 設(shè)置

3、暴露頭文件
注意:framework工程新建就有一個(gè).h文件,其實(shí)就是一個(gè)主頭文件。我們?cè)谥黝^文件中導(dǎo)入需要導(dǎo)入的頭文件,后面我們?cè)谑褂眠@個(gè)靜態(tài)庫(kù)的時(shí)候只需要導(dǎo)入這個(gè)主頭文件即可。就像我們使用很多第三方開(kāi)源框架一樣。
暴露頭文件

4、設(shè)置為靜態(tài)庫(kù)(默認(rèn)是動(dòng)態(tài)庫(kù))
設(shè)置靜態(tài)庫(kù)

5、合并庫(kù)文件,做法和.a靜態(tài)庫(kù)一樣。
注意:output文件后綴為.lipo;生成的.lipo文件去掉后綴名,改為與合并前文件一樣的名稱(chēng),拖入開(kāi)始運(yùn)行生成的一個(gè)文件中,替換原來(lái)的。
需要合并的文件

6、驗(yàn)證
驗(yàn)證

參考的地址已忘記,多謝大神

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

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

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