(Xamarin iOS):ExecutionEngineException - 在仅以aot模式运行时尝试JIT编译方法

时间:2017-06-02 14:13:38

标签: ios xamarin.ios xamarin.forms

在设备上以发布模式运行应用时出现错误: 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);
}

检查了与此问题相关的所有文章,但尚未找到解决方案。

有人知道如何修复它吗?

谢谢

2 个答案:

答案 0 :(得分:1)

<强> TL; DR

您需要在有问题的绑定项目中启用启用优化选项。

我和你的问题类似。

我在Mac上工作并从 Xamarin Studio 切换到最新的 Visual Studio for Mac 。更新应用程序停止在iOS设备上工作,但有趣的是,模拟器很好。

当我想从这个有问题的库初始化对象时,在运行时发生错误。我的应用程序有很少的iOS绑定项目,但只有一个导致了这样的问题。我不想在其他项目中引入任何不必要的更改。

最后我发现在我的情况下,为包含这个有问题的库的绑定项目打开启用优化就足够了。应用程序的项目(这是唯一使用此库的项目)尚未更改。

因为我知道我的应用程序在更新之前正在运行,所以我认为这是一个 Xamarin 问题,因此我只关注寻找解决方案,而不是理由。

您可以在以下网址找到此选项:

项目选项&gt; 构建&gt; 编译器&gt; 启用优化

Screenshot for Enable optimizations in Visual Studio for Mac

答案 1 :(得分:0)

看起来这已经作为一个bug提交,并且应该在下周发布的版本中修复。

map