Rozwiązywanie problemów z Crashlytics i najczęstsze pytania
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Na tej stronie znajdziesz pomoc dotyczącą rozwiązywania problemów i odpowiedzi na najczęstsze pytania
pytań dotyczących korzystania z Crashlytics. Jeśli
nie możesz znaleźć tego, czego szukasz, lub potrzebujesz dodatkowej pomocy, skontaktuj się z
Obsługa Firebase.
Rozwiązywanie problemów/najczęstsze pytania
Różne formaty
(a czasem „warianty”) w przypadku niektórych problemów w tabeli Problemy.
W tabeli Problemy możesz zobaczyć 2 różne formaty problemów wymienionych w tabeli Problemy.
w konsoli Firebase. Możesz też zauważyć funkcję
„warianty” w niektórych kwestiach. Wyjaśniamy dlaczego.
Na początku 2023 r. wdrożyliśmy ulepszony mechanizm analizy grupujący zdarzenia jako
a także zaktualizowany wygląd i niektóre zaawansowane funkcje w przypadku nowych problemów (np.
wersji). Zobacz nasze najnowsze
post na blogu
.
Crashlytics analizuje wszystkie zdarzenia z aplikacji (takie jak awarie, niekrytyczne
i błędy ANR) oraz tworzy grupy zdarzeń nazywane problemami – wszystkie
mają wspólne
punkty awarii.
Aby pogrupować zdarzenia w te problemy, ulepszony mechanizm analizy analizuje teraz:
wielu aspektów zdarzenia, w tym ramki zrzutu stosu,
komunikat o wyjątku, kod błędu oraz inną platformę lub typ błędu
dla niektórych cech produktu.
Jednak w ramach tej grupy zdarzeń zrzuty stosu prowadzące do błędu
może być inna. Inny zrzut stosu może oznaczać inną przyczynę problemu.
Aby odzwierciedlić tę możliwą różnicę w ramach problemu, tworzymy
warianty w ramach problemów – każdy wariant jest podgrupą zdarzeń w danym problemie.
które mają ten sam punkt błędu i podobny zrzut stosu. W przypadku wariantów
możesz debugować typowe zrzuty stosu w obrębie problemu i sprawdzić, czy
mają różne przyczyny.
Oto zalety tych ulepszeń:
Ulepszone metadane wyświetlane w wierszu problemu Teraz łatwiej jest zrozumieć i eliminować problemy z aplikacją.
Mniej zduplikowanych problemów Zmiana numeru wiersza nie powoduje pojawienia się nowego problemu.
Łatwiejsze debugowanie złożonych problemów o różnych przyczynach Używaj wariantów do debugowania najczęstszych zrzutów stosu w obrębie problemu.
Bardziej przydatne alerty i sygnały Nowy problem oznacza nowy błąd.
Bardziej zaawansowane wyszukiwanie Każdy numer zawiera więcej metadanych, które można wyszukać,
np. typ wyjątku i nazwę pakietu.
Oto jak wprowadzamy te ulepszenia:
Gdy otrzymamy nowe zdarzenia z aplikacji, sprawdzimy, czy pasują do istniejących
Google Cloud.
Jeśli nie, automatycznie zastosujemy
lepszy sposób grupowania zdarzeń.
do zdarzenia i sformułować nowy problem ze zmienionymi metadanymi.
projektu.
To pierwsza duża aktualizacja, którą wprowadzamy w grupowaniu wydarzeń. Jeśli
Jeśli masz uwagi lub napotkasz jakieś problemy, skontaktuj się z nami do
i wypełnianie zgłoszenia.
Nie widać
dane o braku awarii lub alerty o szybkości
Jeśli nie widzisz danych, w których przypadku nie wystąpiła awaria (np. liczby użytkowników i sesji, w których przypadku nie wystąpiła awaria)
i/lub alertów o rosnącej liczbie problemów, upewnij się, że używasz funkcji
pakiet SDK Crashlytics w wersji 18.6.0 lub nowszej (lub Firebase BoM w wersji 32.6.0 lub nowszej).
Nie widzę logów menu nawigacyjnego
Jeśli nie widzisz
dzienniki menu nawigacyjnego,
zalecamy sprawdzenie konfiguracji aplikacji pod kątem Google Analytics.
Upewnij się, że spełniasz te wymagania:
Szczególnie sprawdź, czy korzystasz przynajmniej z poniższej wersji programu
Pakiet SDK Firebase dla Google Analytics: Android – wersja 17.2.3 lub nowsza(BoM w wersji 24.7.1 lub nowszej).
Dlaczego występują tylko błędy ANR
na urządzeniach z Androidem 11 i nowszym?
Crashlytics obsługuje raportowanie błędów ANR w aplikacjach na Androida z urządzeń, które działają
Androida 11 lub nowszego, bazowy interfejs API, którego używamy do zbierania informacji o błędach ANR;
(getHistoryProcessExitReasons)
jest bardziej wiarygodne niż metody SIGQUIT
czy watchdoga. Ten interfejs API jest
dostępne tylko na urządzeniach z Androidem 11 lub nowszym.
Dlaczego brakuje niektórych błędów ANR
ich BuildId?
Jeśli w przypadku niektórych błędów ANR brakuje parametrów BuildId, rozwiąż problemy w ten sposób:
Upewnij się, że używasz aktualnego pakietu SDK Crashlytics na Androida oraz
Wersja wtyczki Crashlytics do Gradle.
Jeśli brakuje błędów (BuildId) dotyczących Androida 11 i niektórych błędów ANR w Androidzie 12,
prawdopodobnie używasz nieaktualnego pakietu SDK, wtyczki Gradle lub obu tych wersji.
Aby prawidłowo zbierać błędy BuildId w przypadku tych błędów ANR, musisz użyć tych
wersje:
pakiet SDK Crashlytics na Androida w wersji 18.3.5 lub nowszej (Firebase BoM w wersji 31.2.2 lub nowszej)
Wtyczka Crashlytics do Gradle w wersji 2.9.4 lub nowszej
Sprawdź, czy Twoje biblioteki udostępnione używają niestandardowej lokalizacji.
Jeśli brakuje tylko bibliotek BuildId w bibliotekach udostępnionych Twojej aplikacji, prawdopodobnie
że nie używasz standardowej, domyślnej lokalizacji bibliotek udostępnionych. Jeśli
w takim przypadku Crashlytics może nie być w stanie znaleźć
powiązane obiekty BuildId. Zalecamy użycie standardowego
lokalizacji bibliotek udostępnionych.
Sprawdź, czy podczas procesu kompilacji nie są usuwane elementy BuildId.
Pamiętaj, że te wskazówki dotyczące rozwiązywania problemów dotyczą zarówno błędów ANR, jak i reklam natywnych
awarii.
Sprawdź, czy pliki BuildId istnieją, uruchamiając w nich readelf -n. Jeśli
brak elementów BuildId, a następnie dodaj -Wl,--build-id do flag
systemu kompilacji.
Sprawdź, czy nie usuwasz przypadkiem tych elementów BuildId
, by zmniejszyć rozmiar pliku APK.
Jeśli zachowasz uproszczone i nieskrócone wersje biblioteki,
wskazuje prawidłową wersję kodu.
Różnice
między raportami ANR w panelu Crashlytics i
Konsola Google Play,
Między liczbą błędów ANR w Google Play i w Google Play może występować niezgodność
Crashlytics Jest to spowodowane różnicą w mechanizmie
zbieranie i raportowanie danych dotyczących błędów ANR. Crashlytics zgłasza błędy ANR, gdy aplikacja
Android Vitals wysyła dane o błędzie ANR po jego wystąpieniu.
Dodatkowo Crashlytics wyświetla tylko błędy ANR na urządzeniach z uruchomionymi
Androida 11 i nowszych, w porównaniu z Google Play, który wyświetla błędy ANR na urządzeniach
Zaakceptowano Usługi Google Play i zgodę na zbieranie danych.
Różnice
między zrzutami stosu NDK w panelu Crashlytics a logcatem
Łańcuchy narzędzi LLVM i GNU mają różne ustawienia domyślne i metody tylko do odczytu
segment plików binarnych aplikacji, co może powodować niespójne zrzuty stosu
w konsoli Firebase. Aby temu zaradzić, dodaj te flagi tagu łączącego
w procesie kompilacji:
Jeśli używasz tagu łączącego lld z łańcucha narzędzi LLVM, dodaj:
-Wl,--no-rosegment
Jeśli korzystasz z tagu łączącego ld.gold z łańcucha narzędzi GNU, dodaj:
-Wl,--rosegment
Jeśli w zrzucie stosu nadal występują niespójności (lub jeśli żadna z flag
zgodnie z Twoim łańcuchem narzędzi), spróbuj dodać do swojego procesu tworzenia następujące elementy
zamiast:
-fno-omit-frame-pointer
Jak używać
mój własny plik binarny z symbolami Breakpada dla NDK?
Wtyczka Crashlytics zawiera
dostosowanego generatora plików symboli Breakpad.
Jeśli wolisz użyć własnego pliku binarnego do generowania plików symboli Breakpad (na
Jeśli na przykład w łańcuchu kompilacji wolisz tworzyć wszystkie natywne pliki wykonywalne w łańcuchu kompilacji
źródła), użyj opcjonalnej właściwości rozszerzenia symbolGeneratorBinary, aby określić
ścieżkę do pliku wykonywalnego.
Możesz podać ścieżkę do pliku binarnego generatora plików symboli Breakpad w jednym
na 2 sposoby.
Opcja 1. Podaj ścieżkę za pomocą tagu firebaseCrashlytics
w pliku build.gradle
Do pliku build.gradle.kts na poziomie aplikacji dodaj te informacje:
Wtyczka Gradle w wersji 3.0.0 lub nowszej
android {
buildTypes {
release {
configure<CrashlyticsExtension> {
nativeSymbolUploadEnabled = true
// Add these optional fields to specify the path to the executable
symbolGeneratorType = "breakpad"
breakpadBinary = file("/PATH/TO/BREAKPAD/DUMP_SYMS")
}
}
}
}
starsze wersje wtyczki
android {
// ...
buildTypes {
// ...
release {
// ...
firebaseCrashlytics {
// existing; required for either symbol file generator
nativeSymbolUploadEnabled true
// Add this optional new block to specify the path to the executable
symbolGenerator {
breakpad {
binary file("/PATH/TO/BREAKPAD/DUMP_SYMS")
}
}
}
}
}
Opcja 2. Określ ścieżkę w wierszu właściwości w Gradle
plik właściwości
Za pomocą usługi com.google.firebase.crashlytics.breakpadBinary
w celu określenia ścieżki do pliku wykonywalnego.
Możesz ręcznie zaktualizować plik właściwości Gradle lub zaktualizować plik
za pomocą wiersza poleceń. Aby na przykład podać ścieżkę za pomocą polecenia
, użyj polecenia podobnego do tego:
Dlaczego widzę awarie
z .kt plików oznaczonych jako problemy (.java)?
Jeśli aplikacja używa zaciemnionego kodu, który nie ujawnia rozszerzenia pliku,
Crashlytics domyślnie generuje każdy problem z rozszerzeniem .java.
Aby Crashlytics mogła generować problemy z prawidłowym rozszerzeniem pliku,
upewnij się, że aplikacja korzysta z tej konfiguracji:
Korzysta z Androida Gradle w wersji 4.2.0 lub nowszej
Używa R8 z włączonym zaciemnianiem kodu. Aby zaktualizować aplikację do wersji R8, wykonaj te czynności
dokumentacja.
Po aktualizacji do konfiguracji opisanej powyżej możesz widzieć
nowe problemy (.kt), które są duplikatami istniejących problemów (.java). Zobacz
odpowiedziami na najczęstsze pytania, aby dowiedzieć się więcej o tej sytuacji.
Dlaczego widzę
.kt problemów jest duplikatami istniejących
.java problemu?
W połowie grudnia 2021 r. Crashlytics ulepszyła obsługę aplikacji
które korzystają z platformy Kotlin.
Do niedawna dostępne programy zaciemniające nie ujawniały rozszerzenia pliku,
Usługa Crashlytics domyślnie generowała każdy problem z rozszerzeniem pliku .java.
Jednak od wersji Androida Gradle 4.2.0 R8 obsługuje rozszerzenia plików.
Dzięki tej aktualizacji Crashlytics może teraz określić, czy poszczególne klasa używane
aplikacja jest napisana w języku Kotlin i zawiera prawidłową nazwę pliku,
podpis. Awarie są teraz prawidłowo przypisywane do .kt plików (w stosownych przypadkach)
jeśli aplikacja ma taką konfigurację:
Twoja aplikacja używa Androida Gradle w wersji 4.2.0 lub nowszej.
Aplikacja używa R8 z włączonym zaciemnianiem kodu.
Nowe awarie mają teraz prawidłowe rozszerzenie pliku
podpisy, możesz zauważyć nowe problemy z kategorii .kt, które są w rzeczywistości duplikatami
obecne problemy z etykietą .java. W konsoli Firebase staramy się zidentyfikować
i informować Cię, czy nowy problem z .kt jest możliwym duplikatem
istniejący problem z etykietą .java.
Kto może wyświetlać, pisać i usuwać notatki dotyczące problemu?
Notatki umożliwiają uczestnikom projektu komentowanie konkretnych problemów związanych z pytaniami i stanem
aktualizacje itd.
Gdy członek projektu opublikuje notatkę, zostanie ona oznaczona etykietą z adresem e-mail jego Google
koncie. Ten adres e-mail jest widoczny wraz z notatką dla całego projektu
użytkowników mających uprawnienia do wyświetlania notatki.
Poniżej znajdziesz informacje o uprawnieniach wymaganych do wyświetlania, zapisu i usuwania
uwagi:
Członkowie projektu z dowolną z tych ról mogą wyświetlać i usuwać istniejące
notatki i pisanie nowych notatek na temat problemu.
Członkowie projektu, którzy mają przypisaną dowolną z tych ról, mogą wyświetlać notatki opublikowane w
problem, ale nie może usunąć ani napisać notatki.
Kto może wyświetlać, pisać i usuwać notatki dotyczące problemu?
Notatki umożliwiają uczestnikom projektu komentowanie konkretnych problemów związanych z pytaniami i stanem
aktualizacje itd.
Gdy członek projektu opublikuje notatkę, zostanie ona oznaczona etykietą z adresem e-mail jego Google
koncie. Ten adres e-mail jest widoczny wraz z notatką dla całego projektu
użytkowników mających uprawnienia do wyświetlania notatki.
Poniżej znajdziesz informacje o uprawnieniach wymaganych do wyświetlania, zapisu i usuwania
uwagi:
Członkowie projektu z dowolną z tych ról mogą wyświetlać i usuwać istniejące
notatki i pisanie nowych notatek na temat problemu.
Członkowie projektu, którzy mają przypisaną dowolną z tych ról, mogą wyświetlać notatki opublikowane w
problem, ale nie może usunąć ani napisać notatki.
Aplikacja używa też
Pakiet SDK do reklam mobilnych Google, ale nie występują awarie
Jeśli Twój projekt używa Crashlytics i pakietu SDK do reklam mobilnych Google,
jest prawdopodobne, że narzędzia do zgłaszania awarii zakłócają działanie
rejestracji modułów obsługi wyjątków. Aby rozwiązać ten problem, wyłącz zgłaszanie awarii w
pakietu SDK do reklam mobilnych, wywołując funkcję disableSDKCrashReporting.
Gdzie znajduje się mój zbiór danych BigQuery?
Po połączeniu Crashlytics z BigQuery nowe zbiory danych
znajduje się automatycznie w USA, niezależnie od lokalizacji
projekt Firebase.
Pomoc dotycząca platformy
Czy Crashlytics obsługuje Armeabi?
Firebase Crashlytics NDK nie obsługuje ARMv5 (armeabi).
Obsługa tego interfejsu ABI została usunięta od NDK r17.
Problemy, które pojawiły się znowu
Co to jest regresja
problem?
Występuje regresja, gdy wcześniej został przez Ciebie zamknięty problem, ale
Crashlytics otrzymuje nowy raport o powtórnym wystąpieniu problemu.
Crashlytics automatycznie ponownie otwiera te problemy, aby umożliwić Ci
odpowiednio do potrzeb aplikacji.
Oto przykładowy scenariusz, który wyjaśnia, jak Crashlytics kategoryzuje
jako regresji.
Po raz pierwszy Crashlytics otrzymuje raport o awariach
„A”. Crashlytics wyświetli odpowiedni problem dotyczący tej awarii (problem „A”).
Szybko naprawiasz błąd, zamknij problem „A”, a następnie opublikujesz nową wersję
do aplikacji.
Crashlytics otrzymuje kolejny raport o problemie A. po zamknięciu
Google Cloud.
Jeśli raport pochodzi z wersji aplikacji, którą znała Crashlytics
kiedy zamknięto problem (co oznacza, że wersja spowodowała awarię).
w ogóle nie zgłosi żadnej awarii), Crashlytics nie weźmie pod uwagę
a wraz z nim ponownie. Problem pozostanie zamknięty.
Jeśli raport pochodzi z wersji aplikacji, w przypadku której Crashlytics nie, kiedy zamknięto problem (co oznacza, że wersja
nigdy nie wysłał żadnego raportu o awarii), a następnie
Crashlytics uzna, że problem ustąpił, i ponownie otworzy
Google Cloud.
.
Gdy problem ustąpi, wysyłamy alert o wykryciu regresji i dodajemy
sygnał regresji, aby poinformować Cię, że Crashlytics
ponownie otworzył problem. Jeśli nie chcesz, aby dany problem został ponownie otwarty ze względu na nasze
algorytm regresji, „mute”; problemu, zamiast ją zamykać.
Dlaczego u mnie się pogorszył
problemów ze starszymi wersjami aplikacji?
Jeśli raport pochodzi ze starej wersji aplikacji, która nigdy nie wysyłała żadnych raportów o awariach na
po zamknięciu problemu Crashlytics bierze pod uwagę
problem został rozwiązany i zostanie ponownie otwarty.
Może się tak zdarzyć, jeśli: naprawiono błąd i
opublikowała nową wersję Twojej aplikacji, ale nadal masz użytkowników korzystających ze starszych wersji
bez poprawek. Jeśli przez przypadek jedna ze starszych wersji nigdy nie została wysłana
żadnych raportów o awariach w momencie zamknięcia problemu, a użytkownicy zaczną
napotkania błędu, raporty o awariach wywołałyby ponowne wystąpienie problemu.
Jeśli nie chcesz, aby problem był ponownie otwierany przez nasz algorytm regresji, kliknij „Wycisz”.
problemu, zamiast ją zamykać.