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

移除架構(gòu)

移除XXX.a中的某架構(gòu)。

$ lipo XXX.a -remove arm64 -output XXX.a
$ lipo XXX.a -remove armv7 -output XXX.a
$ lipo XXX.a -remove i386 -output XXX.a
$ lipo XXX.a -remove x86_64 -output XXX.a
···

實例:

$ cd Desktop
#查詢編譯好的靜態(tài)庫支持的架構(gòu)為armv7 arm64(直接把庫文件拖入終端就有絕對路徑了)
$ lipo -info /Users/XY/Desktop/Release-iphoneos/libXYCalculateTool.a
Architectures in the fat file: /Users/XY/Desktop/Release-iphoneos/libXYCalculateTool.a are: armv7 arm64 
#移除arm64架構(gòu)(還是直接把庫拖入終端),移除后的.a沒有配置路徑,就在桌面(∵前面我們cd進了桌面)
$ lipo /Users/XY/Desktop/Release-iphoneos/libXYCalculateTool.a -remove arm64 -output libXYCalculateTool.a
#查看支持的架構(gòu)只有armv7,說明arm64架構(gòu)已經(jīng)移除成功
$ lipo -info /Users/XY/Desktop/libXYCalculateTool.a 
Architectures in the fat file: /Users/XY/Desktop/libXYCalculateTool.a are: armv7 

分離架構(gòu):

分離出XXX.a中的某架構(gòu)。

$ lipo XXX.a -thin arm64 -output XXX.a
$ lipo XXX.a -thin armv7 -output XXX.a
$ lipo XXX.a -thin i386 -output XXX.a
$ lipo XXX.a -thin x86_64 -output XXX.a
···

實例

$ cd Desktop
# 查看支持的架構(gòu),為armv7 arm64 
$ lipo -info /Users/XY/Desktop/Release-iphoneos/libXYCalculateTool.a
Architectures in the fat file: /Users/XY/Desktop/Release-iphoneos/libXYCalculateTool.a are: armv7 arm64 

# 分離出想要的arm64架構(gòu)
$ lipo /Users/XY/Desktop/Release-iphoneos/libXYCalculateTool.a -thin arm64 -output libXYCalculateTool.a 
#查看分離出的靜態(tài)庫,為arm64架構(gòu)(移除后的.a沒有配置路徑,就在桌面?!咔懊嫖覀僣d進了Desktop)
$ lipo -info /Users/XY/Desktop/libXYCalculateTool.a 
Non-fat file: /Users/XY/Desktop/libXYCalculateTool.a is architecture: arm64

合并胖子庫(一庫支持多架構(gòu))

移步:iOS 動態(tài)庫和靜態(tài)庫(.a和.framework)真機庫和模擬器庫的合并
注意:XCode12編譯的模擬器庫新增支持架構(gòu)arm64,由于真機庫也支持arm64,真機和模擬器庫無法再合并成一個。會如下錯誤:

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

移除了模擬器arm64架構(gòu)的靜態(tài)庫跟真機庫合并后,在被包含進其他的靜態(tài)庫中時,編譯模擬器會報錯缺少arm64。

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

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