Xamarin.Forms.GoogleMaps无法在IOS上启动,UpdateIsShowingUser中断

问题描述

[Xamarin.Forms.GoogleMaps] [1]部署到IOS(在我的情况下为iPhone物理设备)时失败。 该应用正在尝试启动,但随后崩溃到操作系统。 Visual Studio无法捕捉到断点。

输出窗口中,我得到这个:

已加载的程序集: /private/var/mobile/Containers/Data/Application/BE8F87C7-8FB5-4F76-9674-03D160780B77/Documents/XFGoogleMapSampleiOS.content/Xamarin.Forms.Xaml.dll [外部]已加载的程序集: /private/var/containers/Bundle/Application/F4979BA1-4F02-476D-BB93-7A84EE654A10/XFGoogleMapSampleiOS.app/System.Xml.dll [外部]线程已启动:#4线程已启动:#5线程已启动:#6线程已启动:#7已解决“ BasicMapPage.xaml.cs:139,1”处的暂挂断点 使XFGoogleMapSample.BasicMapPage。 b__0_15无效(对象发送者, Xamarin.Forms.GoogleMaps.CameraChangedEventArgs args)[0x00008]。 加载的程序集: /private/var/containers/Bundle/Application/F4979BA1-4F02-476D-BB93-7A84EE654A10/XFGoogleMapSampleiOS.app/System.Net.Http.dll [外部]已加载的程序集: /private/var/containers/Bundle/Application/F4979BA1-4F02-476D-BB93-7A84EE654A10/XFGoogleMapSampleiOS.app/System.Drawing.Common.dll [外部] [0:]发生错误:“对象引用未设置为 对象的实例。”。呼叫栈:“ at Xamarin.Forms.GoogleMaps.iOS.MapRenderer.UpdateIsShowingUser (System.Nullable 1[T] initialMyLocationButtonEnabled) <0x119727660 + 0x0007a> in <cae073484d4d4db5b36708f421f24080>:0 at Xamarin.Forms.GoogleMaps.iOS.MapRenderer.OnElementChanged (Xamarin.Forms.Platform.iOS.ElementChangedEventArgs 1 [TElement] e) 在:0处 Xamarin.Forms.Platform.iOS.VisualElementRenderer 1[TElement].SetElement (TElement element) [0x00134] in D:\a\1\s\Xamarin.Forms.Platform.iOS\VisualElementRenderer.cs:193 at Xamarin.Forms.Platform.iOS.VisualElementRenderer 1 [TElement] .Xamarin.Forms.Platform.iOS.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement元素)在[0x00000]中 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ VisualElementRenderer.cs:141在 Xamarin.Forms.Platform.iOS.Platform.CreateRenderer (Xamarin.Forms.VisualElement元素)在[0x00014]中 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ Platform.cs:199 at Xamarin.Forms.Platform.iOS.VisualElementPackager.OnChildAdded (Xamarin.Forms.VisualElement视图)在[0x0004f]中 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ VisualElementPackager.cs:79 at Xamarin.Forms.Platform.iOS.VisualElementPackager.Load()[0x0001e]在 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ VisualElementPackager.cs:46 at Xamarin.Forms.Platform.iOS.VisualElementRenderer 1[TElement].SetElement (TElement element) [0x000f0] in D:\a\1\s\Xamarin.Forms.Platform.iOS\VisualElementRenderer.cs:180 at Xamarin.Forms.Platform.iOS.VisualElementRenderer 1 [TElement] .Xamarin.Forms.Platform.iOS.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement元素)在[0x00000]中 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ VisualElementRenderer.cs:141在 Xamarin.Forms.Platform.iOS.Platform.CreateRenderer (Xamarin.Forms.VisualElement元素)[0x00014]在 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ Platform.cs:199 at Xamarin.Forms.Platform.iOS.VisualElementPackager.OnChildAdded (Xamarin.Forms.VisualElement视图)在[0x0004f]中 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ VisualElementPackager.cs:79 at Xamarin.Forms.Platform.iOS.VisualElementPackager.Load()[0x0001e]在 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ VisualElementPackager.cs:46 at Xamarin.Forms.Platform.iOS.PageRenderer.ViewDidLoad()[0x00086]在 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ Renderers \ PageRenderer.cs:123
在(包装器托管到本地) ObjCRuntime.Messaging.IntPtr_objc_msgSendSuper(intptr,intptr)在 UIKit.UIViewController.get_View()[0x0002a]在 /Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/src/Xamarin.iOS/UIKit/UIViewController.g.cs:3267 在Xamarin.Forms.Platform.iOS.PageRenderer.get_NativeView()[0x00000] 在D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ Renderers \ PageRenderer.cs:41
在Xamarin.Forms.Platform.iOS.PageRenderer.SetElement (Xamarin.Forms.VisualElement元素)[0x0004f]在 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ Renderers \ PageRenderer.cs:56 at Xamarin.Forms.Platform.iOS.Platform.CreateRenderer (Xamarin.Forms.VisualElement元素)[0x00014]在 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ Platform.cs:199 at Xamarin.Forms.Platform.iOS.NavigationRenderer.CreateViewControllerForPage (Xamarin.Forms.Page页面)在[0x00008]中 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ Renderers \ NavigationRenderer.cs:357 在Xamarin.Forms.Platform.iOS.NavigationRenderer.OnPushAsync (Xamarin.Forms.Page页面,System.Boolean动画)在[0x0001d]中 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ Renderers \ NavigationRenderer.cs:344 在Xamarin.Forms.Platform.iOS.NavigationRenderer.b__42_0 (Xamarin.Forms.Page p)[0x00024]在 D:\ a \ 1 \ s \ Xamarin.Forms.Platform.iOS \ Renderers \ NavigationRenderer.cs:228 在 System.Runtime.CompilerServices.AsyncmethodBuilderCore + c.b__7_0 (系统对象状态)在[0x00000]中 /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/src/Xamarin.iOS/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/AsyncmethodBuilder.cs:1021 在(包装委托调用).invoke_void_object(对象)在 Foundation.NSAsyncSynchronizationContextdispatcher.Apply()[0x00000] 在 /Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/src/Xamarin.iOS/Foundation/NSAction.cs:178

-从上一个引发异常的位置开始的堆栈跟踪---

at(包装器管理为本地) UIKit.UIApplication.UIApplicationMain(int,string [],intptr,intptr)在 UIKit.UIApplication.Main(System.String [] args,system.intPtr 主体,system.intPtr委托)[0x00005]在 /Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/src/Xamarin.iOS/UIKit/UIApplication.cs:86 在UIKit.UIApplication.Main(System.String [] args,System.String PrincipalClassName,System.String委托ClassName)[0x0000e]在 /Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/src/Xamarin.iOS/UIKit/UIApplication.cs:65 在XFGoogleMapSample.iOS.Application.Main(System.String [] args) [0x00001]在 C:\ Projects \ Xamarin.Forms.GoogleMaps-master \ XFGoogleMapSample \ iOS \ Main.cs:17 在(包装器托管到本地) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object [],System.Exception&) 在System.Reflection.RuntimeMethodInfo.Invoke(System.Object obj, System.Reflection.BindingFlags invokeAttr,System.Reflection.Binder 活页夹,System.Object []参数,System.Globalization.CultureInfo 文化)[0x0006a]在 /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/src/Xamarin.iOS/mcs/class/corlib/System.Reflection/RuntimeMethodInfo.cs:395 “该应用已终止。

首先,我尝试了本地项目。之后,我决定从git hub获取googlemaps libray的源代码并对其进行调试。 它在 MapRenderer.cs

中中断
        private void UpdateIsShowingUser(bool? initialMyLocationButtonEnabled = null)
        {
#pragma warning disable 618
            ((MapView)Control).MyLocationEnabled = ((Map)Element).IsShowingUser;
            ((MapView)Control).Settings.MyLocationButton = initialMyLocationButtonEnabled ?? ((Map)Element).IsShowingUser;
#pragma warning restore 618
        }

显然,本地Google.Maps.MapView.Settings在此处为null。我不确定我到底在做什么错,但是同一个库在Andoid版本中是完美的。仅在IOS中失败。

我已经在Google Developer Console上设置了API密钥和API。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)