如何在M1 mac上构建支持Intel mac上的iOS模拟器的静态库?

Roo*_*kie 6 xcode universal-binary ios apple-silicon apple-m1

我有一个胖iOS库,它支持真实设备(arm64...)和Intel Mac(x86_64)的iOS模拟器。但当我改用 M1 mac 时,事情就变得困难了。

如果我使用旧的库,我将失败并显示错误xxx.a (xxx.o) building for iOS Simulator, but linking in object file built for iOS, file 'xxx' for architecture arm64: . 看来我必须构建一个 xcframework,其中包含用于不同目的地的二进制文件。

所以我尝试构建不同的切片并希望将它们捆绑为 xcframework。但我最终发现我不知道如何用 M1 Mac 构建 x86_64 切片。

我的问题是

  • 如何在M1 mac上构建支持Intel Mac的iOS模拟器的静态库?
  • 还是我一开始的想法就错了?

Roo*_*kie 4

我无法在 M1 Mac 上获取 x86_64 切片的原因是我的构建设置中有一个旧选项:有效架构。

删除此配置并运行标准流程。然后你就可以顺利得到包含x86_64架构的库了。

xcodebuild archive --destination="generic/platform=iOS Simulator" ...
Run Code Online (Sandbox Code Playgroud)

如果您的库代码没有组织为 Xcode 项目,而是在下面使用 clang 工具链。你可以参考这个链接。简而言之,以类似于arm64-apple-ios14.3-simulator的格式指定目标