Ответ 1
Google Analytics является виновником. Попробуйте отключить его (или отключить автоматическую отчетность о неперехваченных исключениях) во время разработки и включить его, когда вы подписываете свое приложение с помощью ключа release.
Недавно я заметил, что мое приложение не падает, когда возникает неперехваченное исключение, но оно не отвечает. Я использую 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.
Google Analytics является виновником. Попробуйте отключить его (или отключить автоматическую отчетность о неперехваченных исключениях) во время разработки и включить его, когда вы подписываете свое приложение с помощью ключа release.
Exceptions
отображаются в консоли по умолчанию.
Если вы не хотите проверять Консоль (я думаю, это более удобно для этой цели, потому что Logcat
иногда является большим беспорядком), а затем просто показывайте Exception
в Log
при зацепе.
try {
} catch (Exception e) {
Log.e("YOUR_APP_TAG", "Exception occured: ", e);
}