iOS 動態(tài)庫和靜態(tài)庫(.a和.framework)真機(jī)庫和模擬器庫的合并

? ? ? ? 封裝代碼為動/靜態(tài)庫,編譯會產(chǎn)生兩個庫文件,一個真機(jī)運(yùn)行的,一個模擬器運(yùn)行的。兩者互不兼容,若真機(jī)運(yùn)行使用模擬器的庫或者模擬器運(yùn)行使用的真機(jī)的庫,都會報類似的錯:_OBJC_CLASS_$_某文件名", referenced from:,但如果每次在真機(jī)和模擬器運(yùn)行之間切換,總要先替換庫,就會很麻煩。所以下面將兩種庫的合并方法總結(jié)一下。

.a合并

? ? ? ? 將真機(jī)庫和模擬器庫放在同一個文件夾下,在這之前需要先將兩個庫重命名,否則會覆蓋。

? ? ? ? 打開終端,cd到該文件夾目錄下。通過下面的命令合并

? ? ? ? lipo[空格]-create[空格] [真機(jī)靜態(tài)庫文件名][空格][模擬器靜態(tài)庫文件名][空格]-output[空格] [合并后的文件名]

終端命令示意圖

? ? ? ? 合并后使用 lipo -info 命令檢查庫文件是否合并成功

檢查命令:

檢查命令示意圖

Architectures in the fat file: /Users/***/Desktop/XXX/libXXXX.a are: armv7 armv7s i386 x86_64

(其中armv7、armv7s為真機(jī)架構(gòu), i386、x86_64為模擬器架構(gòu))。

? ? ? ? 回車后,終端出現(xiàn)這個則表示合并成功。


.framework合并

? ? ? ? .framework合并方法和.a合并方法相同,只不過.framework合并的是.framework內(nèi)同名的那個文件。

需要合成的是.framework內(nèi)同名的那個文件

? ? ? ? 先把兩個庫放在同一個文件夾下,放之前要先改成不同的名字。打開終端,cd到該文件夾目錄下(我放在了桌面上,所以cd到Desktop文件夾下)。同樣通過下面的命令合并

lipo[空格]-create[空格] [真機(jī)靜態(tài)庫文件名][空格] [模擬器靜態(tài)庫文件名][空格]-output[空格] [合并后的文件名]

合并命令示意圖

? ? ? ? 桌面上就會多出一個叫final的庫

生成的合并后的final庫

? ? ? ? 我們使用lipo -info 檢查一下是否同時支持模擬器和真機(jī),輸入lipo -info 把庫文件直接拖入終端,回車

檢查是否合成成功的命令

? ? ? ? 該庫文件支持armv7 i386 x86_64 arm64,合成成功。

? ? ? ? 之后我們將合并得到的final文件改回原來的名字(例如我這里應(yīng)該改成IE),替換任一.framework下的IE文件, 該.framework就是我們最終需要的.framework文件了。


*注意:XCode12編譯的模擬器庫新增支持架構(gòu)arm64,由于真機(jī)庫也支持arm64,真機(jī)和模擬器庫無法再合并成一個。

fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: /Users/XY/Desktop/Release-iphoneos/libImageEditor.a and /Users/XY/Desktop/Release-iphonesimulator/libImageEditor.a have the same architectures (arm64) and can't be in the same fat output file


*架構(gòu)的分離和移除移步:iOS 靜態(tài)庫/動態(tài)庫架構(gòu)分離和刪除



參考資料:

徹底解決_OBJC_CLASS_$_某文件名", referenced from:問題

合并第三方真機(jī)和模擬器的.framework或(靜態(tài)庫.a)文件的方法

最后編輯于
?著作權(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)容