Подтвердить что ты не робот

Android-приложение не разбивается, но не реагирует на неотображаемые исключения

Недавно я заметил, что мое приложение не падает, когда возникает неперехваченное исключение, но оно не отвечает. Я использую Google Analytics, чтобы получить представление о сбоях, я подозреваю, что это может быть причиной проблемы.

Когда я бросаю NullPointerException в onCreate() (сразу после super.onCreate()), приложение показывает белый экран, но он не падает.

Logcat говорит:

06-30 14:00:59.386  26259-26259/? I/GAv4﹕ Google Analytics 7.5.71 is starting up. To enable debug logging on a device run:
    adb shell setprop log.tag.GAv4 DEBUG
    adb logcat -s GAv4
06-30 14:00:59.398  26259-26259/? W/GAv4﹕ AnalyticsReceiver is not registered or is disabled. Register the receiver for reliable dispatching on non-Google Play devices. See http://goo.gl/8Rd3yj for instructions.
06-30 14:00:59.409  26259-26259/? W/GAv4﹕ CampaignTrackingReceiver is not registered, not exported or is disabled. Installation campaign tracking is not possible. See http://goo.gl/8Rd3yj for instructions.
06-30 14:00:59.414  26259-26295/? W/GAv4﹕ AnalyticsService not registered in the app manifest. Hits might not be delivered reliably. See http://goo.gl/8Rd3yj for instructions.
06-30 14:00:59.467  26259-26259/? D/AndroidRuntime﹕ Shutting down VM

Я хотел бы видеть неперехваченные исключения, потому что их действительно сложно исправить, если я не вижу стеклу и причину проблемы.

Что я могу сделать, чтобы вернуться к предыдущему поведению?

РЕДАКТИРОВАТЬ: После удаления отчетов об ошибках Analytics (не вызывая tracker.enableExceptionReporting(true);), я снова получаю аварийные сообщения. Я использую Analytics из Play Services 7.5.0.

4b9b3361

Ответ 1

Google Analytics является виновником. Попробуйте отключить его (или отключить автоматическую отчетность о неперехваченных исключениях) во время разработки и включить его, когда вы подписываете свое приложение с помощью ключа release.

Ответ 2

Exceptions отображаются в консоли по умолчанию.

Если вы не хотите проверять Консоль (я думаю, это более удобно для этой цели, потому что Logcat иногда является большим беспорядком), а затем просто показывайте Exception в Log при зацепе.

try {

} catch (Exception e) {
    Log.e("YOUR_APP_TAG", "Exception occured: ", e);
}