(Xamarin iOS):ExecutionEngineException - 在仅 aot 模式下运行时尝试 JIT 编译方法
Posted
技术标签:
【中文标题】(Xamarin iOS):ExecutionEngineException - 在仅 aot 模式下运行时尝试 JIT 编译方法【英文标题】:(Xamarin iOS): ExecutionEngineException - Attempting to JIT compile method while running in aot-only mode 【发布时间】:2017-06-02 14:13:38 【问题描述】:在设备上以发布模式运行应用程序时出现错误: ExecutionEngineException - 在仅 aot 模式下运行时尝试 JIT 编译方法“AudioJack.ACRAudioJackReader:.ctor (bool)”。请参阅https://developer.xamarin.com/guides/ios/advanced_topics/limitations/ 了解更多信息。
它出现在 Xamarin iOS 的最新更新之后。 在调试模式下在设备上工作正常。 还尝试禁用编译器优化 - 没有帮助。
我正在使用 iOS 绑定到 AudioJack 库,构造函数导致错误。
[BaseType(typeof(NSObject))]
interface ACRAudioJackReader
[ExportAttribute("initWithMute:")]
IntPtr Constructor(bool isMute);
查看了所有与此问题相关的文章,但尚未找到解决方案。
有人知道如何修复它吗?
谢谢
【问题讨论】:
【参考方案1】:TL;DR
您需要在有问题的绑定项目中打开启用优化选项。
我遇到了和你类似的问题。
我在 Mac 上工作并从 Xamarin Studio 切换到最新的 Visual Studio for Mac。更新后应用停止在 iOS 设备上运行,但有趣的是,模拟器很好。
当我想从这个有问题的库中初始化对象时,在运行时发生了错误。我的应用程序很少有 iOS 绑定项目,但只有一个导致了此类问题。我不想在其他项目中引入任何不必要的更改。
最后我发现,在我的情况下,为包含这个有问题的库的绑定项目打开 启用优化 就足够了。应用程序的项目(这是唯一使用此库的项目)没有更改。
因为我知道我的应用在更新之前就可以运行,所以我认为这是一个 Xamarin 问题,所以我只专注于寻找解决方案,而不是寻找原因。
您可以在以下位置找到此选项:
项目选项 > 构建 > 编译器 > 启用优化
【讨论】:
【参考方案2】:看起来这已作为错误提交,应该会在下周的版本中修复。
https://bugzilla.xamarin.com/show_bug.cgi?id=56962
【讨论】:
以上是关于(Xamarin iOS):ExecutionEngineException - 在仅 aot 模式下运行时尝试 JIT 编译方法的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin SQLite教程Xamarin.iOS项目添加引用
Xamarin.Forms 是 Xamarin.Android、Xamarin.IoS 和 Xamarin.Win 的简单总和吗?