Android-система WebView нарушает приложения Android! "Могилы отключены на JB MR2 + пользовательских сборках"
EDIT. Оказывается, это был не Chrome, а Android System WebView
.
Несколько других пользователей в Google Play Store оставили ответы, например, "Сбой приложений" без каких-либо ошибок.
Оригинальное сообщение:
Обновлено мое приложение (Android 5.0.2), и когда я пытаюсь создать приложение Android Xamarin в режиме DEBUG, я получаю сообщение об ошибке:
[google-breakpad] ### ### ### ### ### ### ### ### ### ### ### ### ###
[google-breakpad] Отпечаток Chrome build:
[google-breakpad] 1.0
[google-breakpad] 1
[google-breakpad] 5c230f07-455f-4c1f-91eb-9c44019cd813
[google-breakpad] ### ### ### ### ### ### ### ### ### ### ### ### ###
[google-breakpad] Могилы отключены в пользовательских сборках JB MR2 +.
[google-breakpad] ### ### ### ### ### ### ### ### ### ### ### ### ###
В консоли я могу найти сообщение об ошибке:
E/SysUtils: ApplicationContext имеет значение null в ApplicationStatus
Который, кажется, является частью хрома.
Ошибка отображается в консоли, и приложение возвращается назад (но не уничтожается), когда возвращается веб-просмотр.
Веб-просмотр выдается в другой форме.
Я не делал никаких изменений со вчерашнего дня, когда все сработало.
После создания (и сбоя) запуска приложения из функций устройства исключение.
Моя целевая версия сборки - API 21, а минимум API - 14 (но она также не работает в 19).
Ответы
Ответ 1
Оказывается, это был не Chrome, а Android System WebView, из-за которого приложение вышло из строя. Несколько других пользователей в Google Play Store оставили ответы, например, "Сбой приложений" без каких-либо ошибок.
ИЗМЕНИТЬ:
Джонатан Прайор на Xamarin Bugzilla отправил этот комментарий:
Как упоминалось в комментарии № 2 и комментария № 3, проблема в том, что Google Play Служба WebView и связанные с ней типы сбивают существующие обработчики SIGSEGV, который закручивает вещи для всего собственного кода, который опирается на обработчики сигналов (например, Гудини).
В качестве обходного пути можно удалить необходимость в обработчике SIGSEGV для Вывод NullReferenceException, путем установки переменной MONO_DEBUG значение "явные-null-проверки":
http://docs.go-mono.com/?link=man%3amono(1)
Это можно сделать, добавив файл в ваш проект приложения с помощью действия Build AndroidEnvironment:
http://developer.xamarin.com/guides/android/advanced_topics/environment/
Затем добавив в файл следующую строку:
MONO_DEBUG=explicit-null-checks
Ответ 2
Я подал ошибку хрома, которая, по-видимому, является основной причиной. http://code.google.com/p/chromium/issues/detail?id=481420
Ответ 3
Вы можете удалить обновления WebView, чтобы вы могли работать над своим проектом, пока это исправлено.
Мы выяснили, что в нашем случае он разбился, когда было исключено исключение. Если мы использовали исключение Java.Lang.Exception вместо С# Exceptions, оно перестало сбой.
Ответ 4
Я нашел исправление для Unity. Он был проверен и протестирован.
1) Установите этот script в разделе "YOUR_UNITY_PROJECT/Assets/Editor" ( "Credits to Prime31" для этого удивительного script):
https://github.com/prime31/P31UnityAddOns/blob/master/Editor/GlobalDefinesWizard.cs
2) Как упоминалось в @fhl, вам нужно добавить MONO_DEBUG = явные-null-проверки в глобальные определения, вы можете сделать это, щелкнув недавно добавленный тег глобальных определений и убедитесь, что он выглядит так:
![введите описание изображения здесь]()
3) Теперь создайте новую сборку, и она должна исправить ваш сбой.