12

我正在尝试使用新的 Mac Catalyst 在我的 Mac 上构建我的 iOS/iPadOS 项目。当我在 iPhone 模拟器上构建它时,一切都很好,但是当我在我的 Mac 上构建它时,我得到了这个错误。

in /Users/nevin/Documents/[projectName]/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics(CLSInternalReport.o), building for Mac Catalyst, but linking in object file built for iOS Simulator, file '/Users/nevin/Documents/[projectName]/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics' for architecture x86_64

这发生在多个 pod 上,所以如果我删除 Crashlytics,另一个 pod 也会出现类似的错误。有人知道这是 Crashlytics 需要解决的问题,还是我可以在项目中解决的问题?

4

1 回答 1

2

Mac Catalyst 使用 x86_64,但使用 Mac Catalyst 的目标编译。

我有一个为 Mac Catalyst 编译的项目,您需要添加这些标志: https ://github.com/ezored/conan-darwin-toolchain/blob/stable/1.1.0/conanfile.py#L183-L188

如果您的框架不兼容,请不要在“General > Frameworks”中链接它,而是选择“iOS”而不是“macOS + iOS”。例子:

代码

在你的 swift 代码中添加 IF 代码来检查你的框架是否可以被导入和使用:

#if targetEnvironment(macCatalyst)
    print("UIKit running on macOS")
#else
    print("Your regular code")
#endif

有了这个,您可以使应用程序与 Mac Catalyst 兼容。当您的框架(如 Crashlytics)兼容时,再次检查“macOS + iOS”并删除对代码的检查。

另一种选择是为 Mac Catalyst 制作另一个目标并只为 Mac Catalyst 放置东西,但使用我的第一个选项,您可以毫无问题地构建。

如果你想用 C++ 代码制作支持 Mac Catalyst 的框架,你可以查看我的框架 ( https://github.com/ezored/ezored )。

于 2019-12-29T05:57:33.273 回答