如何使用lipo剥离xcframework中的模拟器二进制文件?
如何剥离XCFramework中的模拟器架构部分
XCFramework是一个容器格式,里面封装了针对不同平台(比如iOS设备、iOS模拟器)的独立二进制框架文件,lipo工具只能直接处理单个二进制文件,没法直接作用于整个XCFramework目录,这就是你用lipo -info直接扫XCFramework报错的原因。
下面是具体的处理步骤:
先查看XCFramework的内部结构,确认各平台目录:
ls NameOfFramework.xcframework执行后会看到类似
ios-arm64、ios-x86_64-simulator这样的子目录,对应不同的目标平台。进入你要保留的设备平台的.framework目录(以iOS设备为例):
cd NameOfFramework.xcframework/ios-arm64/NameOfFramework.framework查看当前二进制文件的架构信息,确认是否包含模拟器架构:
lipo -info NameOfFramework如果这个二进制是包含设备+模拟器架构的fat文件,执行剥离命令:
lipo -remove x86_64 -remove arm64_x86_64 NameOfFramework -output NameOfFramework注:
arm64_x86_64是Apple Silicon模拟器对应的架构,如果你的XCFramework里没有这个架构,可以只写-remove x86_64。(可选)如果需要保留XCFramework格式,重新打包:
处理完目标平台的二进制后,用xcodebuild重新生成纯净的XCFramework:xcodebuild -create-xcframework \ -framework NameOfFramework.xcframework/ios-arm64/NameOfFramework.framework \ -output Stripped-NameOfFramework.xcframework你可以根据需求添加其他需要保留的平台(比如macOS、tvOS等),在命令里追加
-framework 路径即可。
内容的提问来源于stack exchange,提问作者Piepants
相关产品推荐
相关产品推荐

