2016-05-31 7 views
1

Ich versuche, eine einfache Karte App mit dem ArcGIS Runtime SDK für Xamarin, mit der Option Xamarin.Forms, bisher nur mit der Android-Version zu erstellen (habe noch keinen Zugang zu einem Mac für iOS). Ich kann die App problemlos auf einem Emulator ausführen. Aber wenn ich es auf meinem physischen Android-Tablet (Nexus 7 w/5.0.1) bereitstellen, stürzt die App beim Anzeigen der Karte ab. Ich habe es sogar verpackt und ein Freund hat es auf ihrem neuen Samsung-Handy bereitstellen und es stürzt dort auch ab.Xamarin Forms/Android Karte App läuft auf Emulator, stürzt aber auf dem physischen Gerät

Der Code ist extrem einfach. Hier ist das gesamte Hauptverfahren in der gemeinsamen genutzten Code Content Klasse (die ArcGIS SDK unterstützt nur den gemeinsamen Code-Ansatz):

InitializeComponent(); 

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

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

Die App stürzt mit dem „Leider (App-Namen) hat aufgehört“. In Visual Studio, enthält die Ausgabe folgendermaßen aus:

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) 

Basierend auf anderen Online-Beiträgen für die configSpec Fehlermeldung, das ein OpenGL Problem zu sein scheint. Aber die physischen Geräte scheinen das erforderliche OpenGL ES 2.0 zu unterstützen. Ich bin auch in der Lage bei https://developer.xamarin.com/api/type/Xamarin.Forms.OpenGLView/

Ich habe auch laufen sowohl die ESRI Xamarin.Forms Proben und die Xamarin.Android Proben auf dem Emulator und Vorrichtungen, die eine kleine Anwendung mit dem Beispielcode auszuführen, mit dem gleichen Ergebnis. Irgendwelche Ideen, um hier zu verursachen?

+0

In welchem ​​Gerät testen Sie es? Sie sagen, das Gerät scheint Ogl 2.0 zu unterstützen, aber ohne das Modell des Geräts ist es nicht verifizierbar. – Gusman

+0

Lokales Tablet ist ein Asus Nexus 7 (2012), jetzt läuft 5.0.1. Getestet wurde auch auf einem Asus Nexus 7 (2013) und einem weniger als ein Jahr alten Samsung Handy (habe kein Handy/Modell). Mein Verständnis ist, dass Open GL ES 2.0 seit Android 2 unterstützt wird. –

+0

Es hängt vom Gerät ab, aber hey, ich benutze genau das gleiche Gerät (nexus 7 2013) zum Debuggen und ich benutze gerade die Maps und ogl2. .. da ist etwas wirklich komisches. Versuchen Sie, das Xamarin.Forms.Maps-Paket und das Xamarin.GooglePlayServices.Maps-Paket aus dem .droid-Projekt zu entfernen, die Lösung zu bereinigen, die Ordner bin und obj aus dem Projekt zu löschen, die Pakete erneut hinzuzufügen und erneut zu kompilieren, manchmal mit diesen seltsamen Bugs mit Xamarin Reinigung hilft alles. – Gusman

Antwort

1

Wenn es ein OpenGL-Fehler ist, dann überprüfen Sie vielleicht Entwickleroptionen auf dem Gerät und stellen Sie sicher, dass OpenGL 2.0 dort aktiviert ist.

+0

Danke für die Vorschläge. Ich sehe in den Entwickleroptionen auf dem Gerät nichts anderes als OpenGL, außer OpenGL-Traces aktivieren, die ich auf Logcat gesetzt habe, aber nichts Nützliches gefunden habe. Ich habe die Option "GPU-Rendering erzwingen" ohne Erfolg versucht. –

+0

Ich kaufte schließlich ein neues Android-Tablet und die (etwas neuere Version) Esri API arbeitet daran. Ich komme zu dem Schluss, dass entweder das alte Asus Nexus 7 2012 OpenGL ES 2 nicht unterstützt oder etwas nicht richtig konfiguriert wurde, entweder auf dem Gerät oder in der API oder im Paket. –