Możesz wyeksportować dane Crashlytics do BigQuery w celu dalszej analizy. BigQuery pozwala analizować dane za pomocą BigQuery SQL, eksportować je do innego dostawcy usług w chmurze i używać ich do wizualizacji i niestandardowych dashboardów w Google Data Studio.
Włącz eksport BigQuery
- Przejdź do strony Integracje w konsoli Firebase.
- Na karcie BigQuery kliknij Link .
- Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby włączyć BigQuery.
Gdy połączysz swój projekt z BigQuery:
- Firebase konfiguruje codzienną synchronizację danych z projektu Firebase z 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ę 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 również tabelę czasu rzeczywistego 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 zestawie danych Crashlytics dla każdej aplikacji w Twoim projekcie zostaną utworzone osobne tabele. Firebase nazywa tabele na podstawie identyfikatora pakietu aplikacji, z kropkami konwertowanymi na podkreślenia i dołączoną na końcu nazwą platformy.
Na przykład dane aplikacji o identyfikatorze com.google.test
będą znajdować 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 inne niż krytyczne i błędy ANR.
Włącz eksport strumieniowy Crashlytics BigQuery
Dzięki BigQueryStreaming możesz przesyłać strumieniowo dane Crashlytics w czasie rzeczywistym. Można go używać do dowolnego celu, który wymaga danych na żywo, na przykład prezentowania informacji na pulpicie nawigacyjnym na żywo, oglądania wdrożenia na żywo lub monitorowania problemów z aplikacjami, które wyzwalają alerty i niestandardowe przepływy pracy.
Eksport strumieniowy Crashlytics BigQuery nie jest dostępny w piaskownicy BigQuery.
Po włączeniu eksportu strumieniowego Crashlytics BigQuery oprócz tabeli wsadowej dostępna będzie tabela czasu rzeczywistego. Oto różnice, o których powinieneś wiedzieć pomiędzy tabelami:
Tabela partii | Tabela czasu rzeczywistego |
---|---|
|
|
Tabela wsadowa idealnie nadaje się 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 aż do 90 dni. Kiedy zapisujemy dane do Twojej tabeli czasu rzeczywistego, natychmiast zapisujemy je do BigQuery, dzięki czemu idealnie nadaje się do żywych dashboardów 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 tabela czasu rzeczywistego ma czas wygaśnięcia partycji wynoszący 30 dni. Aby dowiedzieć się, jak to zmodyfikować, zobacz Aktualizowanie daty ważności 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 artykule Wizualizacja wyeksportowanych danych Crashlytics za pomocą Studia danych .
Wyświetlenia
Poniższe przykładowe zapytania możesz przekształcić w widoki, korzystając z interfejsu użytkownika BigQuery. Szczegółowe instrukcje można znaleźć w sekcji Tworzenie widoków .
Co możesz zrobić z wyeksportowanymi danymi?
Eksporty BigQuery zawierają surowe dane o awariach, w tym typ urządzenia, system operacyjny, wyjątki (aplikacje na Androida) lub błędy (aplikacje Apple), dzienniki Crashlytics, a także inne dane.
Praca z danymi Firebase Crashlytics w BigQuery
Poniższe przykłady przedstawiają zapytania, które można uruchamiać na danych Crashlytics. Te zapytania generują raporty, które nie są dostępne w panelu kontrolnym Crashlytics.
Przykłady zapytań Crashlytics
Poniższe przykłady pokazują, jak generować raporty, które agregują dane o zdarzeniach awaryjnych w łatwiejsze do zrozumienia podsumowania.
Przykład 1: Awarie w ciągu dnia
Po naprawieniu jak największej liczby błędów główna programistka uważa, że jej zespół jest wreszcie gotowy do uruchomienia nowej aplikacji do udostępniania zdjęć. Zanim to zrobią, chcą sprawdzić liczbę awarii dziennie w ciągu ostatniego miesiąca, aby mieć pewność, że ich analiza błędów sprawiła, że aplikacja z biegiem czasu stała się bardziej stabilna:
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 powszechne awarie
Aby właściwie ustalić priorytety planów produkcyjnych, kierownik projektu zastanawia się, jak wskazać 10 najczęstszych awarii produktu. 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 urządzeń, które najczęściej ulegają awariom
Jesień to nowy sezon na telefony! Deweloper wie, że oznacza to również nowy sezon problemów związanych z konkretnymi urządzeniami. Aby wyprzedzić pojawiające się problemy ze zgodnością, utworzyli zapytanie identyfikujące 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 jej gry występuje najwięcej awarii. Aby pomóc im w śledzeniu tych statystyk, ustawiają 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, następnie piszą 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: Wyodrębnianie identyfikatora użytkownika
Deweloper ma aplikację we wczesnym dostępie. Większość 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 borykają się z konkretnym problemem związanym z awarią
Deweloper udostępnił grupie beta testerów krytyczny błąd. Zespołowi udało się użyć zapytania z przykładu 2 powyżej, aby zidentyfikować konkretny identyfikator problemu z awarią. Teraz chcieliby 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 dotkniętych awarią, w podziale na kraje
Teraz zespół wykrył krytyczny błąd podczas wdrażania nowej wersji. Udało im się użyć zapytania z przykładu 2 powyżej, aby zidentyfikować konkretny identyfikator problemu z awarią. Zespół chciałby teraz sprawdzić, czy 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 aplikację, aby przekazać 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 korzystające z pola identyfikatora użytkownika w celu połączenia zdarzeń w zbiorze danych Google Analytics BigQuery 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 dzisiaj
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 najważniejszych problemów od DATE, łącznie z dniem dzisiejszym
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
aby wydedukować wspólne zdarzenia 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 eksportuje najnowsze zdarzenia (awarie, błędy niekrytyczne i błędy ANR), w tym zdarzenia sprzed maksymalnie dwóch dni przed połączeniem, z opcją uzupełnienia danych do dziewięćdziesięciu dni.
Od tego momentu, aż do wyłączenia łącza, Firebase codziennie eksportuje zdarzenia Crashlytics. Po każdym eksporcie może minąć kilka minut, zanim dane będą dostępne w BigQuery.
Zbiory danych
Firebase Crashlytics tworzy nowy zbiór danych w BigQuery dla danych Crashlytics. Zbiór 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 konwertowanymi na podkreślenia i dołączoną na końcu nazwą platformy.
Na przykład dane aplikacji na Androida o identyfikatorze com.google.test
będą znajdować się w tabeli o nazwie com_google_test_ANDROID
, a dane w czasie rzeczywistym (jeśli są włączone) będą znajdować się 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 innych niż krytyczne i błędów ANR. Jeśli włączono eksport strumieniowy Crashlytics BigQuery, tabela czasu rzeczywistego będzie zawierać te same kolumny, co tabela wsadowa. Kolumny w ramach eksportu są wymienione poniżej.
Bez śladów stosu
Kolumny obecne w wierszach, które reprezentują 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_wydarzenia | STRUNOWY | Unikalny identyfikator wydarzenia |
jest_fatalny | BOOLEAN | Czy aplikacja uległa awarii |
typ_błędu | STRUNOWY | Typ błędu zdarzenia (FATAL, NON_FATAL, ANR) |
identyfikator_problemu | STRUNOWY | Problem związany ze zdarzeniem |
identyfikator_wariantu | STRUNOWY | Wariant problemu powiązany z tym zdarzeniem Należy pamiętać, że nie wszystkie zdarzenia mają powiązany wariant problemu. |
wydarzenie_znacznik czasu | ZNAK CZASU | Kiedy zdarzenie miało miejsce |
urządzenie | NAGRYWAĆ | Urządzenie, na którym miało miejsce 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 | Używane bajty pamięci |
pamięć.wolna | INT64 | Pozostała ilość bajtów pamięci |
składowanie | NAGRYWAĆ | Pamięć trwała urządzenia |
przechowywanie.używane | INT64 | Wykorzystane bajty pamięci |
przechowywanie.bezpłatne | INT64 | Pozostała ilość bajtów |
system operacyjny | NAGRYWAĆ | Szczegóły systemu operacyjnego na urządzeniu |
system_operacyjny.wersja_wyświetlania | 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 po jailbreaku/zrootowaniu (MODYFIKOWANE lub NIEMODYFIKOWANE) |
typ_systemu_operacyjnego.typ | STRUNOWY | rodzaj systemu operacyjnego działającego na urządzeniu (na przykład IOS, MACOS); dostępne tylko dla aplikacji na platformę Apple |
system_operacyjny.typ_urządzenia | STRUNOWY | Rodzaj urządzenia (na przykład MOBILE, TABLET, TV itp.); znana również jako „kategoria urządzenia” |
aplikacja | NAGRYWAĆ | Aplikacja, która wygenerowała wydarzenie |
aplikacja.wersja_kompilacji | STRUNOWY | Wersja kompilacji aplikacji |
aplikacja.wersja_wyświetlania | 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ÓRNY REJESTR | Zdefiniowane przez programistę pary klucz-wartość |
niestandardowe_klucze.key | STRUNOWY | Klucz zdefiniowany przez programistę |
wartość_kluczy_niestandardowych.wartość | STRUNOWY | Wartość zdefiniowana przez programistę |
instalacja_uuid | STRUNOWY | Identyfikator identyfikujący unikalną instalację aplikacji i urządzenia |
Crashlytics_sdk_versions | STRUNOWY | Wersja zestawu SDK Crashlytics, 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 |
dzienniki | POWTÓRNY REJESTR | Komunikaty dziennika ze znacznikiem czasu generowane przez rejestrator Crashlytics, jeśli jest włączony |
logi.znacznik czasu | ZNAK CZASU | Kiedy powstał dziennik |
logi.wiadomość | STRUNOWY | Zarejestrowana wiadomość |
bułka tarta | POWTÓRNY REJESTR | Okruszki nawigacyjne Google Analytics ze znacznikiem czasu, jeśli są włączone |
bułka tarta.znacznik czasu | ZNAK CZASU | Sygnatura czasowa powiązana ze ścieżką nawigacyjną |
nazwa.bułki tartej | STRUNOWY | Nazwa powiązana z bułką tartą |
bułka tarta.parametry | POWTÓRNY REJESTR | Parametry powiązane z bułką tartą |
breadcrumbs.params.key | STRUNOWY | Klucz parametru powiązany z bułką tartą |
breadcrumbs.params.value | STRUNOWY | Wartość parametru powiązana z menu nawigacyjnym |
ramka_winy | NAGRYWAĆ | Rama zidentyfikowana jako główna przyczyna awarii lub błędu |
wina_frame.line | INT64 | Numer linii pliku ramki |
plik_ramki_winy.plik | STRUNOWY | Nazwa pliku ramki |
symbol ramki_winy | STRUNOWY | Symbol uwodniony lub symbol surowy, jeśli nie ulega uwodnieniu |
winna_ramka.offset | INT64 | Przesunięcie bajtowe w obrazie binarnym zawierającym kod, nieustawione dla wyjątków Java |
adres_ramki_winy | INT64 | Adres w obrazie binarnym, który zawiera kod, nieustawiony dla ramek Java |
biblioteka winna_frame.library | STRUNOWY | Nazwa wyświetlana biblioteki zawierającej ramkę |
wina_frame.właściciel | STRUNOWY | PROJEKTANT, DOSTAWCA, ŚRODOWISKO PRACY, PLATFORMA lub SYSTEM |
winna_ramka.obwiniana | BOOLEAN | Czy analiza Crashlytics wykazała, że ta ramka jest przyczyną awarii lub błędu |
wyjątki | POWTÓRNY REJESTR | Tylko Android: wyjątki, które wystąpiły podczas tego zdarzenia. Zagnieżdżone wyjątki są prezentowane w odwrotnej kolejności chronologicznej (czytaj: ostatni rekord jest pierwszym zgłoszonym wyjątkiem) |
wyjątki.typ | STRUNOWY | Typ wyjątku, np. java.lang.IllegalStateException |
wyjątki.wiadomość_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.podtytuł | STRUNOWY | Podtytuł wątku |
wyjątki.obwiniane | BOOLEAN | Prawda, jeśli Crashlytics ustali, że za błąd lub awarię odpowiedzialny jest wyjątek |
wyjątki.ramki | POWTÓRNY REJESTR | Ramki powiązane z wyjątkiem |
wyjątki.ramki.linia | INT64 | Numer linii pliku ramki |
plik.wyjątków.ramek | STRUNOWY | Nazwa pliku ramki |
wyjątki.ramki.symbol | STRUNOWY | Symbol uwodniony lub symbol surowy, jeśli nie ulega uwodnieniu |
wyjątki.ramki.przesunięcie | INT64 | Przesunięcie bajtowe w obrazie binarnym zawierającym kod, nieustawione dla wyjątków Java |
adres.wyjątków.ramek | INT64 | Adres w obrazie binarnym zawierającym kod, nieustawiony dla ramek Java |
biblioteka wyjątków.ramek | STRUNOWY | Nazwa wyświetlana biblioteki zawierającej ramkę |
właściciel.wyjątków.ramek | STRUNOWY | PROJEKTANT, DOSTAWCA, ŚRODOWISKO PRACY, PLATFORMA lub SYSTEM |
wyjątki.ramki.obwiniane | BOOLEAN | Czy analiza Crashlytics wykazała, że ta ramka jest przyczyną awarii lub błędu |
błąd | POWTÓRNY REJESTR | 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 niestandardowo zarejestrowanym błędem NSError aplikacji |
błąd.tytuł | STRUNOWY | Tytuł wątku |
błąd.napisy | STRUNOWY | Podtytuł wątku |
błąd.obwiniony | BOOLEAN | Czy analiza Crashlytics wykazała, że przyczyną błędu jest ta ramka |
błędy.ramki | POWTÓRNY REJESTR | Ramki stosu |
linia.błędu.ramek | INT64 | Numer linii pliku ramki |
plik.error.frames | STRUNOWY | Nazwa pliku ramki |
symbol.ramki.błędu | STRUNOWY | Symbol uwodniony lub symbol surowy, jeśli nie ulega uwodnieniu |
przesunięcie.błędu.ramek | INT64 | Przesunięcie bajtu w obrazie binarnym zawierającym kod |
adres.błędu.ramek | INT64 | Adres w obrazie binarnym, który zawiera kod |
biblioteka błędów.ramek | STRUNOWY | Nazwa wyświetlana biblioteki zawierającej ramkę |
właściciel.błędu.ramek | STRUNOWY | PROJEKTANT, DOSTAWCA, ŚRODOWISKO PRACY, PLATFORMA lub SYSTEM |
błąd.ramek.obwiniony | BOOLEAN | Czy analiza Crashlytics wykazała, że przyczyną błędu jest ta ramka |
wątki | POWTÓRNY REJESTR | Wątki obecne w momencie wydarzenia |
wątki.awaria | BOOLEAN | Czy wątek się zawiesił |
wątki.nazwa_wątku | STRUNOWY | Nazwa wątku |
wątki.nazwa_kolejki | STRUNOWY | Tylko aplikacje Apple: kolejka, w której działał wątek |
wątki.nazwa_sygnału | STRUNOWY | Nazwa sygnału, który spowodował awarię aplikacji, występuje tylko w przypadku uszkodzonych wątków natywnych |
wątki.kod_sygnału | STRUNOWY | Kod sygnału, który spowodował awarię aplikacji; obecny tylko w uszkodzonych wątkach natywnych |
wątki.adres_crash | INT64 | Adres sygnału, który spowodował awarię aplikacji; obecny tylko w uszkodzonych wątkach natywnych |
wątki.kod | INT64 | Tylko aplikacje Apple: kod błędu niestandardowego zarejestrowanego błędu NSError aplikacji |
wątki.tytuł | STRUNOWY | Tytuł wątku |
wątki.podtytuł | STRUNOWY | Podtytuł wątku |
wątki.obwiniane | BOOLEAN | Czy analiza Crashlytics wykazała, że ta ramka jest przyczyną awarii lub błędu |
wątki.ramki | POWTÓRNY REJESTR | Ramy wątku |
wątki.ramki.linia | INT64 | Numer linii pliku ramki |
plik wątków.ramek | STRUNOWY | Nazwa pliku ramki |
wątki.ramki.symbol | STRUNOWY | Symbol uwodniony lub symbol surowy, jeśli jest nieuwodniony |
przesunięcie wątków.ramek | INT64 | Przesunięcie bajtu w obrazie binarnym zawierającym kod |
adresy.wątków.ramek | INT64 | Adres w obrazie binarnym, który zawiera kod |
biblioteka wątków.ramek | STRUNOWY | Nazwa wyświetlana biblioteki zawierającej ramkę |
właściciel wątków.ramek | STRUNOWY | PROJEKTANT, DOSTAWCA, ŚRODOWISKO PRACY, PLATFORMA lub SYSTEM |
wątki.ramki.obwiniane | BOOLEAN | Czy analiza Crashlytics wykazała, że przyczyną błędu jest ta ramka |
unity_metadata.unity_version | STRUNOWY | Wersja Unity działająca na tym urządzeniu |
unity_metadata.debug_build | BOOLEAN | Jeśli jest to kompilacja debugowania |
unity_metadata.processor_type | STRUNOWY | Typ procesora |
unity_metadata.processor_count | INT64 | Liczba procesorów (rdzeni) |
unity_metadata.processor_frequency_mhz | INT64 | Częstotliwość procesora(-ów) w MHz |
unity_metadata.system_memory_size_mb | INT64 | Rozmiar pamięci systemu w Mb |
unity_metadata.graphics_memory_size_mb | INT64 | Pamięć graficzna w MB |
unity_metadata.graphics_device_id | INT64 | Identyfikator urządzenia graficznego |
unity_metadata.graphics_device_vendor_id | INT64 | Identyfikator dostawcy procesora graficznego |
unity_metadata.graphics_device_name | STRUNOWY | Nazwa urządzenia graficznego |
unity_metadata.graphics_device_vendor | STRUNOWY | Dostawca urządzenia graficznego |
unity_metadata.graphics_device_version | STRUNOWY | Wersja urządzenia graficznego |
unity_metadata.graphics_device_type | STRUNOWY | Typ urządzenia graficznego |
unity_metadata.graphics_shader_level | INT64 | Poziom shaderów grafiki |
unity_metadata.graphics_render_target_count | INT64 | Liczba celów renderowania graficznego |
unity_metadata.graphics_copy_texture_support | STRUNOWY | Obsługa kopiowania tekstur graficznych zgodnie z definicją w interfejsie API Unity |
unity_metadata.graphics_max_texture_size | INT64 | Maksymalny rozmiar przeznaczony do renderowania tekstur |
unity_metadata.screen_size_px | STRUNOWY | Rozmiar ekranu w pikselach, sformatowany jako szerokość x wysokość |
unity_metadata.screen_registration_dpi | STRUNOWY | DPI ekranu jako liczba zmiennoprzecinkowa |
unity_metadata.screen_refresh_rate_hz | INT64 | Częstotliwość odświeżania ekranu w Hz |
Wizualizacja wyeksportowanych danych Crashlytics za pomocą Data Studio
Google Data Studio przekształca zbiory danych Crashlytics w BigQuery w raporty, które są łatwe do odczytania, łatwe do udostępniania i w pełni konfigurowalne.
Aby dowiedzieć się więcej o korzystaniu ze Studia danych, zapoznaj się z krótkim przewodnikiem po Studiu danych Witamy w Studiu danych .
Korzystanie z szablonu raportu Crashlytics
Studio danych ma przykładowy raport dla Crashlytics, który zawiera kompleksowy zestaw wymiarów i danych z wyeksportowanego schematu Crashlytics BigQuery. Jeśli włączyłeś eksport strumieniowy Crashlytics BigQuery, możesz wyświetlić te dane na stronie Trendy w czasie rzeczywistym w szablonie Studia danych. Możesz użyć próbki jako szablonu, aby szybko utworzyć nowe raporty i wizualizacje na podstawie nieprzetworzonych danych o awariach Twojej aplikacji:
- Otwórz szablon panelu kontrolnego Crashlytics Data Studio .
- Kliknij opcję 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, możesz zamiast tego wybrać tabelę czasu rzeczywistego.
- W obszarze Konfiguracja ustaw poziom szablonu Crashlytics na Domyślny .
- Kliknij Połącz , aby utworzyć nowe źródło danych.
- Kliknij Dodaj do raportu , aby powrócić do szablonu Crashlytics.
- Na koniec kliknij Utwórz raport , aby utworzyć kopię szablonu pulpitu nawigacyjnego Crashlytics Data Studio.