Xcode12AppleM1arm64-可设计的错误:“错误的架构”

我当前的项目在基于 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"

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

回答

同样在这里。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 团队干得好!


回答

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

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

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

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

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

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


以上是Xcode12AppleM1arm64-可设计的错误:“错误的架构”的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>