iOS 静态库/动态库架构分离和删除
2020-09-21 本文已影响0人
Accepted_
移除架构
移除XXX.a中的某架构。
$ 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
#查询编译好的静态库支持的架构为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架构(还是直接把库拖入终端),移除后的.a没有配置路径,就在桌面(∵前面我们cd进了桌面)
$ lipo /Users/XY/Desktop/Release-iphoneos/libXYCalculateTool.a -remove arm64 -output libXYCalculateTool.a
#查看支持的架构只有armv7,说明arm64架构已经移除成功
$ lipo -info /Users/XY/Desktop/libXYCalculateTool.a
Architectures in the fat file: /Users/XY/Desktop/libXYCalculateTool.a are: armv7
分离架构:
分离出XXX.a中的某架构。
$ 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
# 查看支持的架构,为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架构
$ lipo /Users/XY/Desktop/Release-iphoneos/libXYCalculateTool.a -thin arm64 -output libXYCalculateTool.a
#查看分离出的静态库,为arm64架构(移除后的.a没有配置路径,就在桌面。∵前面我们cd进了Desktop)
$ lipo -info /Users/XY/Desktop/libXYCalculateTool.a
Non-fat file: /Users/XY/Desktop/libXYCalculateTool.a is architecture: arm64
合并胖子库(一库支持多架构)
移步:iOS 动态库和静态库(.a和.framework)真机库和模拟器库的合并
注意:XCode12编译的模拟器库新增支持架构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架构的静态库跟真机库合并后,在被包含进其他的静态库中时,编译模拟器会报错缺少arm64。
补充:framework和.a同理。framework是操作目录下同名的那个文件。 操作的对象是framework文件夹内同名的那个文件