【问题标题】:Adding fat library to XCFramework not working in Xcode 12将胖库添加到 XCFramework 在 Xcode 12 中不起作用
【发布时间】:2020-12-06 23:46:37
【问题描述】:

编辑 (2020/09/14):这似乎是一个 Xcode 错误,现已在 Xcode 12 beta 6 中修复。

我正在使用 Xcode 12 构建一个静态库,对于 tvOS,Xcode 12 在单个 fat 库中包含 arm64arm64e

同样,在为模拟器构建时,Xcode 12 在单个 fat 库中包含 x86_64arm64 (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 + arm64earm64 + x86_64,分别),所以我不明白为什么 xcodebuild 无法识别和处理它。

我还尝试将各个架构分别提取到两个瘦文件中(例如A-arm64.aA-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?

【问题讨论】:

  • AFAICT xcodebuild -create-xcframework 具有每个平台支持的架构的硬编码列表,该列表未在 Xcode 12 中更新。当仅使用 Xcode 11 支持的架构时,它对我来说很好,但将 arm64 添加到模拟器库破坏它并给出此错误。
  • 看看这可能对你有帮助github.com/bielikb/xcframeworks
  • 这似乎是一个 Xcode 错误,现在已在 Xcode 12 beta 6 中修复。
  • 目前有更新吗?尝试为 sim64/simx86/device64 创建 xcframework 时遇到同样的问题 结果 ios-x86_64-simulator 和 ios-arm64-simulator 代表两个等效的库定义。
  • @SergeyBrazhnik 创建两个独立的库:一个组合(胖)sim64/simx86,以及一个单独的 device64 库。然后将它们添加到 XCFramework。

标签: xcode xcode12 xcframework apple-silicon


【解决方案1】:

这似乎是一个 Xcode 错误,现已在 Xcode 12 beta 6 中修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2013-10-01
    • 2022-11-21
    • 2020-10-27
    • 1970-01-01
    • 2021-09-03
    相关资源
    最近更新 更多