18

在基于苹果 Silicon 的机器上使用 Interface builder 时,我当前的项目会引发 IBDesignable 错误。我尝试排除 arm64 架构进行调试,以及我在互联网上找到的一些其他提示,但根本没有成功。

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

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

错误:

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

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

4

3 回答 3

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 团队!

于 2021-02-05T14:38:13.120 回答
5

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

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

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

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

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

  • 在情节提要中,您需要通过选择编辑器->刷新所有视图来触发重建。

项目设置截图

于 2020-12-21T13:27:45.233 回答
0

更新

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

在此处输入图像描述

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

于 2021-09-22T11:52:51.903 回答