在设备上以 Release模式运行应用程序时出现错误: ExecutionEngineException - 在仅 aot 模式下运行时尝试 JIT 编译方法“AudioJack.ACRAudioJackReader:.ctor (bool)”。参见 https://developer.xamarin.com/guides/ios/advanced_topics/limitations/获取更多信息。
它出现在 Xamarin iOS 的最新更新之后。 在 Debug模式下在设备上工作正常。 还尝试禁用编译器优化 - 没有帮助。
我正在使用 iOS 绑定(bind)到 AudioJack 库,但构造函数导致了错误。
[BaseType(typeof(NSObject))]
interface ACRAudioJackReader
{
[ExportAttribute("initWithMute:")]
IntPtr Constructor(bool isMute);
}
查看了所有与此问题相关的文章,但尚未找到解决方案。
有人知道如何修复它吗?
谢谢
最佳答案
长话短说
您需要在有问题的绑定(bind)项目中打开启用优化选项。
我遇到了与您类似的问题。
我在 Mac 上工作,从 Xamarin Studio 切换到最新的 Visual Studio for Mac。更新后应用程序在 iOS 设备上停止工作,但有趣的是,模拟器没问题。
错误发生在运行时,当时我想从这个有问题的库中初始化对象。我的应用程序有几个 iOS 绑定(bind)项目,但只有一个导致此类问题。我不想在其他项目中引入任何不必要的更改。
最后我发现,在我的情况下,为包含这个有问题的库的绑定(bind)项目打开启用优化 就足够了。应用程序的项目(这是唯一使用此库的项目)未更改。
因为我知道我的应用程序在更新之前可以正常工作,所以我认为这是一个 Xamarin 问题,所以我只专注于寻找解决方案,而不是寻找原因。
您可以在以下位置找到此选项:
项目选项> 构建> 编译器> 启用优化
关于ios - (Xamarin iOS) : ExecutionEngineException - Attempting to JIT compile method while running in aot-only mode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44331069/