iOS Realm:文件不符合MH_MAGIC[_64]、fat文件,但缺少兼容架构(已有'x86_64, i386',需要'x86_64')

8

我已将mac系统更新至11.6版本,xcode更新至13.0版本。Realm无法编译,因此我使用carthage工具将其更新至v10.15.1版本。现在,在应用程序启动后,我遇到了如下的运行时错误:

  Library not loaded: @rpath/Realm.framework/Realm
  Referenced from: /Users/username/Library/Developer/Xcode/DerivedData/appname/Build/Products/Debug-iphonesimulator/RealmSwift.framework/RealmSwift
  Reason: tried: '/Users/username/Library/Developer/Xcode/DerivedData/appname/Build/Products/Debug-iphonesimulator/Realm.framework/Realm' (file does not start with MH_MAGIC[_64], file does not start with MH_MAGIC[_64], fat file, but missing compatible architecture (have 'x86_64,i386', need 'x86_64')), '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift/Realm.framework/Realm' (no such file), '/usr/lib/swift/Realm.framework/Realm' (no such file), '/Users/username/Library/Developer/CoreSimulator/Devices/33E61712-D8A9-4D7E-A260-5C096BE08A82/data/Containers/Bundle/Application/AC700919-F431-446F-8BEF-FF8D8E5F5BF9/appname.a

我想关键部分是 file does not start with MH_MAGIC[_64],但我找不到与错误相关的有用信息。我尝试了嵌入库和关闭嵌入,但没有影响。

你确定你的XCode是10.13吗?这是一个较旧的版本 - 实际上,我认为没有10.13;版本从10.1、10.2、10.3,然后到11。 - Jay
是的,打错了,应该是13.0。 - Simon Moshenko
你安装了任何类型的病毒防护软件,比如 Avast 吗?你使用的是免费的开发者账户吗?你使用了 Cocoapods 吗?你在 XCode 中下载/更新/选择了你的开发者证书吗? - Jay
@Jay,我没有安装杀毒软件,这会有什么影响吗?我使用的是付费开发者账户。我还使用了Carthage。是的,我做过了。 - Simon Moshenko
你能在问题中包含你的Cartfile吗?为了测试,我建议尝试使用CocoaPods。 - Jay
奇怪,lipo -info /Users/username/Library/Developer/Xcode/DerivedData/appname/Build/Products/Debug-iphonesimulator/Realm.framework/Realm 的输出是什么? - msbit
3个回答

5
  • Realm有三个目标与Carthage一起构建(Realm、Realm iOS Static和RealmSwift)
  • XCode 13弃用了手动设置目标构建顺序的设置,导致前两个目标的构建顺序不确定(第三个目标总是最后一个,因为它依赖于第一个目标)。顺序和其改变的频率似乎是随机的(可能取决于具体的XCode版本)
  • 当'Realm'在'Realm iOS Static'之前构建时,fat framework将替换xcframework中的那个,从而导致该错误。在另一种情况下,正确的框架被建立在第二个位置并覆盖错误的框架。
  • 我想解决方案(除了升级Realm)将是从项目中删除目标'Realm iOS Static',但这并不容易通过Carthage实现,除非Fork Realm。

0

最新版本的 Realm 是 v10.32.0xcode 14.1 也已经发布。

您需要更新您的工具集。


0
最新的升级版Realm版本10.32.0与XCode 13.1及以上版本兼容。如果您使用旧版构建系统,请将其迁移到最新版,并在重新构建代码之前清理可派生文件夹。大多数情况下,可派生文件夹会跟踪旧版本文件并在更新项目工具后产生冲突。希望这能帮到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接