Eksportuj dane Firebase Crashlytics do BigQuery

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

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

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

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

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

  1. Otwórz szablon pulpitu nawigacyjnego Crashlytics Data Studio .
  2. Kliknij 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, zamiast tego możesz wybrać tabelę w czasie rzeczywistym.
  6. W sekcji 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 wrócić do szablonu Crashlytics.
  9. Na koniec kliknij Utwórz raport , aby utworzyć kopię szablonu pulpitu nawigacyjnego Crashlytics Data Studio.