我有一个具有通用二进制文件的框架,其中包含x86_64
并在框架构建时与自定义脚本arm64
合并。lipo
我在 XCode 12.3 中遇到了同样的问题,现在已经创建了一个解决方法。希望这将很快在 XCode 中得到修复,但在那之前,一个快速的修复方法是精简架构并使用您需要的框架。编辑:请在此处查看我关于如何开始生成 .xcframeworks 的回答,这是框架作者的长期解决方案
例如,假设我在我的通用框架所在的工作目录中的终端中some_framework.framework
。如果我想在实际的物理设备上运行,我执行以下命令:
lipo -thin arm64 some_framework.framework/some_framework -output some_framework
使用上述命令,您可以提取arm64
二进制文件。some_framework.framework/some_framework
然后,用新生成的arm64
唯一二进制文件替换当前
mv some_framework some_framework.framework
如果您有一个仅从 Objective-C 源代码构建的通用框架,那么您的工作就完成了。但是,如果您也有 swift 代码,那么您需要更新some_framework.framework/Modules/some_framework.swiftmodule
以使其不包含对非arm64
.
除了需要x86_64
. 我目前正在维护我的框架的两个版本,直到这个问题得到修复。每当我在模拟器和设备之间切换时,我只需切换项目中的哪个框架。