Eksportuj dane Firebase Crashlytics do BigQuery

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

  1. Przejdź do strony Integracje w konsoli Firebase.
  2. Na karcie BigQuery kliknij Link .
  3. 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
  • Dane eksportowane raz dziennie
  • Zdarzenia są trwale przechowywane przed zbiorczym zapisem do BigQuery
  • Można uzupełnić do 90 dni wcześniej
  • Dane eksportowane w czasie rzeczywistym
  • Brak możliwości uzupełnienia

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ł:

  1. Włącz eksport BigQuery dla Google Analytics. Zobacz Eksportowanie danych projektu do BigQuery .

  2. 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");
    
  3. 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:

  1. Otwórz szablon panelu kontrolnego Crashlytics Data Studio .
  2. Kliknij opcję Użyj szablonu w prawym górnym rogu.
  3. Z listy rozwijanej Nowe źródło danych wybierz opcję Utwórz nowe źródło danych .
  4. Kliknij Wybierz na karcie BigQuery .
  5. 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.
  6. W obszarze Konfiguracja ustaw poziom szablonu Crashlytics na Domyślny .
  7. Kliknij Połącz , aby utworzyć nowe źródło danych.
  8. Kliknij Dodaj do raportu , aby powrócić do szablonu Crashlytics.
  9. Na koniec kliknij Utwórz raport , aby utworzyć kopię szablonu pulpitu nawigacyjnego Crashlytics Data Studio.