2017-02-14 53 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()方法之前調用了多個服務的情況下,在第一個調用中似乎是必要的,根據環境和可能檢查的其他變量,這可能會因程序流程而異。

相關問題