Xamarin Forms/Android地图应用程序在模拟器上运行,但在物理设备上崩溃

问题描述:

我正在尝试使用Xamarin的Xamarin.Forms选项创建一个简单的地图应用程序,目前为止只有Android版本(目前还无法访问iOS的Mac)。我可以在模拟器上运行该应用程序。但是当我将其部署到我的实体Android平板电脑(Nexus 7 w/5.0.1)时,该应用程序在显示地图时崩溃。我甚至将它打包并让一位朋友将其部署到他们的新三星手机中,并且它也在那里崩溃。Xamarin Forms/Android地图应用程序在模拟器上运行,但在物理设备上崩溃

代码非常简单。下面是在共享码ContentPage类整个主方法(通过ArcGIS SDK只支持共享代码的方法):

InitializeComponent(); 

myMap = new Map(Basemap.CreateImagery()); 

// MyMapView is in the XAML markup 
MyMapView.Map = myMap; 

的应用程序崩溃与“不幸的是(应用程序名称)已停止”。在Visual Studio中,输出包括:

Java.Lang.IllegalArgumentException: No configs match configSpec 

05-16 10:24:24.083 E/AndroidRuntime(24893): FATAL EXCEPTION: GLThread 1373 
05-16 10:24:24.083 E/AndroidRuntime(24893): Process: ArcGisMapTest.Droid, PID: 24893 
05-16 10:24:24.083 E/AndroidRuntime(24893): java.lang.IllegalArgumentException: No configs match configSpec 
05-16 10:24:24.083 E/AndroidRuntime(24893): at android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:858) 
05-16 10:24:24.083 E/AndroidRuntime(24893): at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1023) 
05-16 10:24:24.083 E/AndroidRuntime(24893): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1400) 
05-16 10:24:24.083 E/AndroidRuntime(24893): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239) 

基于configSpec错误消息的其他在线帖子,这似乎是OpenGL问题。但物理设备似乎支持所需的OpenGL ES 2.0。我也能运行一个小样本的应用程序 https://developer.xamarin.com/api/type/Xamarin.Forms.OpenGLView/

我也在模拟器和设备上运行ESRI Xamarin.Forms示例和Xamarin.Android示例,结果相同。任何想法在这里引起?

+0

在哪个设备上测试它?你声明该设备似乎支持ogl 2.0,但没有该设备的模型,它是无法验证的。 – Gusman

+0

本地平板电脑是一个华硕Nexus 7(2012),现在运行5.0.1。还在华硕Nexus 7(2013)和不到三岁的三星手机(没有手机/型号)上进行测试。我的理解是,自从Android 2以来,Open GL ES 2.0得到了支持。 –

+0

这取决于设备,但是,嘿,我使用完全相同的设备(nexus 7 2013)进行调试,现在我正在使用地图和ogl2。 ..真的很奇怪。尝试从.droid项目中删除Xamarin.Forms.Maps包和Xamarin.GooglePlayServices.Maps包,清理解决方案,从项目中删除bin和obj文件夹,再次添加包并重新编译,与这些奇怪的事情错误与Xamarin清理一切有助于。 – Gusman

如果这是一个opengl错误,那么可能检查设备上的开发人员选项,并确保在那里启用opengl 2.0。

+0

感谢您的建议。我没有在设备上的开发人员选项中看到有关OpenGL的任何特定内容,除了“启用OpenGL跟踪”,我已将其设置为Logcat,但没有发现任何有用的东西。我试过了“强制GPU渲染”选项,但没有成功。 –

+0

我最终购买了一款新的Android平板电脑,并且(稍微更新的版本)Esri API在其上运行。我会得出结论,旧的Asus Nexus 7 2012不支持OpenGL ES 2,或者在设备或API或软件包中配置不正确的东西。 –