2012-10-24 13 views
6

Ich habe festgestellt, dass meine Mono für Android App bei jedem Start abstürzt, nachdem der Benutzer zu Einstellungen-> Apps-> MyApp geht und "Daten löschen" auswählt. Ich habe ein neues Projekt mit der "Hallo Welt" -Anwendung von Mono für Android erstellt, und diese App zeigt genau das gleiche Verhalten, was mich zu der Annahme verleitet, dass dies irgendwo im Monostapel passiert, weit weg von meiner Kontrolle. Wenn ich mit adb logcat überprüfen, sind dies die entsprechenden Zeilen, die ich finden kann:Mono für Android App stürzt beim Start ab, löscht Daten in den App-Einstellungen

I/ActivityManager( 185): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=Test_App.Test_App/test_app.Activity1} from pid 386 
D/dalvikvm(18358): Late-enabling CheckJNI 
I/dalvikvm(18358): Turning on JNI app bug workarounds for target SDK version 8... 
I/ActivityManager( 185): Start proc Test_App.Test_App for activity Test_App.Test_App/test_app.Activity1: pid=18358 uid=10074 gids={3003} 
D/dalvikvm( 119): GC_EXPLICIT freed 37K, 3% free 12553K/12867K, paused 1ms+2ms 
I/ActivityThread(18358): Pub Test_App.Test_App.mono.MonoRuntimeProvider.__mono_init__: mono.MonoRuntimeProvider 
D/dalvikvm(18358): Trying to load lib /data/data/Test_App.Test_App/lib/libmonodroid.so 0x4168ba48 
D/dalvikvm(18358): Added shared lib /data/data/Test_App.Test_App/lib/libmonodroid.so 0x4168ba48 
D/dalvikvm( 119): GC_EXPLICIT freed <1K, 3% free 12553K/12867K, paused 2ms+2ms 
E/mono (18358): WARNING: The runtime version supported by this application is unavailable. 
E/mono (18358): Using default runtime: v2.0.50727 
D/OpenGLRenderer( 386): Flushing caches (mode 1) 
D/dalvikvm( 119): GC_EXPLICIT freed <1K, 3% free 12553K/12867K, paused 1ms+1ms 
I/mono (18358): Stacktrace: 
I/mono (18358): 
D/OpenGLRenderer( 386): Flushing caches (mode 0) 
D/Zygote ( 119): Process 18358 terminated by signal (11) 
I/ActivityManager( 185): Process Test_App.Test_App (pid 18358) has died. 
W/ActivityManager( 185): Force removing ActivityRecord{41a85018 Test_App.Test_App/test_app.Activity1}: app died, no saved state 

Hat jemand das gleiche Verhalten in seiner Mono-Anwendungen? Gibt es eine Lösung?

Antwort

6

verwaltet, um meine eigene Frage zu lösen. Unter Projekteinstellungen musste ich auf die Registerkarte "Mono für Android Build" gehen, die Release-Konfiguration auswählen und den Linker "Alle Assemblies verknüpfen" anstelle von "Nur Link SDK-Assemblies" erstellen. Dies wurde durch Versuch und Irrtum behoben, aber was können Sie tun?

1

Eine andere Lösung, die ich gefunden habe, ist die Verwendung der "Shared Runtime" beim Erstellen der App zu deaktivieren.

In Visual Studio ist dies auf Ihren Android-Projekteinstellungen, Android Optionen> Verpackung Tab> Verpackungseigenschaften> Verwenden Sie die Freigabe- Runtime (untick)

Es macht die resultierende APK ein bisschen größer, aber bedeutet, dass Benutzer löschen tun können“ Daten "auf Ihrer App, starten Sie es neu und es läuft ohne Absturz!

0

Verwenden von Visual Studio 2015 mit einer Xamarin Forms App auf einem LG G3 Vigor als Testgerät. Über Monate hat alles gut funktioniert. Ich habe Tests für die Leistungsdokumentation durchgeführt, also habe ich beschlossen, Clear Cache in meiner App unter Einstellungen -> Allgemein -> Apps auf dem Vigor zu machen. Danach würde der Vigor einen Laufzeitfehler verursachen, wenn ich meine App auf dem Gerät bereitstellen würde. Die App würde auf anderen Geräten, Emulatoren und iOS-Simulatoren funktionieren.

Ich habe andere Vorschläge versucht, die in diesem Beitrag aufgeführt sind. Ich habe am Gerät einen Werksreset durchgeführt. Nach dem Entsperren des Entwicklermodus und erneutem Verbinden mit meinem Computer, kompiliert es jetzt und führte die App erneut aus.

Ich denke, eine Person könnte versuchen, USB-Debugging-Berechtigungen zu widerrufen und erneut zu autorisieren, wenn sie nicht auf die Werkseinstellungen zurücksetzen wollten, um zu sehen, ob das die Dinge wieder funktioniert. Dies kann zu einem anderen Verbindungspfad zwischen VS2015 und dem Gerät führen, das das durch das Zurücksetzen des Cache verursachte Problem zurücksetzt. Wenn alles andere fehlschlägt, hat ein Factory-Reset es für mich getan. Hoffe es hilft, falls dies jemandem passiert.

Verwandte Themen