Xcode 12 Apple M1 arm64 - 可设计的错误:“错误的架构”

ble*_*lez 16 architecture interface-builder silicon xcode12

我当前的项目在基于 Apple Silicon 的机器上使用 Interface builder 时会抛出 IBDesignable 错误。

该项目在模拟器和真实设备上也能很好地构建,但界面构建器似乎无法在基于 arm64 的系统上正确绘制那些 IB Designables……很奇怪。

希望有人知道要设置哪个标志来纠正这个错误..bc 这让我发疯了:/

错误:

"dlopen(MYAPP.app, 1): no suitable image found. Did find MYAPP.app: mach-o, but wrong architecture"
Run Code Online (Sandbox Code Playgroud)

希望你们能帮助我,我知道这是早期采用者问题的一部分,但这必须以某种方式解决!?

dnp*_*npp 8

同样在这里。M1 MacBook Air 上的 Xcode 12.4、macOS 11.2。

通常,InterfaceBuilder 尝试从以下位置查找二进制文件: ~/Library/Developer/Xcode/DerivedData/[...]/Build/Products/${Configuration}-iphonesimulator

但在 M1 Mac 上,InterfaceBuilder 可以在这里找到: ~/Library/Developer/Xcode/DerivedData/[...]/Build/Products/${Configuration}-iphoneos

我想这是Xcode的错误...

如您所知,${Configuration}-iphoneos适用于 iOS 设备。不适用于模拟器。而InterfaceBuilder 确实需要iOS 模拟器的工件。

这是简单但不太好的解决方案:

  1. 为一些 iOS 模拟器构建
  2. cd ~/Library/Developer/Xcode/DerivedData/[...]/Build/Products/
  3. cp -r ${Configuration}-iphonesimulator ${Configuration}-iphoneos
  4. 重启Xcode

最后我可以修复@IBDesignable预览。但我不能非常推荐这个解决方案......

(以下补充)

我写了解决方法 shellscript:https ://gist.github.com/dnpp73/4f9c12ad96909355a39b99e22e42eb14

(下面还有一个)

似乎固定在 Xcode 13 beta 上。Apple Interface Builder 团队干得好!


dea*_*rne 5

这是我在我的项目中修复它的方法。

  • 我所有的 IBDesignable 视图都在它们自己的框架中,没有其他依赖项(我已经有了这个设置)

  • 在构建设置中,将调试构建的“仅构建活动架构”更改为“否”。

  • 在构建设置中,更改“支持的平台”以包含“macxos”以及 iOS 默认值,用于调试构建

  • 令人沮丧的是,即使我对带有 IBDesignable 视图的框架没有任何依赖关系,我也遇到了一些与应用程序依赖关系相关的错误 - 我通过以下答案修复了这些错误:https : //stackoverflow.com/a/42765750它为我的 cocoapod 依赖禁用了“ONLY_ACTIVE_ARCH”。

  • 在您的故事板中,您需要通过选择 Editor->Refresh all views 来触发重建。

项目设置截图


Oly*_*tre 3

更新

XCode 13 解决了 M1 上的问题。无需在构建设置中进行额外设置。

在此输入图像描述

这些解决方案非常老套,也可能会干扰项目的健康。我建议任何尝试过这些解决方案的人在被遗忘之前尽快放弃任何更改。

  • 我在 Xcode 13 中仍然遇到奇怪的错误。新问题?file:///Users/shimak/Documents/Experiment/B/B/Base.lproj/Main.storyboard:错误:IB Designables:无法渲染和更新 ViewController 的自动布局状态(BYZ-38-t0r):dlopen( B.app,0x0001):尝试:'/B'(没有这样的文件),'/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime /Contents/Resources/RuntimeRootB.app'(没有这样的文件),'B.app'(mach-o 文件,但是不兼容的体系结构(有'x86_64',需要'arm64')),'/usr/lib/ B'(没有这样的文件) (5认同)