Zapisuj i czytaj raporty o błędach

Raport o błędzie zawiera dzienniki urządzenia, zrzuty stosu i inne informacje diagnostyczne, które pomogą Ci znaleźć i naprawić błędy w aplikacji. Aby utworzyć raport o błędzie z urządzenia, użyj opcji dla programistów Zgłoś błąd na urządzeniu, menu Emulatora Androida lub polecenia adb bugreport na komputerze do programowania.

Rysunek 1. Opcje programisty na urządzeniu.

Aby utworzyć raport o błędzie, na urządzeniu musisz mieć włączone Opcje programisty, aby uzyskać dostęp do opcji Zgłoś błąd.

Zapisuj raport o błędzie z urządzenia

Rysunek 2. Raport o błędzie jest gotowy.

Aby pobrać raport o błędzie bezpośrednio z urządzenia:

  1. Włącz Opcje programisty.
  2. W Opcjach programisty kliknij Zgłoś błąd.
  3. Wybierz typ raportu o błędzie i kliknij Zgłoś.

    Po chwili otrzymasz powiadomienie, że raport o błędzie jest gotowy (jak pokazano na rysunku 2).

  4. Aby udostępnić raport o błędzie, kliknij powiadomienie.

Zapisywanie raportu o błędzie z emulatora Androida

W emulatorze Androida możesz użyć funkcji Zgłoś błąd w rozszerzonych ustawieniach:

  1. W panelu emulatora kliknij Więcej .
  2. W oknie Rozszerzone elementy sterujące wybierz Raport o błędzie.

    Otworzy się ekran, na którym możesz zobaczyć szczegóły raportu o błędzie, np. zrzut ekranu, informacje o konfiguracji AVD oraz dziennik raportu o błędzie. Możesz też wpisać wiadomość z instrukcjami odtwarzania, aby zapisać ją w raporcie.

  3. Poczekaj, aż zakończy się zbieranie raportu o błędzie, a potem kliknij Zapisz raport.

Zapisywanie raportu o błędzie za pomocą narzędzia adb

Jeśli masz połączone tylko 1 urządzenie, możesz pobrać raport o błędzie, korzystając z usługi adb:

$ adb bugreport E:\Reports\MyBugReports

Jeśli nie określisz ścieżki raportu o błędzie, zostanie on zapisany w katalogu lokalnym.

Jeśli masz podłączonych kilka urządzeń, musisz określić urządzenie za pomocą opcji -s. Uruchom te polecenia adb, aby uzyskać numer seryjny urządzenia i wygenerować raport o błędzie:

$ adb devices
List of devices attached
emulator-5554      device
8XV7N15C31003476 device

$ adb -s 8XV7N15C31003476 bugreport

Zapisz starszy raport o błędzie

Domyślnie raporty o błędach są zapisywane na /bugreports i można je wyświetlić za pomocą tego polecenia:

$ adb shell ls /bugreports/
bugreport-foo-bar.xxx.YYYY-MM-DD-HH-MM-SS-dumpstate_log-yyy.txt
bugreport-foo-bar.xxx.YYYY-MM-DD-HH-MM-SS.zip
dumpstate-stats.txt

Następnie możesz pobrać plik zip przez adb pull:

$ adb pull /bugreports/bugreport-foo-bar.xxx.YYYY-MM-DD-HH-MM-SS.zip

Sprawdź plik ZIP z raportem o błędzie

Domyślnie ten plik nosi nazwę bugreport-BUILD_ID-DATE.zip. Plik ZIP może zawierać wiele plików. Najważniejszym z nich jest bugreport-BUILD_ID-DATE.txt. Oto raport o błędzie, który zawiera dane wyjściowe diagnostyczne dotyczące usług systemowych (dumpsys), dzienników błędów (dumpstate) i dzienników komunikatów systemowych (logcat). Komunikaty systemowe obejmują zrzuty stosu, gdy urządzenie zgłasza błąd, oraz komunikaty zapisane ze wszystkich aplikacji z klasą Log.

Plik ZIP zawiera plik metadanych version.txt z literą dotyczącą wersji Androida. Gdy protokół systrace jest włączony, plik ZIP zawiera też plik systrace.txt. Narzędzie Systrace pomaga analizować wydajność aplikacji, rejestrując i wyświetlając czasy wykonywania procesów aplikacji i innych procesów systemu Android.

Narzędzie dumpstate kopiuje pliki z systemu plików na urządzeniu do pliku ZIP w folderze FS, aby można było się do nich odwołać. Na przykład plik /dirA/dirB/fileC na urządzeniu wygenerowałby w pliku ZIP wpis FS/dirA/dirB/fileC.

Rysunek 3. Struktura pliku z raportem o błędzie.

Więcej informacji znajdziesz w sekcji Odczytywanie raportów o błędach.

Otrzymuj raporty od użytkowników

Generowanie raportów o błędach jest przydatne, gdy samodzielnie korzystasz z aplikacji, ale użytkownicy nie mogą łatwo udostępniać Ci takich raportów. Aby otrzymywać raporty o awariach ze zrzutami stosu rzeczywistych użytkowników, skorzystaj z funkcji zgłaszania awarii w Google Play i Firebase.

Konsola Google Play

W Konsoli Google Play możesz otrzymywać raporty o awariach i błędach typu Aplikacja nie odpowiada (ANR) wywołanych przez użytkowników, którzy zainstalowali Twoją aplikację z Google Play. Dostępne dane pochodzą z ostatnich 6 miesięcy.

Więcej informacji znajdziesz w sekcji dotyczącej wyświetlania awarii i błędów ANR w Centrum pomocy Konsoli Play.

Zgłaszanie awarii Firebase

Funkcja raportowania Firebase Crashlytics tworzy szczegółowe raporty o błędach w aplikacji. Błędy są pogrupowane w problemy na podstawie podobnych zrzutów stosu i klasyfikowane według wagi wpływu na użytkowników. Oprócz raportów automatycznych możesz rejestrować zdarzenia niestandardowe, które pomagają rejestrować kroki prowadzące do awarii.

Aby zacząć otrzymywać raporty o awariach od dowolnego użytkownika, dodaj zależności Firebase do pliku build.gradle. Więcej informacji znajdziesz w sekcji Firebase Crashlytics.