2015-06-30 9 views
10

Ich habe kürzlich festgestellt, dass meine App nicht abstürzt, wenn eine nicht abgefangene Ausnahme auftritt, aber sie reagiert nicht. Ich verwende Google Analytics, um Einblick in Abstürze zu erhalten. Ich vermute, dass dies die Ursache des Problems sein könnte.Android-App stürzt nicht ab, reagiert jedoch nicht auf nicht erfasste Ausnahmen

Wenn ich einen NullPointerException in onCreate() (sofort nach super.onCreate()) werfe, zeigt die App einen weißen Bildschirm, aber es stürzt nicht ab.

Logcat sagt:

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 

Ich möchte die abgefangene Ausnahmen, um zu sehen, weil es wirklich schwer ist, sie zu reparieren, wenn ich nicht die Stacktrace und den Grund des Problems sehen.

Was kann ich tun, um das vorherige Verhalten wiederherzustellen?

EDIT: Nach dem Entfernen von Analytics-Fehlerberichterstattung (nicht Aufruf tracker.enableExceptionReporting(true);), bekomme ich die Abstürze erneut. Ich verwende Analytics von Play Services 7.5.0.

+1

eigentlich haben Sie nur Warnungen ... das bedeutet nicht unbedingt, dass Ihre App irgendeine Ausnahme auslöst ... nach welchen Fehlern suchen Sie? –

+0

Ich habe eine NullPointerException in 'onCreate()' der Hauptaktivität geworfen, und ich möchte die Stack-Trace davon bekommen. Mein Problem ist, dass ich in logcat keine Fehler bekomme. – hunyadym

+1

Argh. Ich bin ein wenig erleichtert, dass ich nicht der Einzige bin, der die 'AndroidRuntime: VM herunterfahren'-Meldung anzeigt und kein anderes Log sieht. –

Antwort

-1

Die Exceptions werden standardmäßig in der Konsole angezeigt.

Wenn Sie nicht möchten, die Konsole (ich glaube, zu diesem Zweck mehr praktisch ist, weil Logcat manchmal ein großes Durcheinander ist) überprüfen, dann zeigen nur die Exception s im Log wenn fangen.

try { 

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

Wo kann ich auf diese Konsole zugreifen? (Ich verwende Android Studio.) Außerdem erhalte ich im Play Store keine Absturzberichte, sondern nur ANR-Berichte, die den StackTrace nicht enthalten. Ich möchte auch nicht meinen gesamten Code mit Try-Catch-Codes versehen. – hunyadym

+0

AFAIK Sie haben keine andere Möglichkeit als die Ausnahmen manuell umzuleiten ... ** Sie können immer noch einen Blick auf die Konsole werfen, eh !!! ** Aber Sie müssen nicht Millionen von "try-catchs" verwenden wenn du alle 'Exceptions' kontrollierst, die in einem allgemeinen 'Exception'-Catcher/Handler auftreten können ... –

1

Google Analytics ist der Schuldige. Deaktivieren Sie diese Option (oder deaktivieren Sie die automatische Berichterstellung für nicht erfasste Ausnahmen), während Sie sie entwickeln und aktivieren, wenn Sie Ihre App mit dem Freigabeschlüssel unterschreiben.

+0

Für mich stürzte die App weder mit Debug noch mit Release-Key ab. (Wie ich in der Frage erwähnt habe, habe ich die Analytics-Ausnahmeberichterstattung deaktiviert.) – hunyadym