为了方便开发者调试,我们使用lipo工具合并了模拟器和真机的架构。所以在上传前AppStore前,必须使用lipo移除模拟器的架构,否则会报错:
ERROR ITMS-90087: "Unsupported Architectures. The executable for MyFirst.app/Frameworks/WoyunWebSdk.framework contains unsupported architectures '[x86_64, i386]'."
//静态库 路径下直接查看支持的版本
xumindeMacBook-Pro:YFCreditCardPaySDK xumin$ lipo -info libYFCreditCardPaySDK.a
Architectures in the fat file: libYFCreditCardPaySDK.a are: arm64 armv7
//动态库 路径下直接查看支持的版本 加上斜线 带上动态库名称
xumindeMacBook-Pro:BDFaceSDK xumin$ lipo -info IDLFaceSDK.framework/IDLFaceSDK
Architectures in the fat file: IDLFaceSDK.framework/IDLFaceSDK are: armv7 arm64
模拟器32位(即Mac处理器的指令集):i386
模拟器64位(即Mac处理器的指令集):x86_64
真机32位(即ARM处理器的指令集):armv7、armv7s
真机64位(即ARM处理器的指令集):arm64
移除操作:
LK-Macmini:Xcode linknetwork$ cd /Users/linknetwork/Desktop/PortOfTrade/ThirdDeploy/BaiduOCR/AipBase.framework
LK-Macmini:AipBase.framework linknetwork$ pwd
/Users/linknetwork/Desktop/PortOfTrade/ThirdDeploy/BaiduOCR/AipBase.framework
LK-Macmini:AipBase.framework linknetwork$ ls
AipBase Headers Info.plist Modules
LK-Macmini:AipBase.framework linknetwork$ lipo -info AipBase
Architectures in the fat file: AipBase are: i386 x86_64 armv7 arm64
LK-Macmini:AipBase.framework linknetwork$ lipo -remove i386 AipBase -o AipBase
LK-Macmini:AipBase.framework linknetwork$ lipo -remove x86_64 AipBase -o AipBase
LK-Macmini:AipBase.framework linknetwork$ lipo -info AipBase
Architectures in the fat file: AipBase are: armv7 arm64
LK-Macmini:AipBase.framework linknetwork$ cd /Users/linknetwork/Desktop/PortOfTrade/ThirdDeploy/BaiduOCR/AipOcrSdk.framework
LK-Macmini:AipOcrSdk.framework linknetwork$ lipo -remove x86_64 AipOcrSdk -o AipOcrSdk
LK-Macmini:AipOcrSdk.framework linknetwork$ lipo -remove i386 AipOcrSdk -o AipOcrSdk
LK-Macmini:AipOcrSdk.framework linknetwork$ lipo -info AipOcrSdk
Architectures in the fat file: AipOcrSdk are: armv7 arm64
顺便补充下lipo命令:
我们使用lipo 命令来查看整合静态库
1.查看静态库支持的CPU架构
lipo -info libname.a(或者libname.framework/libname)
2. 合并静态库
# lipo -create 静态库存放路径1 静态库存放路径2 ... -output 整合后存放的路径
lipo -create libname-armv7.a libname-armv7s.a libname-i386.a -output libname.a
framework 合并(例util.framework)
lipo -create arm7/util.framework/util i386/util.framework/util -output util.framework
3. 静态库拆分
# lipo 静态库源文件路径 -thin CPU架构名称 -output 拆分后文件存放路径
# 架构名为armv7/armv7s/arm64等,与lipo -info 输出的架构名一致
lipo libname.a -thin armv7 -output libname-armv7.a