尝试JIT编译的iOS App Store ExecutionEngineException

时间:2015-01-24 07:53:54

标签: xamarin.ios xamarin app-store mvvm-light jit

我有一个非常尴尬的问题。我已经为iOS构建了我的应用程序并在所有模拟器上进行了测试,它运行正常。我已将它安装在设备(iPhone 6 plus)上,并且工作正常。但是,当我将其提交到应用程序商店时,反馈是它在所有设备上启动时崩溃。附加的崩溃日志显示此错误;

Unhandled Exception:
    System.ExecutionEngineException: Attempting to JIT compile method 'GalaSoft.MvvmLight.Messaging.Messenger:get_Default ()' while running with --aot-only. See http://docs.xamarin.com/ios/about/limitations for more information.

导致此错误的代码位于ViewWillAppear;

Messenger.Default.Register<LoggedInFailedMessage>(this, LoginFailed);
Messenger.Default.Register<LoggedInMessage>(this, LoggedIn);

下面的堆栈溢出线程似乎表明它可能是由使用值类型引起的,但我使用的是引用类型。

System.ExecutionEngineException: Attempting to JIT compile method only in Debug Mode on device (MonoTouch)

任何想法都将不胜感激!我不知道如果我在模拟器和设备上调试它们时它们可以测试这些错误,但是当苹果测试时它会失败。

1 个答案:

答案 0 :(得分:0)

大多数问题很久以前就已经解决了。确保 AppStore 版本(或您用于提交的版本)的选项与您正在测试的版本匹配(例如调试版本)。

请务必确保您提交的内容启用通用值类型共享选项开启。这将包括一些额外的代码,以确保所有值类型代码路径变体在运行时可用。

请注意,此设置默认情况下应为开启。确保您的调试/发布设置主要(调试内容除外)相同,这仍然是一个很好的做法。否则,您冒着在本地测试不同代码的风险,而不是您提交给商店的代码。