Eksportowanie danych Firebase Crashlytics do BigQuery

Możesz wyeksportować dane z Crashlytics do BigQuery na potrzeby dalszej analizy. BigQuery umożliwia analizowanie danych za pomocą BigQuery SQL, eksportowanie ich do innego dostawcy chmury oraz używanie ich do wizualizacji i paneli niestandardowych w Studiu danych Google.

Włącz funkcję eksportowania BigQuery

  1. Otwórz stronę Integracje w konsoli Firebase.
  2. Na karcie BigQuery kliknij Połącz.
  3. Aby włączyć BigQuery, postępuj zgodnie z instrukcjami wyświetlanymi na ekranie.

Po połączeniu projektu z BigQuery:

  • Firebase konfiguruje codzienne synchronizacje danych z projektu Firebase w BigQuery.
  • Domyślnie wszystkie aplikacje w projekcie są połączone z BigQuery. Wszystkie aplikacje, które dodasz później do projektu, zostaną automatycznie połączone z BigQuery. Możesz określić, które aplikacje mają wysyłać dane.
  • Firebase eksportuje kopię istniejących danych do BigQuery. Dla każdej połączonej aplikacji obejmuje to tabelę wsadową zawierającą dane z codziennej synchronizacji.
  • Jeśli włączysz eksport strumieniowy BigQuery z Crashlytics, wszystkie połączone aplikacje będą też miały tabelę w czasie rzeczywistym zawierającą stale aktualizowane dane.

Aby wyłączyć eksportowanie danych do BigQuery, odłącz 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 poszczególne tabele dla każdej aplikacji w projekcie są tworzone w zbiorze danych Crashlytics. Firebase nadaje nazwy tabelom na podstawie identyfikatora pakietu aplikacji, przy czym kropki są konwertowane na podkreślenia i dodają nazwę platformy na końcu.

Na przykład dane aplikacji o identyfikatorze com.google.test znajdą się w tabeli o nazwie com_google_test_ANDROID. Ta tabela zbiorcza jest aktualizowana raz dziennie. Jeśli włączysz eksport strumieniowy BigQuery z Crashlytics, dane z Firebase Crashlytics będą też przesyłane w czasie rzeczywistym do usługi com_google_test_ANDROID_REALTIME.

Każdy wiersz w tabeli odpowiada zdarzeniu, które wystąpiło w aplikacji, m.in. awarii, błędów niekrytycznych i błędów ANR.

Włącz eksport strumieniowy BigQuery z Crashlytics

Dane z Crashlytics możesz przesyłać strumieniowo w czasie rzeczywistym dzięki funkcji BigQueryStreaming. Możesz go używać do dowolnych celów, które wymagają aktualnych danych, np. do prezentowania informacji w panelu transmisji na żywo, obserwowania wdrożenia na żywo lub monitorowania problemów z aplikacją, które wywołują alerty i niestandardowe przepływy pracy.

Eksport strumieniowy BigQuery z usługi Crashlytics nie jest dostępny w przypadku piaskownicy BigQuery.

Gdy włączysz eksport strumieniowy BigQuery w Crashlytics, oprócz tabeli wsadowej będziesz mieć tabelę czasu rzeczywistego. Oto różnice między tabelami:

Tabela zbiorcza Tabela czasu rzeczywistego
  • Dane eksportowane raz dziennie
  • Zdarzenia przechowywane trwale przed zapisaniem wsadowym w BigQuery
  • Można ją uzupełnić najpóźniej 30 dni przed
  • Dane eksportowane w czasie rzeczywistym
  • Brak dostępnych uzupełniań

Tabela wsadowa doskonale nadaje się do analizy długoterminowej i identyfikowania trendów na przestrzeni czasu, ponieważ trwale przechowujemy zdarzenia przed ich zapisaniem i można je uzupełniać w tabeli przez maksymalnie 30 dni. Dane, które zapisujemy w Twojej tabeli w czasie rzeczywistym, są natychmiast zapisywane w BigQuery, dzięki czemu doskonale sprawdzają się w przypadku aktywnych paneli i alertów niestandardowych. Te 2 tabele można połączyć za pomocą zapytania łączenia, aby korzystać z zalet obu. Zobacz zapytanie Przykład 9 poniżej.

Domyślnie czas wygaśnięcia partycji w tabeli czasu rzeczywistego to 30 dni. Aby dowiedzieć się, jak to zmienić, przeczytaj sekcję o aktualizowaniu daty wygaśnięcia partycji.

Włącz strumieniowe przesyłanie danych BigQuery w Crashlytics

Aby włączyć strumieniowe przesyłanie danych, otwórz sekcję Crashlytics na stronie Integracje z BigQuery i zaznacz pole wyboru Uwzględnij strumieniowanie.

Szablon Studia danych

Aby włączyć w szablonie Studia danych dane w czasie rzeczywistym, postępuj zgodnie z instrukcjami podanymi w artykule Wizualizacja wyeksportowanych danych z Crashlytics przy użyciu Studia danych.

Widoki

Przykładowe zapytania możesz przekształcić w widoki, korzystając z interfejsu BigQuery. Szczegółowe instrukcje znajdziesz w artykule Tworzenie widoków.

Co można zrobić z wyeksportowanymi danymi?

Eksporty BigQuery zawierają nieprzetworzone dane o awariach, w tym typ urządzenia, system operacyjny, wyjątki (aplikacje na Androida) i błędy (aplikacje Apple) oraz logi Crashlytics, a także inne dane.

Praca z danymi Firebase Crashlytics w BigQuery

Poniższe przykłady pokazują zapytania, które można wykonywać na danych Crashlytics. Te zapytania generują raporty, które nie są dostępne w panelu Crashlytics.

Przykłady zapytań Crashlytics

Podane niżej przykłady pokazują, jak generować raporty, które łączą dane o zdarzeniach awarii w bardziej przystępny sposób.

Przykład 1. Awarie według dnia

Po naprawieniu jak największej liczby błędów jeden z głównych programistów sądzi, że jej zespół jest w końcu gotowy do opublikowania nowej aplikacji do udostępniania zdjęć. Zanim to zrobi, chce sprawdzić liczbę awarii dziennie w poprzednim miesiącu, aby mieć pewność, że błąd w wyniku błędu poprawił stabilność aplikacji.

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. Wyszukiwanie najczęstszych awarii

Aby odpowiednio nadać priorytet planom produkcyjnym, kierownik projektu zastanawia się, jak wskazać 10 najczęstszych awarii w jego usłudze. Tworzą zapytanie, które wskazuje odpowiednie punkty 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ń, na których najczęściej występują awarie

Jesień to nowy sezon na telefony! Deweloper wie, że to oznacza również nowy sezon problemów z konkretnymi urządzeniami. Aby wyprzedzić rosnące problemy ze zgodnością, zespół utworzył zapytanie identyfikujące 10 urządzeń, na których w ciągu ostatniego tygodnia wystąpiły najwięcej awarii:

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. Filtrowanie według klucza niestandardowego

Deweloper chce wiedzieć, na którym poziomie w grze występuje najwięcej awarii. Aby ułatwić im śledzenie tych statystyk, ustawili niestandardowy klucz Crashlytics current_level i aktualizowali go za każdym razem, gdy użytkownik osiągnie nowy poziom.

Objective-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Swift

Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");

Java

Crashlytics.setInt("current_level", 3);

Mając ten klucz w eksporcie BigQuery, tworzy zapytanie, które raportuje 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ę w ramach wcześniejszego dostępu. Większość użytkowników ją uwielbia, ale u 3 użytkowników wystąpiło niezwykła liczba awarii. Aby dotrzeć do sedna problemu, zespół tworzy zapytanie, które pobiera wszystkie zdarzenia awarii tych użytkowników, korzystając z ich identyfikatoró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, u których występuje określony problem

Deweloper opublikował krytyczny błąd grupie beta-testerów. Na podstawie zapytania z przykładu 2 powyżej udało nam się zidentyfikować identyfikator konkretnego problemu. Teraz chce uruchomić zapytanie, aby wyodrębnić listę użytkowników aplikacji, których dotyczył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ł błąd, z podziałem na kraje

Teraz podczas wdrażania nowej wersji zespół wykrył błąd krytyczny. Udało im się zidentyfikować konkretny identyfikator problemu z awarią, korzystając z zapytania z przykładu 2 powyżej. Zespół chce sprawdzić, czy awaria objął użytkowników w różnych krajach na całym świecie.

Aby utworzyć to zapytanie, zespół musi:

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

  2. Zaktualizuj aplikację tak, aby przekazywała identyfikator użytkownika zarówno do pakietu SDK Google Analytics, jak i do Crashlytics SDK.

    Objective-C
    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    
    Swift
    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    
    Java
    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. Utwórz zapytanie, które wykorzysta pole identyfikatora użytkownika, aby złączyć zdarzenia w zbiorze danych BigQuery w Google Analytics z awariami w zbiorze danych BigQuery Crashlytics:

    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 BigQuery do Crashlytics

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, w tym dzisiaj

Wymaga włączenia eksportu strumieniowego BigQuery do Crashlytics.

W tym przykładzie połączyliśmy tabele wsadowe i tabele czasu rzeczywistego, aby dodać informacje w czasie rzeczywistym do rzetelnych danych wsadowych. event_id jest kluczem podstawowym, więc możemy za pomocą DISTINCT event_id usunąć duplikaty typowych zdarzeń z tych 2 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;

Schemat Firebase Crashlytics w BigQuery

Gdy połączysz Crashlytics z BigQuery, Firebase eksportuje ostatnie zdarzenia (awarie, błędy niekrytyczne i błędy ANR), w tym zdarzenia do 2 dni przed połączeniem, umożliwiając uzupełnienie do 30 dni.

Od tego momentu, dopóki nie wyłączysz połączenia, Firebase codziennie eksportuje zdarzenia z Crashlytics. Po każdym eksporcie dane mogą być dostępne w BigQuery po kilku minutach.

Zbiory danych

Firebase Crashlytics tworzy w BigQuery nowy zbiór danych dla danych z Crashlytics. Zbiór danych obejmuje cały projekt, nawet jeśli obejmuje on wiele aplikacji.

Tabele

Firebase Crashlytics tworzy w zbiorze danych tabelę dla każdej aplikacji w projekcie, chyba że masz wyłączoną opcję eksportowania danych z tej aplikacji. Firebase nadaje nazwy tabelom na podstawie identyfikatora pakietu aplikacji, z kropkami przekształcanymi na podkreślenia i dodaje na końcu nazwę platformy.

Na przykład dane aplikacji na Androida o identyfikatorze com.google.test znajdą się w tabeli o nazwie com_google_test_ANDROID, a dane w czasie rzeczywistym (jeśli ta opcja jest włączona) – w tabeli o nazwie com_google_test_ANDROID_REALTIME

Tabele zawierają standardowy zestaw danych z Crashlytics oraz wszelkie niestandardowe klucze Crashlytics zdefiniowane przez deweloperów.

Wiersze

Każdy wiersz w tabeli oznacza 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łączony jest eksport strumieniowy BigQuery w Crashlytics, tabela czasu rzeczywistego będzie zawierać te same kolumny co tabela wsadowa. Poniżej wymienione są kolumny eksportowane.

Bez zrzutów stosu

Kolumny występujące w wierszach reprezentujących zdarzenia bez zrzutów stosu.

Nazwa pola Typ danych Opis
platform CIĄG ZNAKÓW W aplikacjach Apple lub na Androida
identyfikator_pakietu CIĄG ZNAKÓW Identyfikator pakietu, np. com.google.gmail
identyfikator_zdarzenia CIĄG ZNAKÓW Unikalny identyfikator wydarzenia.
jest_krytyczny WARTOŚĆ LOGICZNA czy aplikacja uległa awarii;
typ_błędu CIĄG ZNAKÓW Typ błędu zdarzenia (FATAL, NON_FATAL, ANR)
identyfikator_problemu CIĄG ZNAKÓW Problem związany ze zdarzeniem
identyfikator_wersji CIĄG ZNAKÓW Wariant problemu powiązany z tym zdarzeniem.
Pamiętaj, że nie wszystkie zdarzenia mają powiązany wariant problemu.
event_timestamp SYGNATURA CZASOWA Termin wystąpienia zdarzenia
device REKORD Urządzenie, na którym wystąpiło zdarzenie.
device.producent CIĄG ZNAKÓW Producent urządzenia
urządzenie.model CIĄG ZNAKÓW Model urządzenia
device.architecture, CIĄG ZNAKÓW X86_32, X86_64, ARMV7, ARM64, ARMV7S lub ARMV7K
pamięć REKORD Stan pamięci urządzenia
pamięć.używana INT64 Wykorzystane bajty pamięci
Pamięć.wolna INT64 Pozostało bajtów pamięci
magazynowanie REKORD Pamięć trwała urządzenia
pamięć.używana INT64 Zajęte bajty miejsca na dane
Storage.free INT64 Pozostało bajtów miejsca na dane
system_operacyjny REKORD Informacje o systemie operacyjnym na urządzeniu
system_operacyjny.wersja_wyświetlania CIĄG ZNAKÓW Wersja systemu operacyjnego zainstalowanego na urządzeniu.
operating_system.name CIĄG ZNAKÓW Nazwa systemu operacyjnego zainstalowanego na urządzeniu.
system_operacyjny.stan_modyfikacji CIĄG ZNAKÓW Określa, czy urządzenie zostało zmodyfikowane, na przykład po jailbreaku lub z dostępem do roota (ZMODYFIKOWANE lub BEZMODYFIKOWANE)
system_operacyjny.typ CIĄG ZNAKÓW Typ systemu operacyjnego działającego na urządzeniu (np. IOS, MACOS); dostępny tylko w przypadku aplikacji na platformach Apple
system_operacyjny.typ_urządzenia CIĄG ZNAKÓW Typ urządzenia (np. MOBILNY, TABLET, TV itp.); nazywany też „kategorią urządzenia”
aplikacja REKORD Aplikacja, która wygenerowała wydarzenie
aplikacja.kompilacja_wersji CIĄG ZNAKÓW Wersja kompilacji aplikacji
aplikacja.wyświetlana_wersja CIĄG ZNAKÓW
użytkownik REKORD Opcjonalnie: zbierane informacje o użytkowniku aplikacji
user.name CIĄG ZNAKÓW Opcjonalnie: nazwa użytkownika
e-mail.uzytkownika CIĄG ZNAKÓW Opcjonalnie: adres e-mail użytkownika
user.id CIĄG ZNAKÓW Opcjonalnie: identyfikator aplikacji powiązany z użytkownikiem
klucze_niestandardowe POWTÓRZONE REKORD Pary klucz-wartość zdefiniowane przez dewelopera
klucze_niestandardowe.klucz CIĄG ZNAKÓW Klucz zdefiniowany przez dewelopera
klucz_niestandardowy.wartość CIĄG ZNAKÓW wartość zdefiniowaną przez dewelopera;
identyfikator_instalacyjny CIĄG ZNAKÓW Identyfikator, który identyfikuje unikalną instalację aplikacji i urządzenia
Crashlytics_sdk_versions CIĄG ZNAKÓW Wersja pakietu SDK Crashlytics, która wygenerowała zdarzenie.
app_orientation, CIĄG ZNAKÓW PORTRAIT, LANDSCAPE, FACE_UP lub FACE_DOWN
orientacja_urządzenia CIĄG ZNAKÓW PORTRAIT, LANDSCAPE, FACE_UP lub FACE_DOWN
stan_procesu CIĄG ZNAKÓW WPROWADZENIE lub PIERWSZE KROKI
logi POWTÓRZONE REKORD Komunikaty logu z sygnaturami czasowymi wygenerowane przez rejestrator Crashlytics (jeśli są włączone)
logi.timestamp SYGNATURA CZASOWA data utworzenia dziennika.
logi.message CIĄG ZNAKÓW Zapisany komunikat
menu nawigacyjne POWTÓRZONE REKORD Sygnatura czasowa menu nawigacyjnego Google Analytics, jeśli jest włączona
menu nawigacyjne.sygnatura czasowa SYGNATURA CZASOWA Sygnatura czasowa związana z menu nawigacyjnym
breadcrumbs.name CIĄG ZNAKÓW Nazwa powiązana z menu nawigacyjnym
menu nawigacyjne.params POWTÓRZONE REKORD Parametry powiązane z menu nawigacyjnym
menu nawigacyjne.params.key CIĄG ZNAKÓW Klucz parametru powiązany z menu nawigacyjnym
menu nawigacyjne.params.value CIĄG ZNAKÓW Wartość parametru powiązana z menu nawigacyjnym.
obwinianie_ramki REKORD Ramka zidentyfikowana jako główna przyczyna awarii lub błędu
blame_frame.line INT64 Numer wiersza pliku ramki
blame_frame.file CIĄG ZNAKÓW Nazwa pliku ramki
blame_frame.symbol CIĄG ZNAKÓW Symbol nawodnienia lub symbol surowego organizmu, jeśli nie jest nawodniony
blame_frame.offset INT64 Przesunięcie w bajtach do obrazu binarnego zawierającego kod, wyłączone dla wyjątków Java
blame_frame.address INT64 Adres w obrazie binarnym zawierającym kod, nieskonfigurowany w przypadku ramek Java
blame_frame.library CIĄG ZNAKÓW Wyświetlana nazwa biblioteki, która zawiera ramkę
blame_frame.owner CIĄG ZNAKÓW DEWELOPER, VENDOR, RUNTIME, PLATFORM lub SYSTEM
blame_frame.blamed WARTOŚĆ LOGICZNA Czy analiza Crashlytics wykryła, że ta ramka jest przyczyną awarii lub błędu
wyjątki POWTÓRZONE REKORD Tylko Android: wyjątki, które wystąpiły podczas tego zdarzenia. Zagnieżdżone wyjątki są przedstawiane w odwrotnej kolejności chronologicznej (odczyt: ostatni rekord jest pierwszym zgłoszonym wyjątkiem)
wyjątek.typ CIĄG ZNAKÓW Typ wyjątku, np. java.lang.IllegalStateException
exception.exception_message. CIĄG ZNAKÓW Wiadomość powiązana z wyjątkiem
wyjątki.zagnieżdżone WARTOŚĆ LOGICZNA Prawda w przypadku wszystkich oprócz ostatniego wyjątku (tj. pierwszego rekordu)
wyjątki.tytuł CIĄG ZNAKÓW Tytuł wątku
wyjątki.napis CIĄG ZNAKÓW podtytuł wątku;
wyjątki.blamed WARTOŚĆ LOGICZNA Prawda, jeśli Crashlytics ustali, że wyjątek jest odpowiedzialny za błąd lub awarię
wyjątki.ramki POWTÓRZONE REKORD Ramki powiązane z wyjątkiem
ecommerce.frames.line INT64 Numer wiersza pliku ramki
wyjątek.frames.file CIĄG ZNAKÓW Nazwa pliku ramki
ecommerce.frames.symbol CIĄG ZNAKÓW Symbol nawodnienia lub symbol surowego organizmu, jeśli nie jest nawodniony
ecommerce.frames.offset INT64 Przesunięcie w bajtach do obrazu binarnego zawierającego kod, wyłączone dla wyjątków Java
wyjątki.ramki.adres INT64 Adres w obrazie binarnym zawierającym kod, nieskonfigurowany w przypadku ramek Java
ecommerce.frames.library CIĄG ZNAKÓW Wyświetlana nazwa biblioteki, która zawiera ramkę
ecommerce.frames.owner CIĄG ZNAKÓW DEWELOPER, VENDOR, RUNTIME, PLATFORM lub SYSTEM
wyjątki.frames.blamed WARTOŚĆ LOGICZNA Czy analiza Crashlytics wykryła, że ta ramka jest przyczyną awarii lub błędu
error POWTÓRZONE REKORD Tylko aplikacje Apple: błędy niekrytyczne
error.queue_name [nazwa_kolejki] CIĄG ZNAKÓW Kolejka, w której uruchomiono wątek
kod_błędu INT64 Kod błędu powiązany z niestandardowym rejestrowanym błędem NSError aplikacji
błąd.tytuł CIĄG ZNAKÓW Tytuł wątku
błąd.podtytuł CIĄG ZNAKÓW podtytuł wątku;
error.blamed WARTOŚĆ LOGICZNA Czy analiza Crashlytics wykryła, że ta ramka jest przyczyną błędu,
error.frames POWTÓRZONE REKORD Ramki zrzutu stosu
error.frames.line INT64 Numer wiersza pliku ramki
error.frames.file CIĄG ZNAKÓW Nazwa pliku ramki
error.frames.symbol CIĄG ZNAKÓW Symbol nawodnienia lub symbol surowego organizmu, jeśli nie jest nawodniony
error.frames.offset INT64 Przesunięcie bajtów w obrazie binarnym, który zawiera kod
error.frames.address INT64 Adres obrazu binarnego, który zawiera kod
error.frames.library CIĄG ZNAKÓW Wyświetlana nazwa biblioteki, która zawiera ramkę
error.frames.owner CIĄG ZNAKÓW DEWELOPER, VENDOR, RUNTIME, PLATFORM lub SYSTEM
error.frames.blamed WARTOŚĆ LOGICZNA Czy analiza Crashlytics wykryła, że ta ramka jest przyczyną błędu,
wątki POWTÓRZONE REKORD Wątki obecne w momencie wystąpienia zdarzenia
threads.crashed; WARTOŚĆ LOGICZNA czy wątek uległ awarii;
threads.thread_name CIĄG ZNAKÓW nazwa wątku;
threads.queue_name CIĄG ZNAKÓW Tylko aplikacje Apple: kolejka, w której uruchomiono wątek
threads.signal_name CIĄG ZNAKÓW Nazwa sygnału, który spowodował awarię aplikacji, widoczny tylko w przypadku awarii
threads.signal_code CIĄG ZNAKÓW Kod sygnału, który spowodował awarię aplikacji. Występuje tylko w przypadku awarii
threads.crash_address INT64 Adres sygnału, który spowodował awarię aplikacji. Widoczny tylko w przypadku awarii
threads.code INT64 Tylko aplikacje Apple: kod błędu niestandardowego zarejestrowanego błędu NSError
threads.title CIĄG ZNAKÓW Tytuł wątku
threads.podtytuł CIĄG ZNAKÓW podtytuł wątku;
threads.blamed WARTOŚĆ LOGICZNA Czy analiza Crashlytics wykryła, że ta ramka jest przyczyną awarii lub błędu
threads.frames POWTÓRZONE REKORD ramki wątku.
threads.frames.line INT64 Numer wiersza pliku ramki
threads.frames.file CIĄG ZNAKÓW Nazwa pliku ramki
threads.frames.symbol CIĄG ZNAKÓW Symbol nawodnienia lub surowy symbol, jeśli nie jest uwodniony
threads.frames.offset INT64 Przesunięcie bajtów w obrazie binarnym, który zawiera kod
threads.frames.address INT64 Adres obrazu binarnego, który zawiera kod
threads.frames.library CIĄG ZNAKÓW Wyświetlana nazwa biblioteki, która zawiera ramkę
threads.frames.owner CIĄG ZNAKÓW DEWELOPER, VENDOR, RUNTIME, PLATFORM lub SYSTEM
threads.frames.blamed WARTOŚĆ LOGICZNA Czy analiza Crashlytics wykryła, że ta ramka jest przyczyną błędu,
unity_metadata.unity_version CIĄG ZNAKÓW Wersja Unity działająca na tym urządzeniu
unity_metadata.debug_build WARTOŚĆ LOGICZNA Jeśli jest to kompilacja do debugowania
unity_metadata.processor_type CIĄG ZNAKÓW Typ procesora
unity_metadata.processor_count INT64 Liczba procesorów (rdzeni)
unity_metadata.processor_frequency_mhz INT64 Częstotliwość procesorów w MHz
jednolita_metadane.rozmiar_pamięci_systemu_mb INT64 Rozmiar pamięci systemu w MB
jednolita_metadane.rozmiar_pamięci_mb INT64 Pamięć karty graficznej w MB
Unity_metadata.graphics_device_id INT64 Identyfikator urządzenia graficznego
unity_metadata.graphics_identyfikator_dostawcy_urządzenia INT64 Identyfikator dostawcy procesora graficznego
unity_metadata.graphics_device_name [nazwa_urządzenia] CIĄG ZNAKÓW Nazwa urządzenia graficznego
unity_metadata.graphics_dostawca_urządzenia CIĄG ZNAKÓW Dostawca urządzenia graficznego
Unity_metadata.graphics_device_version CIĄG ZNAKÓW Wersja urządzenia graficznego.
Unity_metadata.graphics_device_type CIĄG ZNAKÓW Typ urządzenia graficznego.
poziom_jednostki_metadanych.grafika_shader INT64 Poziom cieniowania grafiki
Unity_metadata.graphics_render_target_count INT64 Liczba celów renderowania graficznego
jednolita_metadane.grafika_kopia_tekstura_obsługa CIĄG ZNAKÓW Obsługa kopiowania tekstur graficznych zdefiniowanych w interfejsie Unity API
unity_metadata.graphics_max_texture_size INT64 Maksymalny rozmiar przeznaczony do renderowania tekstury
unity_metadata.screen_size_px CIĄG ZNAKÓW Rozmiar ekranu w pikselach, podany jako szerokość x wysokość.
Unity_metadata.screen_resolution_dpi CIĄG ZNAKÓW Wartość DPI ekranu w postaci liczby zmiennoprzecinkowej
jednolita_metadane.współczynnik_odświeżania_hz INT64 Częstotliwość odświeżania ekranu w Hz

Wizualizacja wyeksportowanych danych Crashlytics w Studiu danych

Studio danych Google przekształca zbiory danych Crashlytics w BigQuery w raporty, które można łatwo odczytywać, udostępniać i dostosowywać do własnych potrzeb.

Więcej informacji o korzystaniu ze Studia danych znajdziesz w krótkim przewodniku po Studiu danych Witamy w Studiu danych.

Korzystanie z szablonu raportu Crashlytics

W Studiu danych znajduje się przykładowy raport na temat Crashlytics, który zawiera pełny zestaw wymiarów i danych z wyeksportowanego schematu BigQuery Crashlytics. Jeśli włączysz eksport strumieniowy BigQuery z Crashlytics, możesz wyświetlić te dane na stronie Trendy w czasie rzeczywistym w szablonie Studia danych.Możesz użyć przykładowego szablonu jako szablonu do szybkiego tworzenia nowych raportów i wizualizacji na podstawie nieprzetworzonych danych o awariach Twojej aplikacji:

  1. Otwórz szablon panelu Studia danych Crashlytics.
  2. W prawym górnym rogu kliknij Użyj szablonu.
  3. W menu Nowe źródło danych wybierz Utwórz nowe źródło danych.
  4. Na karcie BigQuery kliknij Wybierz.
  5. Wybierz tabelę zawierającą dane z Crashlytics, klikając Moje projekty > [nazwa-projektu] > firebase_crashlytics > [nazwa-twojej-tabeli]. Zawsze możesz wybrać tabelę wsadową. Jeśli masz włączony eksport strumieniowy BigQuery w Crashlytics, możesz zamiast niego 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, by wrócić do szablonu Crashlytics.
  9. Na koniec kliknij Utwórz raport, aby utworzyć kopię szablonu panelu Studia danych Crashlytics.