2012-10-24 17 views
6

Zauważyłem, że moja aplikacja Mono dla Androida ulega awarii przy każdym uruchomieniu po przejściu użytkownika do Ustawienia-> Aplikacje-> MojaAplikacja i wybraniu "Wyczyść dane". Stworzyłem nowy projekt z aplikacją Mono dla Androida "Hello World", a ta aplikacja wykazuje dokładnie to samo zachowanie, co pozwala mi przypuszczać, że dzieje się to gdzieś w monopolu z dala od mojej kontroli. Jeśli sprawdzam przy pomocy adb logcat, są to odpowiednie wiersze, które mogę znaleźć:Mono dla aplikacji Android ulega awarii po uruchomieniu po wyczyszczeniu danych w ustawieniach aplikacji

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 

Czy ktoś ma takie samo zachowanie w swoich aplikacjach mono? Czy jest poprawka?

Odpowiedz

6

Udało mi się rozwiązać moje własne pytanie. W ustawieniach projektu musiałem przejść do zakładki "Mono dla systemu Android", wybrać konfigurację Release i utworzyć linker "Połącz wszystkie zespoły" zamiast "Tylko zestawy SDK". Naprawiono to przez próbę i błąd, ale co możesz zrobić?

1

Innym rozwiązaniem, które znalazłem, jest wyłączenie korzystania z "Shared Runtime" podczas budowania aplikacji.

W Visual Studio jest to na Android ustawieniach projektu, Opcje Android> karta pakowanie> Właściwości Opakowania> Użyj Shared Runtime (odznacz)

To sprawia, że ​​wynikowy plik APK nieco większy, ale oznacza, że ​​użytkownicy mogą robić „Wyczyść Dane "w Twojej aplikacji, uruchom ją ponownie i uruchomi się bez awarii!

0

Używanie Visual Studio 2015 z aplikacją Xamarin Forms na urządzeniu LG G3 Vigor jako urządzeniem testowym. Wszystko działało dobrze przez wiele miesięcy. Przeprowadzałem testy dokumentacji wydajności, więc zdecydowałem się wyczyścić pamięć podręczną w mojej aplikacji w Ustawienia -> Ogólne -> Aplikacje na wigorze. Po wykonaniu tej czynności wigor spowodowałby błąd runtime podczas wdrażania aplikacji na urządzenie. Aplikacja działałaby dobrze na innych urządzeniach, emulatorach i symulatorach iOS.

Próbowałem innych sugestii wymienionych w tym poście. Skończyło się na przywróceniu ustawień fabrycznych urządzenia. Po odblokowaniu trybu programisty i ponownym połączeniu się z komputerem, skompilowałem i ponownie uruchomiłem aplikację.

Myślę, że dana osoba mogłaby spróbować unieważnić autoryzację debugowania usb i ponownie autoryzować, jeśli nie chciała przywrócić ustawień fabrycznych, aby sprawdzić, czy to sprawi, że wszystko będzie działać ponownie. Może to stworzyć inną ścieżkę połączenia między VS2015 a urządzeniem, które resetuje problem spowodowany resetem pamięci podręcznej. Jeśli wszystko inne zawiedzie, to reset fabryczny zrobił to za mnie. Mam nadzieję, że pomoże to na wypadek, gdyby się to stało komuś.

Powiązane problemy