Możesz wyeksportować swoje dane z Crashlytics do BigQuery w celu dalszej analizy. BigQuery pozwala analizować dane za pomocą BigQuery SQL, eksportować je do innego dostawcy chmury i używać ich do wizualizacji i niestandardowych pulpitów nawigacyjnych w Google Data Studio.
Włącz eksport BigQuery
- Przejdź do strony Integracje w konsoli Firebase.
- Na karcie BigQuery kliknij Połącz .
- Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby włączyć BigQuery.
Gdy połączysz swój projekt z BigQuery:
- Firebase konfiguruje codzienne synchronizacje Twoich danych z projektu Firebase do BigQuery.
- Domyślnie wszystkie aplikacje w Twoim projekcie są połączone z BigQuery, a wszystkie aplikacje, które później dodasz do projektu, zostaną automatycznie połączone z BigQuery. Możesz zarządzać, które aplikacje wysyłają dane .
- Firebase eksportuje kopię Twoich istniejących danych do BigQuery. W przypadku każdej połączonej aplikacji obejmuje to tabelę wsadową zawierającą dane z codziennej synchronizacji.
- Jeśli włączysz eksport strumieniowy Crashlytics BigQuery, wszystkie połączone aplikacje będą miały tabelę w czasie rzeczywistym zawierającą stale aktualizowane dane.
Aby dezaktywować eksport BigQuery, odłącz swój projekt w konsoli Firebase.
Jakie dane są eksportowane do BigQuery?
Dane Firebase Crashlytics są eksportowane do zbioru danych BigQuery o nazwie firebase_crashlytics
. Domyślnie w zbiorze danych Crashlytics dla każdej aplikacji w Twoim projekcie zostaną utworzone osobne tabele. Firebase nazywa tabele na podstawie identyfikatora pakietu aplikacji, z kropkami przekonwertowanymi na podkreślenia i nazwą platformy dodaną na końcu.
Na przykład dane aplikacji o identyfikatorze com.google.test
znajdowałyby się w tabeli o nazwie com_google_test_ANDROID
. Ta tabela wsadowa jest aktualizowana raz dziennie. Jeśli włączysz eksport strumieniowy Crashlytics BigQuery, dane Firebase Crashlytics będą również przesyłane strumieniowo w czasie rzeczywistym do com_google_test_ANDROID_REALTIME
.
Każdy wiersz w tabeli reprezentuje zdarzenie, które wystąpiło w aplikacji, w tym awarie, błędy niekrytyczne i błędy ANR.
Włącz eksport strumieniowy Crashlytics BigQuery
Możesz przesyłać strumieniowo swoje dane Crashlytics w czasie rzeczywistym za pomocą BigQueryStreaming . Możesz go używać do dowolnego celu wymagającego danych na żywo, takiego jak prezentowanie informacji na pulpicie nawigacyjnym na żywo, oglądanie wdrożenia na żywo lub monitorowanie problemów z aplikacjami, które wyzwalają alerty i niestandardowe przepływy pracy.
Crashlytics Eksport strumieniowy BigQuery nie jest dostępny w piaskownicy BigQuery.
Gdy włączysz eksport strumieniowy Crashlytics BigQuery, oprócz tabeli wsadowej będziesz mieć dostęp do tabeli w czasie rzeczywistym. Oto różnice między tabelami, o których powinieneś wiedzieć:
Tabela partii | Tabela czasu rzeczywistego |
---|---|
|
|
Tabela wsadowa jest idealna do długoterminowej analizy i identyfikowania trendów w czasie, ponieważ trwale przechowujemy zdarzenia przed ich zapisaniem i można je uzupełniać w tabeli przez okres do 90 dni. Gdy zapisujemy dane w Twojej tabeli w czasie rzeczywistym, natychmiast zapisujemy je w BigQuery, dlatego jest to idealne rozwiązanie dla pulpitów nawigacyjnych na żywo i niestandardowych alertów. Te dwie tabele można połączyć z zapytaniem łączącym, aby uzyskać korzyści z obu. Zobacz przykład zapytania 9 poniżej.
Domyślnie czas wygaśnięcia partycji dla tabeli czasu rzeczywistego wynosi 30 dni. Aby dowiedzieć się, jak to zmienić, zobacz temat Aktualizowanie wygaśnięcia partycji .
Włącz przesyłanie strumieniowe Crashlytics BigQuery
Aby włączyć przesyłanie strumieniowe, przejdź do sekcji Crashlytics na stronie integracji BigQuery i zaznacz pole wyboru Uwzględnij przesyłanie strumieniowe .
Szablon Studia danych
Aby włączyć dane w czasie rzeczywistym w szablonie Studia danych, postępuj zgodnie z instrukcjami w Wizualizacja wyeksportowanych danych Crashlytics za pomocą Studia danych .
Wyświetlenia
Poniższe przykładowe zapytania możesz przekształcić w widoki, używając interfejsu BigQuery. Zobacz Tworzenie widoków , aby uzyskać szczegółowe instrukcje.
Co możesz zrobić z wyeksportowanymi danymi?
Eksporty BigQuery zawierają nieprzetworzone dane o awariach, w tym typ urządzenia, system operacyjny, wyjątki (aplikacje na Androida) lub błędy (aplikacje Apple), dzienniki Crashlytics oraz inne dane.
Praca z danymi Firebase Crashlytics w BigQuery
Poniższe przykłady ilustrują zapytania, które możesz uruchamiać na danych Crashlytics. Te zapytania generują raporty, które nie są dostępne w panelu Crashlytics.
Przykłady zapytań Crashlytics
Poniższe przykłady pokazują, jak generować raporty, które agregują dane o zdarzeniach awarii w łatwiejsze do zrozumienia podsumowania.
Przykład 1: Awarie w ciągu dnia
Po pracy nad naprawieniem jak największej liczby błędów główny programista uważa, że jej zespół jest wreszcie gotowy do uruchomienia nowej aplikacji do udostępniania zdjęć. Zanim to zrobią, chcą sprawdzić dzienną liczbę awarii w ciągu ostatniego miesiąca, aby upewnić się, że ich usuwanie błędów sprawiło, że aplikacja stała się bardziej stabilna w czasie:
SELECT COUNT(DISTINCT event_id) AS number_of_crashes, FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes FROM `projectId.firebase_crashlytics.package_name_ANDROID` GROUP BY date_of_crashes ORDER BY date_of_crashes DESC LIMIT 30;
Przykład 2: Znajdź najbardziej rozpowszechnione awarie
Aby odpowiednio ustalić priorytety planów produkcyjnych, kierownik projektu zastanawia się, jak wskazać 10 najczęstszych awarii w swoim produkcie. Tworzą zapytanie, które dostarcza odpowiednich punktów danych:
SELECT DISTINCT issue_id, COUNT(DISTINCT event_id) AS number_of_crashes, COUNT(DISTINCT installation_uuid) AS number_of_impacted_user, blame_frame.file, blame_frame.line FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(),INTERVAL 168 HOUR) AND event_timestamp < CURRENT_TIMESTAMP() GROUP BY issue_id, blame_frame.file, blame_frame.line ORDER BY number_of_crashes DESC LIMIT 10;
Przykład 3: 10 najczęściej ulegających awariom urządzeń
Jesień to nowy sezon na telefon! Deweloper wie, że oznacza to również nowy sezon problemów związanych z konkretnymi urządzeniami. Aby wyprzedzić zbliżające się problemy ze zgodnością, utworzyli zapytanie, które identyfikuje 10 urządzeń, które doświadczyły największej liczby awarii w zeszłym tygodniu:
SELECT device.model, COUNT(DISTINCT event_id) AS number_of_crashes FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 168 HOUR) AND event_timestamp < CURRENT_TIMESTAMP() GROUP BY device.model ORDER BY number_of_crashes DESC LIMIT 10;
Przykład 4: Filtruj według klucza niestandardowego
Twórca gry chce wiedzieć, na którym poziomie jego gry występuje najwięcej awarii. Aby pomóc im śledzić te statystyki, ustawili niestandardowy klucz Crashlytics current_level
i aktualizują go za każdym razem, gdy użytkownik osiągnie nowy poziom.
Cel C
CrashlyticsKit setIntValue:3 forKey:@"current_level";
Szybki
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
Jawa
Crashlytics.setInt("current_level", 3);
Mając ten klucz w eksporcie BigQuery, piszą następnie zapytanie, aby zgłosić rozkład wartości current_level
powiązanych z każdym zdarzeniem awarii:
SELECT COUNT(DISTINCT event_id) AS num_of_crashes, value FROM `projectId.firebase_crashlytics.package_name_ANDROID` UNNEST(custom_keys) WHERE key = "current_level" GROUP BY key, value ORDER BY num_of_crashes DESC
Przykład 5: Ekstrakcja identyfikatora użytkownika
Deweloper ma aplikację we wczesnym dostępie. Większość ich użytkowników to uwielbia, ale trzech doświadczyło niezwykłej liczby awarii. Aby dotrzeć do sedna problemu, piszą zapytanie, które pobiera wszystkie zdarzenia awarii dla tych użytkowników, używając ich identyfikatorów użytkowników:
SELECT * FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE user.id IN ("userid1", "userid2", "userid3") ORDER BY user.id
Przykład 6: Znajdź wszystkich użytkowników, którzy napotkali konkretny problem z awarią
Deweloper udostępnił krytyczny błąd grupie beta testerów. Zespół był w stanie użyć zapytania z przykładu 2 powyżej, aby zidentyfikować konkretny identyfikator problemu z awarią. Teraz chcą uruchomić zapytanie, aby wyodrębnić listę użytkowników aplikacji, których dotknęła ta awaria:
SELECT user.id as user_id FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE issue_id = "YOUR_ISSUE_ID" AND application.display_version = "" AND user.id != "" ORDER BY user.id;
Przykład 7: Liczba użytkowników, których dotyczy awaria, w podziale na kraje
Teraz zespół wykrył krytyczny błąd podczas wdrażania nowej wersji. Byli w stanie użyć zapytania z przykładu 2 powyżej, aby zidentyfikować konkretny identyfikator problemu z awarią. Zespół chciałby teraz sprawdzić, czy ta awaria rozprzestrzeniła się na użytkowników w różnych krajach na całym świecie.
Aby napisać to zapytanie, zespół będzie musiał:
Włącz eksport BigQuery dla Google Analytics. Zobacz Eksportowanie danych projektu do BigQuery .
Zaktualizuj ich aplikację, aby przekazywać identyfikator użytkownika zarówno do pakietu SDK Google Analytics, jak i pakietu SDK Crashlytics.
Cel C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
Szybki
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
Jawa
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
Napisz zapytanie używające pola identyfikatora użytkownika do łączenia zdarzeń w zbiorze danych BigQuery Google Analytics z awariami w zbiorze danych Crashlytics BigQuery:
SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted FROM `projectId.firebase_crashlytics.package_name_ANDROID` c INNER JOIN `projectId.analytics_YOUR_TABLE.events_*` a on c.user.id = a.user_id WHERE c.issue_id = "YOUR_ISSUE_ID" AND a._TABLE_SUFFIX BETWEEN '20190101' AND '20200101' GROUP BY c.issue_id, a.geo.country, c.user.id
Przykład 8: 5 najważniejszych problemów do tej pory
Wymaga włączenia eksportu strumieniowego Crashlytics BigQuery
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM `your_project.firebase_crashlytics.package_name_ANDROID_REALTIME` WHERE DATE(event_timestamp) = CURRENT_DATE() GROUP BY issue_id ORDER BY events DESC LIMIT 5;
Przykład 9: 5 najczęstszych problemów od DATE, w tym dzisiaj
Wymaga włączenia eksportu strumieniowego Crashlytics BigQuery.
W tym przykładzie łączymy tabele wsadowe i tabele czasu rzeczywistego, aby dodać informacje w czasie rzeczywistym do wiarygodnych danych wsadowych. Ponieważ event_id
jest kluczem podstawowym, możemy użyć DISTINCT event_id
do deduplikacji wszelkich typowych zdarzeń z dwóch tabel.
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM ( SELECT issue_id, event_id, event_timestamp FROM `your_project.firebase_crashlytics.package_name_ANDROID_REALTIME` UNION ALL SELECT issue_id, event_id, event_timestamp FROM `your_project.firebase_crashlytics.package_name_ANDROID`) WHERE event_timestamp >= "2020-01-13" GROUP BY issue_id ORDER BY events DESC LIMIT 5;
Zrozumienie schematu Firebase Crashlytics w BigQuery
Gdy połączysz Crashlytics z BigQuery, Firebase wyeksportuje ostatnie zdarzenia (awarie, błędy niekrytyczne i błędy ANR), w tym zdarzenia sprzed maksymalnie dwóch dni przed połączeniem, z opcją uzupełnienia do dziewięćdziesięciu dni.
Od tego momentu, dopóki nie wyłączysz łącza, Firebase codziennie eksportuje zdarzenia Crashlytics. Po każdym eksporcie dane mogą być dostępne w BigQuery po kilku minutach.
Zbiory danych
Firebase Crashlytics tworzy nowy zbiór danych w BigQuery dla danych Crashlytics. Zestaw danych obejmuje cały projekt, nawet jeśli zawiera wiele aplikacji.
Stoły
Firebase Crashlytics tworzy tabelę w zbiorze danych dla każdej aplikacji w Twoim projekcie, chyba że zrezygnujesz z eksportowania danych dla tej aplikacji. Firebase nazywa tabele na podstawie identyfikatora pakietu aplikacji, z kropkami przekonwertowanymi na podkreślenia i nazwą platformy dodaną na końcu.
Na przykład dane aplikacji na Androida o identyfikatorze com.google.test
znajdowałyby się w tabeli o nazwie com_google_test_ANDROID
, a dane czasu rzeczywistego (jeśli są włączone) w tabeli o nazwie com_google_test_ANDROID_REALTIME
Tabele zawierają standardowy zestaw danych Crashlytics oprócz wszelkich niestandardowych kluczy Crashlytics zdefiniowanych przez programistów.
Wydziwianie
Każdy wiersz w tabeli reprezentuje błąd napotkany przez aplikację.
Kolumny
Kolumny w tabeli są identyczne w przypadku awarii, błędów niekrytycznych i błędów ANR. Jeśli włączone jest eksportowanie strumieniowe Crashlytics BigQuery, tabela czasu rzeczywistego będzie miała te same kolumny, co tabela wsadowa. Kolumny w eksporcie są wymienione poniżej.
Bez śladów stosu
Kolumny obecne w wierszach reprezentujących zdarzenia bez śladów stosu.
Nazwa pola | Typ danych | Opis |
---|---|---|
platforma | STRUNOWY | Aplikacje Apple lub Android |
identyfikator_pakietu | STRUNOWY | Identyfikator pakietu, np. com.google.gmail |
identyfikator_zdarzenia | STRUNOWY | Unikalny identyfikator wydarzenia |
jest_fatalny | BOOLEAN | Czy aplikacja uległa awarii |
rodzaj_błędu | STRUNOWY | Typ błędu zdarzenia (FATAL, NON_FATAL, ANR) |
numer_wydania | STRUNOWY | Problem związany ze zdarzeniem |
identyfikator_wariantu | STRUNOWY | Wariant problemu powiązany z tym wydarzeniem Pamiętaj, że nie wszystkie zdarzenia mają powiązany wariant problemu. |
znacznik_czasu zdarzenia | ZNAK CZASU | Kiedy zdarzenie miało miejsce |
urządzenie | NAGRYWAĆ | Urządzenie, na którym wystąpiło zdarzenie |
producent.urządzenia | STRUNOWY | Producent urządzenia |
model urządzenia | STRUNOWY | Model urządzenia |
architektura.urządzenia | STRUNOWY | X86_32, X86_64, ARMV7, ARM64, ARMV7S lub ARMV7K |
pamięć | NAGRYWAĆ | Stan pamięci urządzenia |
pamięć.używana | INT64 | Wykorzystane bajty pamięci |
pamięć.wolna | INT65 | Pozostało bajtów pamięci |
składowanie | NAGRYWAĆ | Pamięć trwała urządzenia |
przechowywanie.używane | INT64 | Używane bajty pamięci |
przechowywanie.darmowe | INT64 | Pozostało bajtów pamięci |
system operacyjny | NAGRYWAĆ | Szczegóły systemu operacyjnego na urządzeniu |
system_operacyjny.wersja_wyświetlana | STRUNOWY | Wersja systemu operacyjnego na urządzeniu |
nazwa_systemu_operacyjnego | STRUNOWY | Nazwa systemu operacyjnego na urządzeniu |
system_operacyjny.stan_modyfikacji | STRUNOWY | Czy urządzenie zostało zmodyfikowane, na przykład jailbreak/root (ZMODYFIKOWANE lub NIEMODYFIKOWANE) |
typ_systemu_operacyjnego | STRUNOWY | Rodzaj systemu operacyjnego działającego na urządzeniu (na przykład IOS, MACOS); dostępne tylko dla aplikacji platform Apple |
system_operacyjny. typ_urządzenia | STRUNOWY | Rodzaj urządzenia (na przykład KOMÓRKOWY, TABLET, TV itp.); znany również jako „kategoria urządzenia” |
aplikacja | NAGRYWAĆ | Aplikacja, która wygenerowała zdarzenie |
aplikacja.wersja_kompilacji | STRUNOWY | Wersja kompilacji aplikacji |
aplikacja.wyświetlana_wersja | STRUNOWY | |
użytkownik | NAGRYWAĆ | Opcjonalnie: informacje zebrane o użytkowniku aplikacji |
nazwa użytkownika | STRUNOWY | Opcjonalnie: nazwa użytkownika |
użytkownik.e-mail | STRUNOWY | Opcjonalnie: adres e-mail użytkownika |
identyfikator użytkownika | STRUNOWY | Opcjonalnie: identyfikator aplikacji powiązany z użytkownikiem |
niestandardowe_klucze | POWTÓRZONY ZAPIS | Pary klucz-wartość zdefiniowane przez programistę |
klucze_niestandardowe.klucz | STRUNOWY | Klucz zdefiniowany przez programistę |
niestandardowe_klucze.wartość | STRUNOWY | Wartość zdefiniowana przez dewelopera |
instalacja_uuid | STRUNOWY | Identyfikator, który identyfikuje unikalną instalację aplikacji i urządzenia |
crashlytics_sdk_versions | STRUNOWY | Wersja Crashlytics SDK, która wygenerowała zdarzenie |
orientacja_aplikacji | STRUNOWY | PORTRET, KRAJOBRAZ, FACE_UP lub FACE_DOWN |
orientacja_urządzenia | STRUNOWY | PORTRET, KRAJOBRAZ, FACE_UP lub FACE_DOWN |
stan_procesu | STRUNOWY | TŁO lub PIERWSZY PLAN |
logi | POWTÓRZONY ZAPIS | Komunikaty dziennika ze znacznikiem czasu generowane przez rejestrator Crashlytics, jeśli jest włączony |
logi.sygnatura czasowa | ZNAK CZASU | Kiedy powstał dziennik |
logi.wiadomość | STRUNOWY | Zarejestrowana wiadomość |
bułka tarta | POWTÓRZONY ZAPIS | Bułka tarta Google Analytics ze znacznikiem czasu, jeśli jest włączona |
bułka tarta.znacznik czasu | ZNAK CZASU | Sygnatura czasowa powiązana z bułką tartą |
bułka tarta.nazwa | STRUNOWY | Nazwa związana z bułką tartą |
bułka tarta. parametry | POWTÓRZONY ZAPIS | Parametry powiązane z bułką tartą |
bułka tarta.parametry.klucz | STRUNOWY | Klucz parametru powiązany z bułką tartą |
bułka tarta.parametry.wartość | STRUNOWY | Wartość parametru skojarzona z bułką tartą |
ramka_winy | NAGRYWAĆ | Ramka zidentyfikowana jako podstawowa przyczyna awarii lub błędu |
ramka_winy.linia | INT64 | Numer wiersza pliku ramki |
plik win_frame | STRUNOWY | Nazwa pliku ramki |
symbol_ramki winy | STRUNOWY | Uwodniony symbol lub surowy symbol, jeśli jest nieuwodniony |
ramka_winy.przesunięcie | INT64 | Przesunięcie bajtu do obrazu binarnego zawierającego kod, nieustawione dla wyjątków Java |
adres_ramki_winy | INT64 | Adres w obrazie binarnym, który zawiera kod, nieustawiony dla ramek Java |
win_frame.biblioteka | STRUNOWY | Nazwa wyświetlana biblioteki zawierającej ramkę |
właściciel_ramki winy | STRUNOWY | DEWELOPER, SPRZEDAWCA, ŚRODOWISKO PRACY, PLATFORMA lub SYSTEM |
winna_ramka.obwiniona | BOOLEAN | Czy analiza Crashlytics wykazała, że ta ramka jest przyczyną awarii lub błędu |
wyjątki | POWTÓRZONY ZAPIS | Tylko Android: wyjątki, które wystąpiły podczas tego wydarzenia. Zagnieżdżone wyjątki są prezentowane w odwrotnej kolejności chronologicznej (czytaj: ostatni rekord jest pierwszym rzuconym wyjątkiem) |
wyjątki.typ | STRUNOWY | Typ wyjątku, np. java.lang.IllegalStateException |
wyjątki.komunikat_wyjątku | STRUNOWY | Komunikat powiązany z wyjątkiem |
wyjątki.zagnieżdżone | BOOLEAN | Prawda dla wszystkich oprócz ostatniego zgłoszonego wyjątku (tj. pierwszego rekordu) |
wyjątki.tytuł | STRUNOWY | Tytuł wątku |
wyjątki.napisy | STRUNOWY | Podtytuł wątku |
wyjątki.obwinione | BOOLEAN | Prawda, jeśli Crashlytics ustali, że przyczyną błędu lub awarii jest wyjątek |
wyjątki.ramki | POWTÓRZONY ZAPIS | Ramki skojarzone z wyjątkiem |
wyjątki.ramki.linia | INT64 | Numer wiersza pliku ramki |
wyjątki.ramki.plik | STRUNOWY | Nazwa pliku ramki |
wyjątki.ramki.symbol | STRUNOWY | Uwodniony symbol lub surowy symbol, jeśli jest nieuwodniony |
wyjątki.ramki.przesunięcie | INT64 | Przesunięcie bajtu do obrazu binarnego zawierającego kod, nieustawione dla wyjątków Java |
wyjątki.ramki.adres | INT64 | Adres w obrazie binarnym, który zawiera kod, nieustawiony dla ramek Java |
wyjątki.ramki.biblioteka | STRUNOWY | Nazwa wyświetlana biblioteki zawierającej ramkę |
wyjątki.ramki.właściciel | STRUNOWY | DEWELOPER, SPRZEDAWCA, ŚRODOWISKO PRACY, PLATFORMA lub SYSTEM |
wyjątki.ramki.obwinione | BOOLEAN | Czy analiza Crashlytics wykazała, że ta ramka jest przyczyną awarii lub błędu |
błąd | POWTÓRZONY ZAPIS | Tylko aplikacje Apple: błędy niekrytyczne |
błąd.nazwa_kolejki | STRUNOWY | Kolejka, w której działał wątek |
Kod błędu | INT64 | Kod błędu powiązany z niestandardowym zarejestrowanym błędem NSError aplikacji |
błąd.tytuł | STRUNOWY | Tytuł wątku |
błąd.podtytuł | STRUNOWY | Podtytuł wątku |
błąd.obwiniony | BOOLEAN | Czy analiza Crashlytics ustaliła, że ta ramka jest przyczyną błędu |
ramki błędów | POWTÓRZONY ZAPIS | Ramki śladu stosu |
linia.ramek.błędów | INT64 | Numer wiersza pliku ramki |
plik.ramek.błędów | STRUNOWY | Nazwa pliku ramki |
błąd.ramki.symbol | STRUNOWY | Uwodniony symbol lub surowy symbol, jeśli jest nieuwodniony |
błąd.ramki.przesunięcie | INT64 | Przesunięcie bajtu do obrazu binarnego, który zawiera kod |
błąd.ramki.adres | INT64 | Adres w obrazie binarnym, który zawiera kod |
biblioteka.ramek.błędów | STRUNOWY | Nazwa wyświetlana biblioteki zawierającej ramkę |
właściciel.ramek.błędów | STRUNOWY | DEWELOPER, SPRZEDAWCA, ŚRODOWISKO PRACY, PLATFORMA lub SYSTEM |
błędy.ramki.obwinione | BOOLEAN | Czy analiza Crashlytics ustaliła, że ta ramka jest przyczyną błędu |
wątki | POWTÓRZONY ZAPIS | Wątki obecne w czasie wydarzenia |
wątki.rozbite | BOOLEAN | Czy wątek się zawiesił |
nici.nazwa_wątku | STRUNOWY | Nazwa wątku |
wątki.nazwa_kolejki | STRUNOWY | Tylko aplikacje firmy Apple: Kolejka, w której był uruchomiony wątek |
nici.nazwa_sygnału | STRUNOWY | Nazwa sygnału, który spowodował awarię aplikacji, występuje tylko w wątkach natywnych, które uległy awarii |
wątki.kod_sygnału | STRUNOWY | Kod sygnału, który spowodował awarię aplikacji; obecny tylko w uszkodzonych wątkach natywnych |
wątki.adres_awarii | INT64 | Adres sygnału, który spowodował awarię aplikacji; obecny tylko w uszkodzonych wątkach natywnych |
wątki.kod | INT64 | Tylko aplikacje firmy Apple: kod błędu niestandardowego zarejestrowanego błędu NSError aplikacji |
wątki.tytuł | STRUNOWY | Tytuł wątku |
wątki.napisy | STRUNOWY | Podtytuł wątku |
wątki.obwinione | BOOLEAN | Czy analiza Crashlytics wykazała, że ta ramka jest przyczyną awarii lub błędu |
wątki.ramki | POWTÓRZONY ZAPIS | Ramy wątku |
wątki.ramki.linia | INT64 | Numer wiersza pliku ramki |
wątki.ramki.plik | STRUNOWY | Nazwa pliku ramki |
wątki.ramki.symbol | STRUNOWY | Symbol nawodnienia lub surowy symbol, jeśli nie można go nawodnić |
wątki.ramki.przesunięcie | INT64 | Przesunięcie bajtu do obrazu binarnego, który zawiera kod |
wątki.ramki.adres | INT64 | Adres w obrazie binarnym, który zawiera kod |
wątki.ramki.biblioteka | STRUNOWY | Nazwa wyświetlana biblioteki zawierającej ramkę |
wątki.ramki.właściciel | STRUNOWY | DEWELOPER, SPRZEDAWCA, CZAS URUCHAMIANIA, PLATFORMA lub SYSTEM |
wątki.ramki.obwinione | BOOLEAN | Czy analiza Crashlytics ustaliła, że ta ramka jest przyczyną błędu |
unity_metadane.unity_version | STRUNOWY | Wersja Unity działająca na tym urządzeniu |
unity_metadane.debug_build | BOOLEAN | Jeśli jest to kompilacja debugowania |
unity_metadane.processor_type | STRUNOWY | Typ procesora |
unity_metadane.processor_count | INT64 | Liczba procesorów (rdzeni) |
unity_metadane.processor_frequency_mhz | INT64 | Częstotliwość procesora (procesorów) w MHz |
unity_metadane.system_memory_size_mb | INT64 | Wielkość pamięci systemowej w Mb |
unity_metadane.graphics_memory_size_mb | INT64 | Pamięć grafiki w MB |
unity_metadane.graphics_device_id | INT64 | Identyfikator urządzenia graficznego |
unity_metadane.graphics_device_vendor_id | INT64 | Identyfikator dostawcy procesora graficznego |
unity_metadane.graphics_device_name | STRUNOWY | Nazwa urządzenia graficznego |
unity_metadane.graphics_device_vendor | STRUNOWY | Dostawca urządzenia graficznego |
unity_metadane.graphics_device_version | STRUNOWY | Wersja urządzenia graficznego |
unity_metadane.graphics_device_type | STRUNOWY | Typ urządzenia graficznego |
unity_metadane.graphics_shader_level | INT64 | Poziom cieniowania grafiki |
unity_metadane.graphics_render_target_count | INT64 | Liczba graficznych celów renderowania |
unity_metadata.graphics_copy_texture_support | STRUNOWY | Obsługa kopiowania tekstur graficznych zgodnie z definicją w interfejsie Unity API |
unity_metadane.graphics_max_texture_size | INT64 | Maksymalny rozmiar przeznaczony do renderowania tekstury |
unity_metadane.screen_size_px | STRUNOWY | Rozmiar ekranu w pikselach, sformatowany jako szerokość x wysokość |
unity_metadane.screen_resolution_dpi | STRUNOWY | DPI ekranu jako liczba zmiennoprzecinkowa |
unity_metadane.screen_refresh_rate_hz | INT64 | Częstotliwość odświeżania ekranu w Hz |
Wizualizacja wyeksportowanych danych Crashlytics za pomocą Data Studio
Studio danych Google przekształca Twoje zbiory danych Crashlytics w BigQuery w raporty, które są łatwe do odczytania, udostępniania iw pełni konfigurowalne.
Aby dowiedzieć się więcej o korzystaniu ze Studia danych, wypróbuj krótki przewodnik po Studiu danych Witamy w Studiu danych .
Korzystanie z szablonu raportu Crashlytics
Data Studio zawiera przykładowy raport dla Crashlytics, który zawiera kompleksowy zestaw wymiarów i danych z wyeksportowanego schematu Crashlytics BigQuery. Jeśli masz włączony eksport strumieniowy Crashlytics BigQuery, możesz wyświetlać te dane na stronie Trendy w czasie rzeczywistym w szablonie Studia danych. Możesz użyć przykładu jako szablonu do szybkiego tworzenia nowych raportów i wizualizacji na podstawie nieprzetworzonych danych o awariach własnej aplikacji:
- Otwórz szablon pulpitu nawigacyjnego Crashlytics Data Studio .
- Kliknij Użyj szablonu w prawym górnym rogu.
- Z listy rozwijanej Nowe źródło danych wybierz opcję Utwórz nowe źródło danych .
- Kliknij Wybierz na karcie BigQuery .
- Wybierz tabelę zawierającą wyeksportowane dane Crashlytics, wybierając Moje projekty > [nazwa-twojego-projektu] > firebase_crashlytics > [nazwa-twojej-tabeli] . Twoja tabela wsadowa jest zawsze dostępna do wyboru; jeśli włączony jest eksport strumieniowy Crashlytics BigQuery, zamiast tego możesz wybrać tabelę w czasie rzeczywistym.
- W sekcji Konfiguracja ustaw poziom szablonu Crashlytics na Domyślny .
- Kliknij Połącz , aby utworzyć nowe źródło danych.
- Kliknij Dodaj do raportu , aby wrócić do szablonu Crashlytics.
- Na koniec kliknij Utwórz raport , aby utworzyć kopię szablonu pulpitu nawigacyjnego Crashlytics Data Studio.