2017-02-14 54 views
3

我在SO和其他地方看到过有关这个错误的其他几篇文章(System.InvalidOperationException: You MUST call Xamarin.Forms.Init(); prior to using it. at Xamarin.Forms.Device.get_PlatformServices),但没有一篇关于我的特殊情况。Xamarin表单错误 - '您必须调用Xamarin.Forms.Init();在使用它之前' - TestFlight(iOS)only

我创建了一个适用于Android(模拟器和设备,包括通过Google Play分发时)的Xamarin.Forms应用程序,并且在iPhone模拟器上以及设置到iPhone时都能正常工作。当我说'运作良好'时,我的意思是'能够毫无错误地进入主页。'

但是,当我使用Ad-Hoc部署并将其上载到Apple以便它可以与TestFlight一起分发时,TestFlight下载的版本按预期显示启动屏幕,然后崩溃而不显示MainPage。在查看设备日志时,出现上述错误,并且在进行一些Internet研究时,很明显我的AppDelegate需要将global::Xamarin.Forms.Forms.Init();作为FinishedLaunching()方法中的第一行。

所以我去看看那个文件中的那个方法,然后看看它已经在那里了。这并不出乎意料,因为这款应用可以在SIM卡上运行,而在iPhone上直接从Visual Studio进行部署。

所以我的问题是'为什么Ad-Hoc部署在所有其他部署类型都不能运行时失败,我该如何解决这个问题并让应用程序以可运行的方式实际分发TestFlight?

回答

1

我能够通过将命令(global::Xamarin.Forms.Forms.Init();)放在iOS平台相关服务中的每个类的每个构造函数中来解决该问题。可能只有一个是真正必要的,但似乎没有任何问题导致过度部署该特定命令,并且在调用AppDelegate的FinishedLaunching()方法之前调用了多个服务的情况下,在第一个调用中似乎是必要的,根据环境和可能检查的其他变量,这可能会因程序流程而异。

相关问题