Mono для Android App падает при запуске после очистки данных в настройках приложения
Я обнаружил, что мое приложение Mono для Android падает при каждом запуске после того, как пользователь переходит в Настройки->Приложения->MyApp и выбирает "Очистить данные". Я создал новый проект с приложением Mono для Android "Hello World", и это приложение демонстрирует точно такое же поведение, которое приводит меня к предположению, что это происходит где-то в стеке mono вдали от моего контроля. Если я проверю с adb logcat, это соответствующие строки, которые я могу найти:
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
у кого-нибудь есть то же самое поведение в его mono apps? Есть ли решение?
3 ответов
удалось решить свой вопрос. В настройках проекта мне пришлось перейти на вкладку "Mono for Android Build", выбрать конфигурацию выпуска и сделать компоновщик" связать все сборки "вместо"связать только сборки SDK". Исправлено методом проб и ошибок, но что вы можете сделать..
другое решение, которое я нашел, - отключить использование "общей среды выполнения" при создании приложения.
в Visual Studio это в настройках Вашего проекта Android, параметры Android > вкладка упаковка > свойства упаковки > использовать общую среду выполнения (untick)
Это делает полученный APK немного больше, но означает, что пользователи могут делать "Очистить данные" на вашем приложении, перезагрузить его, и он будет работать без сбоев!
использование Visual Studio 2015 с приложением Xamarin Forms на LG G3 Vigor в качестве тестового устройства. Много месяцев все шло хорошо. Я проводил тестирование документации по производительности, поэтому решил очистить кэш в своем приложении в настройках - > общие - > приложения на Vigor. После этого Vigor вызовет ошибку времени выполнения, когда я разверну свое приложение на устройстве. Приложение будет отлично работать на других устройствах, эмуляторах и симуляторах iOS.
Я попробовал другие предложения на эта должность. Я делал сброс настроек на устройстве. После разблокировки режима разработчика и повторного подключения к компьютеру он теперь скомпилирован и снова запустил приложение.
Я думаю, что человек может попытаться отозвать разрешения отладки usb и повторно авторизоваться, если они не хотят делать сброс настроек, чтобы увидеть, если это снова работает. Это может создать другой путь соединения между VS2015 и устройством, которое сбрасывает любую проблему, вызванную сбросом кэша. Если все остальное не удастся, заводская перезагрузка сделала это для меня. Надеюсь, это поможет, если это случится с кем-то.