Xamarin形式的错误 - “您必须调用Xamarin.Forms.Init();之前,使用了” - TestFlight(IOS)只

问题描述 投票:3回答:2

我已经看到了SO和关于此错误(System.InvalidOperationException: You MUST call Xamarin.Forms.Init(); prior to using it. at Xamarin.Forms.Device.get_PlatformServices)其他地方的几个其他职位,但他们没有摆脱对我的特殊情况任何光线。

我创建了一个应用程序Xamarin.Forms在Android(仿真器和设备,通过谷歌Play发布时含)的伟大工程,并能正常工作都在iPhone模拟器,当供应给iPhone。当我说“正常工作”,我的意思是“能得到没有错误的MainPage”。

然而,当我使用特设的部署,并把它上传到苹果公司,因此它可以与TestFlight分布中,TestFlight下载的版本显示为预期的启动画面,然后崩溃而没有显示的MainPage。在看设备日志,出现上述错误,并且在做一些互联网研究,它已经成为明显的是,我的AppDelegate需要有global::Xamarin.Forms.Forms.Init();作为FinishedLaunching()方法的第一行。

所以我去看看,并把该行该方法在该文件中,你瞧,它已经存在。这并不意外,鉴于应用工作的SIM卡,就当从Visual Studio直接部署iPhone。

所以我的问题是:“为什么当所有其他部署类型不这样做,我能做些什么来解决这个问题,并得到了应用程序在一个可运行的方式通过TestFlight实际分发特设部署失败?”

ios xamarin.forms testflight
2个回答
1
投票

我能够把命令(global::Xamarin.Forms.Forms.Init();)第一件事就是在每一个构造函数中的每一个类中的iOS平台特定的服务,以解决该问题。这有可能是只有一个是真正必要的,但它似乎并没有引起任何问题,过度部署特定的命令,并在被称为AppDelegate中的FinishedLaunching()方法之前服务的一个以上的被调用时,该案件似乎是必要的,第一个被调用,这可以通过程序流,有可能会发生变化取决于环境和可以检查其他变量。


0
投票

在.IOS项目确保行“全球:: Xamarin.Forms.Forms.Init();”是在“AppDelegate.cs”文件事件“公众覆盖布尔FinishedLaunching(UIApplication的应用程序,NSDictionary的选项)”的第一行。

在.UWP VB工程确保行“Xamarin.Forms.Forms.Init(E)”是“受保护的覆盖子OnLaunched(E作为Windows.ApplicationModel.Activation.LaunchActivatedEventArgs行“的AddHandler rootFrame.NavigationFailed,AddressOf OnNavigationFailed”后)”事件‘App.Xaml.vb’文件。

在.Android项目 “全球:: Xamarin.Forms.Forms.Init(这一点,savedInstanceState);”是线后 “base.OnCreate(savedInstanceState);”在“保护覆盖无效的onCreate(捆绑savedInstanceState)”事件。

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.