编辑(2020/09/14):这似乎是一个 Xcode 错误,现在已从 Xcode 12 beta 6 修复。
我正在使用 Xcode 12 来构建一个静态库,对于 tvOS,Xcode 12 包括arm64
和arm64e
在单个 fat 库中。
同样,在为模拟器构建时,Xcode 12 将x86_64
和arm64
(Mac Apple Silicon)都包含在单个胖库中。
在这两种情况下,我都无法使用以下命令创建包含这些库的 XCFramework:
xcodebuild -create-xcframework -output A.xcframework" -library A.a
尝试这样做会导致错误
error: unable to find any architecture information in the binary at 'A.a'
输出lipo -info A.a
清楚地表明两种架构都存在(分别是arm64
+arm64e
和arm64
+ x86_64
),所以我不明白为什么xcodebuild
不能识别和处理它。
我还尝试将各个架构分别提取到两个瘦文件中(例如A-arm64.a
和A-arm64e.a
),然后使用这些文件创建 XCFramework,但这会导致不同的错误:
Both tvos-arm64e and tvos-arm64 represent two equivalent library definitions.
和
Both tvos-arm64-simulator and tvos-x86_64-simulator represent two equivalent library definitions.
我错过了什么吗?如何从胖库(或两个等效的瘦库)创建 XCFramework?