我刚刚更新到 xcode 14,模拟器似乎无法与 Rosetta 一起运行来修复滚动滞后。 有人有可以帮助我的解决方案吗?谢谢你
更新:感谢大家的帮助 我们有 2 个解决方案:
Xcode 14.1 更新: 这些解决方案不再有效。所以现在不要更新,希望Apple尽快解决这个问题
Xcode 14.0 的解决方案(不适用于 Xcode 14.1 和 14.2)
打开终端并输入:
arch -x86_64 /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator
这迫使使用 Rosetta。
不支持也不应该需要在 Rosetta 下启动 Simulator.app。我不知道有任何问题需要这样做。
您可能想要在 Rosetta 中启动设备或在 Rosetta 中生成一些进程,例如:
xcrun simctl boot <UDID> --arch=x86_64
或
xcrun simctl spawn <UDID> --arch=x86_64 ...
此外,如果您的应用程序仅支持 x86_64,则它将在以 arm64 启动的 sim 中正常启动。
注意:编辑 Xcode.app 中的任何文件都会破坏其签名,这意味着更新将无法应用,这将触发 Xcode.app 的完整下载(在首次下载并未能应用增量更新之后)。如果您确实需要以 x86_64 启动 Simulator.app,请使用:
arch -x86_64 /path/to/Xcode.app/Contents/Developer/Applications/Simulator.app/MacOS/Simulator
或者甚至在 ~/.zshrc 中创建一个别名,这样你就可以运行
sim
:
alias sim='arch -x86_64 $(xcode-select -p)/Applications/Simulator.app/Contents/MacOS/Simulator'
AND 在 http://feedback.apple.com.
提交雷达报告,说明您为何需要这样做后续:感谢在我发布此文后提出有关 Simulator.app 作为 arm64 本机运行的 HID 问题的雷达的人。该问题已在 Xcode 14.1 中修复。
感谢上面詹姆斯的回答,我找到了一个临时解决方案。
向 Xcode.app 内的 Simulator.app、Simulator.app 内的
Contents
文件夹以及里面的 Info.plist
文件添加用户/系统权限,并通过添加以下键来修改此 Info.plist
:
Architecture priority
包含 1 项的数组(默认为 Intel(32 位))
Application requires native environment
以 NO 作为值的布尔值。
清理所有内容并重建/运行,它应该可以解决滚动滞后问题。
再次感谢 James Risner。
使用此属性列表键构建的应用程序启用LSRequiresNativeExecution,禁止在启动服务中使用 Rosetta。
苹果文档摘录:
...此密钥可防止系统使用 Rosetta 翻译进程在 Apple 芯片上执行通用应用程序的 Intel 部分。
如果将模拟器与 Rosetta 一起使用,请注意。模拟器存在已知问题,例如浮点异常不起作用。因此图形应用程序可能无法正常工作。
您可以使用以下命令强制在 Intel 模式下使用 Rosetta 启动模拟器:
arch -x86_64 /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator