为 iOS 模拟器构建,但在为 iOS 构建的目标文件中链接,用于架构 arm64

Posted

技术标签:

【中文标题】为 iOS 模拟器构建,但在为 iOS 构建的目标文件中链接,用于架构 arm64【英文标题】:building for iOS Simulator, but linking in object file built for iOS, for architecture arm64 【发布时间】:2020-10-01 05:57:00 【问题描述】:

收到此错误。

Realm/core/librealmcore-ios.a(array_binary.o),

Swift iOS 14 xcode 12.0.1

我尝试过的:

更新到最新领域 不包括 arm64 架构

似乎没有任何效果 似乎领域也有问题:https://realm.io/docs/swift/latest/#cocoapods

“Realm 5.x 和 Xcode 12 的多种组合可能不支持 Arm64 模拟器架构。如果您在使用最新版本的 Realm 时遇到与架构相关的构建错误,请尝试以下解决方法。”

【问题讨论】:

您使用的是哪个版本的 cocoapods? 不确定问题中的链接是做什么用的,但我刚刚创建了一个新项目,设置与您相同,使用 Cocoapods 安装 RealmSwift,它已启动并运行。你能包含你的 podfile 吗? 【参考方案1】:

使用

pod 'RealmSwift', '~> 10.5.0'

他们已经添加了对 xcframework 的支持。

【讨论】:

【参考方案2】:

这不是一个正确的解决方法,但对我的项目有用的是:

遵循以下提供的建议:https://realm.io/docs/swift/latest/#cocoapods 安装 cocoapods 1.10.0.rc1 在 cocoapods 项目中将 BuildActiveArchitectureOnly 设置为 Yes

现在,当您为您的设备构建应用程序或存档时,请确保将其设置回No,或者为此使用不同的配置(例如:我将Debug 设置为Yes , ReleaseNo)。

【讨论】:

感谢 Sander,这看起来是一个不错的尝试,当我试一试时会告诉你【参考方案3】:

我做的是

在构建设置中将 BuildActiveArchitectureOnly 设置为 Yes。

installer.pods_project.targets.each do |target|
      
      target.build_configurations.each do |config|
        config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64'
      end
    end

已将我的 Realm 更新到最新版本。

【讨论】:

以上是关于为 iOS 模拟器构建,但在为 iOS 构建的目标文件中链接,用于架构 arm64的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 12 beta 4:为 iOS 模拟器构建,但在为独立构建的目标文件中链接

Siphon 为 iOS 模拟器构建,但在设备构建时出现链接器错误

为 iOS 模拟器目标构建时忽略 .metal 文件

Mac Catalyst 的问题 - 链接为 iOS 模拟器构建的目标文件

在为 iOS 编译语音演示应用程序时,是不是有人遇到 Xcode 构建错误?

iOS - 无法在设备上构建,但在 Xcode 4.6 上构建模拟器