移除架構(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)同名的那個文件
