您可以將 Firebase Crashlytics 資料匯出至 BigQuery 進行進一步分析。BigQuery 可讓您使用 BigQuery SQL 分析資料、將資料匯出至其他雲端服務供應商,並透過 Google 數據分析製作資訊主頁和視覺化報表。
啟用匯出至 BigQuery
在 Firebase 主控台中,前往「Integrations」頁面。
在 BigQuery 資訊卡中,按一下「連結」。
按照畫面上的指示啟用匯出至 BigQuery 的功能。
如果您想在 BigQuery 中近乎即時存取 Crashlytics 資料,建議您升級至串流匯出。
啟用匯出功能後會發生什麼事?
您選取資料集位置。建立資料集後,該資料集的位置就無法再變更,不過您可以將資料集複製到其他位置,或將資料集手動移動 (重新建立) 至其他位置。如需更多資訊,請參閱「變更現有匯出項目的位置」。
這個位置僅適用於匯出至 BigQuery 的資料,不會影響儲存資料的位置,以便在 Firebase 控制台或 Android Studio 的 Crashlytics 資訊主頁中使用。
根據預設,您專案中的所有應用程式都會連結至 BigQuery,您之後才加進專案的應用程式也統統會自動與 BigQuery 連結。您可以管理要傳送資料的應用程式。
Firebase 會設定每日同步處理資料至 BigQuery。
連結專案後,您通常需要等到隔天同步作業,才能將第一組資料匯出至 BigQuery。
無論您在 BigQuery 中設定了哪些排定匯出作業,每日同步作業都會每天執行一次。請注意,同步處理工作的時間和持續時間可能會變更,因此我們不建議根據匯出作業的特定時間安排後續作業或工作。
Firebase 會將現有資料的副本匯出至 BigQuery。匯出資料的初始傳播作業最多可能需要 48 小時。
對於每個已連結的應用程式,這個匯出作業會包含一張批次表格,其中包含每日同步作業的資料。
您可以手動排定資料回填時間,讓���次表格回填至過去 30 天或您啟用匯出至 BigQuery 的最近日期 (以較晚者為準)。
請注意,如果您在 2024 年 10 月中之前啟用 Crashlytics 資料匯出功能,也可以在啟用匯出功能當天之前的 30 天內回填資料。
如果您啟用 Crashlytics 串流匯出功能,將資料匯出至 BigQuery,則所有已連結的應用程式都會有一個即時資料表,其中包含持續更新的資料。
如要停用匯出至 BigQuery 的功能,請在 Firebase 控制台中取消連結專案。
匯出至 BigQuery 的資料有哪些?
Firebase Crashlytics 資料會匯出至名為 firebase_crashlytics
的 BigQuery 資料集。根據預設,系統會為專案中的每個應用程式在 Crashlytics 資料集中建立個別資料表。Firebase 會依據應用程式的 ID 來命名資料表,同時會將句號轉換為底線,並將平台名稱附加到結尾處。
舉例來說,套件名稱為 com.google.test
的 Android 應用程式資料會位於名為 com_google_test_ANDROID
的資料表中。這個批次表格每天會更新一次。如果您啟用 Crashlytics 串流匯出至 BigQuery,Crashlytics 資料也會即時串流至名為 com_google_test_ANDROID_REALTIME
的資料表。
表格中的每一列都代表應用程式中發生的事件,包括當機、非致命錯誤和 ANR。
Crashlytics 串流匯出至 BigQuery
您可以使用 BigQuery 串流,即時串流 Crashlytics 資料。您可以將這項功能用於任何需要即時資料的用途,例如在即時資訊主頁中呈現資訊、即時查看推出作業,或是監控會觸發快訊和自訂工作流程的應用程式問題。
BigQuery啟用 Crashlytics 串流匯出至 BigQuery 後,除了批次表格,您還會有即時表格。以下是您應注意的兩個表格之間差異:
批次表 | 即時表格 |
---|---|
|
|
由於事件會在寫入前以持久性方式儲存,且最多可回填至表格 30 天*,因此批次表格非常適合用於長期分析及找出一段時間內的趨勢。當我們將資料寫入即時資料表時,會立即將資料寫入 BigQuery,因此非常適合用於即時資訊主頁和自訂快訊。這兩個資料表可以與拼接查詢結合,以便同時享有兩者的優點。
根據預設,即時資料表的分區到期時間為 30 天。如要瞭解如何修改這項設定,請參閱 BigQuery 說明文件中的「設定區隔區到期時間」。
* 如要進一步瞭解回填支援功能,請參閱「升級至新的匯出基礎架構」一文。
啟用 Crashlytics 串流匯出至 BigQuery
在 Firebase 主控台中,前往「Integrations」頁面。
在 BigQuery 資訊卡中,按一下「管理」。
勾選「Include streaming」核取方塊。
這項操作會為所有已連結的應用程式啟用串流功能。
匯出的資料可做什麼用途?
匯出至 BigQuery 的資料包含原始當機資料,包括裝置類型、作業系統、例外狀況 (Android 應用程式) 或錯誤 (Apple 應用程式),以及 Crashlytics 記錄和其他資料。
請在本頁後續部分查看匯出的 Crashlytics 資料和其資料表結構定義。
使用數據分析範本
如要在數據分析範本中啟用即時資料,請按照「使用數據分析視覺化匯出的 Crashlytics 資料」中的操作說明操作。
建立檢視表
您可以使用 BigQuery UI 將查詢轉換為檢視畫面。如需詳細操作說明,請參閱 BigQuery 說明文件中的「建立檢視畫面」。
執行查詢
下列範例示範您可以在 Crashlytics 資料上執行的查詢,以產生報表,將當機事件資料匯總至更容易理解的摘要中。由於這類報表不在 Firebase 控制台的 Crashlytics 資訊主頁中提供,因此可用於補充您對當機資料的分析和瞭解。
範例 1:當日的異常終止情形
在盡可能修正所有錯誤後,您認為團隊終於可以推出新的相片分享應用程式。在推出前,您想查看過去一個月內每天當機的次數,確認排除錯誤的確讓應用程式變得更穩定。
以下是 Android 應用程式的查詢範例。如果是 iOS 應用程式,請使用軟體包 ID 和 IOS
(而非套件名稱和 ANDROID
)。
SELECT COUNT(DISTINCT event_id) AS number_of_crashes, FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` GROUP BY date_of_crashes ORDER BY date_of_crashes DESC LIMIT 30;
範例 2:找出最常見的當機情形
為了適當排定生產計劃的優先順序,您需要找出應用程式中最常見的 10 個當機問題。您可以產生查詢,提供相關資料點。
以下是 Android 應用程式的查詢範例。如果是 iOS 應用程式,請使用軟體包 ID 和 IOS
(而非套件名稱和 ANDROID
)。
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 `PROJECT_ID.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;
示例 3:前 10 大異常終止裝置
秋天是換新手機的季節!貴公司知道這也是新手機問題特別多的季節,特別是 Android 手機。為了提前因應即將到來的相容性問題,您做了一個查詢,找出最近一週 (168 小時) 最常當機的 10 台裝置。
以下是 Android 應用程式的查詢範例。如果是 iOS 應用程式,請使用軟體包 ID 和 IOS
(而非套件名稱和 ANDROID
)。
SELECT device.model, COUNT(DISTINCT event_id) AS number_of_crashes FROM `PROJECT_ID.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;
範例 4:依據自訂鍵篩選
您是遊戲開發人員,想要瞭解遊戲的哪個關卡最常當機。
為了追蹤該統計資料,您可以設定名為 current_level
的自訂 Crashlytics 鍵,並在使用者每次到達新關卡時更新該鍵。
Swift
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
Objective-C
CrashlyticsKit setIntValue:3 forKey:@"current_level";
Java
Crashlytics.setInt("current_level", 3);
透過匯出至 BigQuery 的這個鍵,您可以撰寫查詢,回報與每次當機事件相關聯的 current_level
值分佈情況。
以下是 Android 應用程式的查詢範例。如果是 iOS 應用程式,請使用軟體包 ID 和 IOS
(而非套件名稱和 ANDROID
)。
SELECT COUNT(DISTINCT event_id) AS num_of_crashes, value FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` UNNEST(custom_keys) WHERE key = "current_level" GROUP BY key, value ORDER BY num_of_crashes DESC
示例 5:使用者 ID 擷取
您有一個處於搶先體驗階段的 Android 應用程式。大部分使用者都對該應用程式感到滿意,但有三位使用者遇到不尋常的當機次數。為了釐清問題的真正原因,您可以撰寫查詢,使用這些使用者的使用者 ID 來提取所有當機事件。
以下是 Android 應用程式的查詢範例。如果是 iOS 應用程式,請使用軟體包 ID 和 IOS
(而非套件名稱和 ANDROID
)。
SELECT * FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` WHERE user.id IN ("USER_ID_1", "USER_ID_2", "USER_ID_3") ORDER BY user.id
範例 6:找出所有遇到特定當機問題的使用者
您的團隊不小心向一群 Beta 版測試人員發布了重大錯誤。您的團隊可以使用上述「找出最常見的當機情形」範例中的查詢,找出特定的當機問題 ID。您的團隊現在想執行查詢,擷取受此當機情形影響的應用程式使用者清單。
以下是 Android 應用程式的查詢範例。如果是 iOS 應用程式,請使用軟體包 ID 和 IOS
(而非套件名稱和 ANDROID
)。
SELECT user.id as user_id FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` WHERE issue_id = "ISSUE_ID" AND application.display_version = "APP_VERSION" AND user.id != "" ORDER BY user.id;
範例 7:受當機問題影響的使用者人數,按國家/地區劃分
您的團隊在推出新版本時偵測到重大錯誤。您可以使用上述「找出最常見的當機情形」範例中的查詢,找出特定的當機問題 ID。您的團隊現在想瞭解這個當機問題是否已擴散到世界各地的使用者。
如要編寫這項查詢,您的團隊必須執行下列操作:
啟用匯出功能,將 Google Analytics 資料匯出至 BigQuery。請參閱「將專案資料匯出至 BigQuery」一文。
更新應用程式,將使用者 ID 傳遞至 Google Analytics SDK 和 Crashlytics SDK。
Swift
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
Objective-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
Java
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
編寫查詢,使用使用者 ID 欄位,將 Google Analytics 資料集的事件與 Crashlytics 資料集的當機事件彙整。
以下是 Android 應用程式的查詢範例。如果是 iOS 應用程式,請使用軟體包 ID 和
IOS
(而非套件名稱和ANDROID
)。SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` c INNER JOIN `PROJECT_ID.analytics_TABLE_NAME.events_*` a on c.user.id = a.user_id WHERE c.issue_id = "ISSUE_ID" AND a._TABLE_SUFFIX BETWEEN '20190101' AND '20200101' GROUP BY c.issue_id, a.geo.country, c.user.id
範例 8:今天目前為止的 5 大問題
以下是 Android 應用程式的查詢範例。如果是 iOS 應用程式,請使用軟體包 ID 和 IOS
(而非套件名稱和 ANDROID
)。
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME` WHERE DATE(event_timestamp) = CURRENT_DATE() GROUP BY issue_id ORDER BY events DESC LIMIT 5;
範例 9:自「日期」起 (含當天) 的 5 大問題
您也可以結合批次和即時資料表,並使用拼接查詢,將即時資訊加入可靠的批次資料。由於 event_id
是主要索引鍵,您可以使用 DISTINCT event_id
從兩個資料表中刪除任何共同事件。
以下是 Android 應用程式的查詢範例。如果是 iOS 應用程式,請使用軟體包 ID 和 IOS
(而非套件名稱和 ANDROID
)。
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM ( SELECT issue_id, event_id, event_timestamp FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME` UNION ALL SELECT issue_id, event_id, event_timestamp FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`) WHERE event_timestamp >= "YYYY_MM_DD" GROUP BY issue_id ORDER BY events DESC LIMIT 5;
瞭解 BigQuery 中的 Crashlytics 結構定義
設定 Crashlytics 資料匯出至 BigQuery 後,Firebase 會匯出近期事件 (當機、非致命錯誤和 ANR),包括連結前兩天出現的事件,並提供補充資料長達 30 天的選項。
從連結開始到您停用連結,Firebase 每天都會匯出 Crashlytics 事件。每次匯出後可能需要幾分鐘的時間,您才能在 BigQuery 中使用資料。
資料集
Crashlytics 會在 BigQuery 中為 Crashlytics 資料建立新的資料集。這個資料集會涵蓋整個專案,即使專案包含多個應用程式亦同。
表格
Crashlytics 會在資料集中為專案裡的每個應用程式建立資料表,除非您選擇停用該應用程式的匯出資料功能。Firebase 會依據應用程式的 ID 命名資料表,同時會將句號轉換為底線,並將平台名稱附加到結尾處。
舉例來說,套件名稱為 com.google.test
的 Android 應用程式資料會位於名為 com_google_test_ANDROID
的資料表中,而即時資料 (如果已啟用) 則會位於名為 com_google_test_ANDROID_REALTIME
的資料表中。
除了您在應用程式中定義的任何自訂 Crashlytics 鍵,資料表還包含一組標準 Crashlytics 資料。
資料列
每個在資料表中的資料列都代表應用程式遇到的某個錯誤。
欄
對於當機、非重大錯誤和 ANR 來說,資料表中的資料欄都完全相同。如果啟用 Crashlytics 串流匯出至 BigQuery,則即時資料表的資料欄會與批次資料表相同。請注意,資料列中可能會包含代表沒有堆疊追蹤記錄的事件的資料欄。
系統匯出的資料欄如下所示:
欄位名稱 | 資料類型 | 說明 |
---|---|---|
platform |
STRING | 在 Firebase 專案中註冊的應用程式平台 (有效值:IOS 或 ANDROID ) |
bundle_identifier |
STRING | 應用程式在 Firebase 專案中註冊的專屬 ID (例如 com.google.gmail 如果是 Apple 平台應用程式,則為應用程式的軟體包 ID。 如果是 Android 應用程式,則為應用程式的套件名稱。 |
event_id |
STRING | 事件的專屬 ID |
is_fatal |
BOOLEAN | 應用程式是否異常終止 |
error_type |
STRING | 事件的錯誤類型 (例如 FATAL 、NON_FATAL 、ANR 等) |
issue_id |
STRING | 與事件相關的問題 |
variant_id |
STRING | 與此事件相關聯的問題變化版本 請注意,並非所有事件都有相關的問題變化版本。 |
event_timestamp |
TIMESTAMP | 事件發生時間 |
device |
RECORD | 事件發生的裝置 |
device.manufacturer |
STRING | 裝置製造商 |
device.model |
STRING | 裝置型號 |
device.architecture |
STRING | 例如:X86_32 、X86_64 、ARMV7 、ARM64 、ARMV7S 或 ARMV7K |
memory |
RECORD | 裝置的記憶體狀態 |
memory.used |
INT64 | 已使用的記憶體位元組數 |
memory.free |
INT64 | 剩��的記憶體位元組 |
storage |
RECORD | 裝置的永久儲存空間 |
storage.used |
INT64 | 已使用的儲存空間位元組 |
storage.free |
INT64 | 剩餘的儲存空間位元組 |
operating_system |
RECORD | 裝置上的作業系統詳細資料 |
operating_system.display_version |
STRING | 裝置上的作業系統版本 |
operating_system.name |
STRING | 裝置上的作業系統名稱 |
operating_system.modification_state |
STRING | 裝置是否經過修改 (例如越獄解鎖的應用程式為 MODIFIED ,啟用 Root 權限的應用程式為 UNMODIFIED ) |
operating_system.type |
STRING | (僅限 Apple 應用程式) 裝置上執行的 OS 類型 (例如 IOS 、MACOS 等) |
operating_system.device_type |
STRING | 裝置類型 (例如 MOBILE 、TABLET 、TV 等),也稱為「裝置類別」 |
application |
RECORD | 產生事件的應用程式 |
application.build_version |
STRING | 應用程式的建構版本 |
application.display_version |
STRING | |
user |
RECORD | (選用) 收集的應用程式使用者資訊 |
user.name |
STRING | (選用) 使用者名稱 |
user.email |
STRING | (選用) 使用者的電子郵件地址 |
user.id |
STRING | (選用) 與使用者相關聯的應用程式專屬 ID |
custom_keys |
重複錄音 | 開發人員定義的鍵/值組合 |
custom_keys.key |
STRING | 開發人員定義的鍵 |
custom_keys.value |
STRING | 開發人員定義的值 |
installation_uuid |
STRING | 用於識別不重複應用程式和裝置安裝作業的 ID |
crashlytics_sdk_versions |
STRING | 產生事件的 Crashlytics SDK 版本 |
app_orientation |
STRING | 例如:PORTRAIT 、LANDSCAPE 、FACE_UP 、FACE_DOWN 等。 |
device_orientation |
STRING | 例如:PORTRAIT 、LANDSCAPE 、FACE_UP 、FACE_DOWN 等。 |
process_state |
STRING | BACKGROUND 或FOREGROUND |
logs |
重複錄音 | Crashlytics 記錄器產生的時間戳記記錄訊息 (如果已啟用) |
logs.timestamp |
TIMESTAMP | 記錄建立的時間 |
logs.message |
STRING | 記錄的訊息 |
breadcrumbs |
重複錄音 | 時間戳記Google Analytics導覽標記 (如已啟用) |
breadcrumbs.timestamp |
TIMESTAMP | 與麵包屑相關聯的時間戳記 |
breadcrumbs.name |
STRING | 與麵包屑相關聯的名稱 |
breadcrumbs.params |
重複錄音 | 與麵包屑相關的參數 |
breadcrumbs.params.key |
STRING | 與麵包屑相關聯的參數鍵 |
breadcrumbs.params.value |
STRING | 與麵包屑相關聯的參數值 |
blame_frame |
RECORD | 系統判定為當機或錯誤的根本原因的頁框 |
blame_frame.line |
INT64 | 框架檔案的行數 |
blame_frame.file |
STRING | 影格檔案的名稱 |
blame_frame.symbol |
STRING | 已充水的符號,如果無法充水,則為原始符號 |
blame_frame.offset |
INT64 | 包含程式碼的二進位映像檔中的位元組偏移量 如果是 Java 例外狀況,請取消設定 |
blame_frame.address |
INT64 | 二進位元映像檔中含有程式碼的位址 針對 Java 影格,請取消設定 |
blame_frame.library |
STRING | 包含影格庫的顯示名稱 |
blame_frame.owner |
STRING | 例如:DEVELOPER 、VENDOR 、RUNTIME 、PLATFORM 或 SYSTEM |
blame_frame.blamed |
BOOLEAN | Crashlytics 是否判定此影格是當機或錯誤的原因 |
exceptions |
重複錄音 | (僅限 Android) 在這個事件期間發生的例外狀況。巢狀例外狀況會以倒轉的時間順序顯示,也就是說,最後一筆記錄是系統擲回的第一個例外狀況 |
exceptions.type |
STRING | 例外狀況類型 (例如 java.lang.IllegalStateException) |
exceptions.exception_message |
STRING | 與例外狀況相關的訊息 |
exceptions.nested |
BOOLEAN | 除了最後一次擲回的例外狀況 (也就是第一筆記錄) 外,所有例外狀況都為 True |
exceptions.title |
STRING | 討論串的標題 |
exceptions.subtitle |
STRING | 討論串的副標題 |
exceptions.blamed |
BOOLEAN | 如果 Crashlytics 判斷例外狀況是導致錯誤或當機的原因,則為 True |
exceptions.frames |
重複錄音 | 與例外狀況相關的影格 |
exceptions.frames.line |
INT64 | 框架檔案的行數 |
exceptions.frames.file |
STRING | 影格檔案的名稱 |
exceptions.frames.symbol |
STRING | 已充水的符號,如果無法充水,則為原始符號 |
exceptions.frames.offset |
INT64 | 包含程式碼的二進位映像檔中的位元組偏移量 如果是 Java 例外狀況,請取消設定 |
exceptions.frames.address |
INT64 | 二進位元映像檔中含有程式碼的位址 針對 Java 影格,請取消設定 |
exceptions.frames.library |
STRING | 包含影格庫的顯示名稱 |
exceptions.frames.owner |
STRING | 例如:DEVELOPER 、VENDOR 、RUNTIME 、PLATFORM 或 SYSTEM |
exceptions.frames.blamed |
BOOLEAN | Crashlytics 是否判定此影格是當機或錯誤的原因 |
error |
重複錄音 | (僅限 Apple 應用程式) 非致命錯誤 |
error.queue_name |
STRING | 執行緒執行的佇列 |
error.code |
INT64 | 與應用程式自訂記錄的 NSError 相關聯的錯誤代碼 |
error.title |
STRING | 討論串的標題 |
error.subtitle |
STRING | 討論串的副標題 |
error.blamed |
BOOLEAN | Crashlytics 是否判斷這個影格是錯誤的原因 |
error.frames |
重複錄音 | 堆疊追蹤的框架 |
error.frames.line |
INT64 | 框架檔案的行數 |
error.frames.file |
STRING | 影格檔案的名稱 |
error.frames.symbol |
STRING | 已充水的符號,如果無法充水,則為原始符號 |
error.frames.offset |
INT64 | 包含程式碼的二進位映像檔位移位元組 |
error.frames.address |
INT64 | 二進位映像檔中含有程式碼的位址 |
error.frames.library |
STRING | 包含影格庫的顯示名稱 |
error.frames.owner |
STRING | 例如:DEVELOPER 、VENDOR 、RUNTIME 、PLATFORM 或 SYSTEM |
error.frames.blamed |
BOOLEAN | Crashlytics 是否判斷這個影格是錯誤的原因 |
threads |
重複錄音 | 事件發生時的執行緒 |
threads.crashed |
BOOLEAN | 執行緒是否已停止運作 |
threads.thread_name |
STRING | 執行緒的名稱 |
threads.queue_name |
STRING | (僅限 Apple 應用程式) 執行緒執行的佇列 |
threads.signal_name |
STRING | 導致應用程式當機的信號名稱,僅會出現在當機的原生執行緒上 |
threads.signal_code |
STRING | 導致應用程式當機的訊號程式碼;僅出現在當機的原生執行緒上 |
threads.crash_address |
INT64 | 導致應用程式停止運作的訊號位址;僅會在停止運作的原生執行緒上顯示 |
threads.code |
INT64 | (僅限 Apple 應用程式) 應用程式自訂記錄的 NSError 錯誤代碼 |
threads.title |
STRING | 討論串的標題 |
threads.subtitle |
STRING | 討論串的副標題 |
threads.blamed |
BOOLEAN | Crashlytics 是否判定此影格是當機或錯誤的原因 |
threads.frames |
重複錄音 | 執行緒的框架 |
threads.frames.line |
INT64 | 框架檔案的行數 |
threads.frames.file |
STRING | 影格檔案的名稱 |
threads.frames.symbol |
STRING | 含水符號,如果無法含水,則為原始符號 |
threads.frames.offset |
INT64 | 包含程式碼的二進位映像檔位移位元組 |
threads.frames.address |
INT64 | 二進位映像檔中含有程式碼的位址 |
threads.frames.library |
STRING | 包含影格庫的顯示名稱 |
threads.frames.owner |
STRING | 例如:DEVELOPER 、VENDOR 、RUNTIME 、PLATFORM 或 SYSTEM |
threads.frames.blamed |
BOOLEAN | Crashlytics 是否判斷這個影格是錯誤的原因 |
unity_metadata.unity_version |
STRING | 這部裝置上執行的 Unity 版本 |
unity_metadata.debug_build |
BOOLEAN | 如果這是偵錯版本 |
unity_metadata.processor_type |
STRING | 處理器類型 |
unity_metadata.processor_count |
INT64 | 處理器 (核心) 數量 |
unity_metadata.processor_frequency_mhz |
INT64 | 處理器頻率(以 MHz 為單位) |
unity_metadata.system_memory_size_mb |
INT64 | 系統記憶體大小 (以 MB 為單位) |
unity_metadata.graphics_memory_size_mb |
INT64 | 圖形記憶體 (以 MB 為單位) |
unity_metadata.graphics_device_id |
INT64 | 圖形裝置的 ID |
unity_metadata.graphics_device_vendor_id |
INT64 | 圖形處理器供應商的 ID |
unity_metadata.graphics_device_name |
STRING | 顯示卡裝置的名稱 |
unity_metadata.graphics_device_vendor |
STRING | 圖形裝置的供應商 |
unity_metadata.graphics_device_version |
STRING | 圖形裝置的版本 |
unity_metadata.graphics_device_type |
STRING | 圖形裝置類型 |
unity_metadata.graphics_shader_level |
INT64 | 圖形的著色器層級 |
unity_metadata.graphics_render_target_count |
INT64 | 圖形算繪目標數量 |
unity_metadata.graphics_copy_texture_support |
STRING | 支援複製 Unity API 中定義的圖形紋理 |
unity_metadata.graphics_max_texture_size |
INT64 | 專門用於算繪紋理的最大大小 |
unity_metadata.screen_size_px |
STRING | 螢幕大小 (以像素為單位),格式為寬 x 高 |
unity_metadata.screen_resolution_dpi |
STRING | 螢幕的 DPI 為浮點數 |
unity_metadata.screen_refresh_rate_hz |
INT64 | 螢幕的刷新率 (以 Hz 為單位) |
使用數據分析以圖表呈現匯出的 Crashlytics 資料
Google 數據分析可將您在 BigQuery 中的 Crashlytics 資料集轉換為易於閱讀、分享且可完全自訂的報表。
如要進一步瞭解如何使用數據分析,請參閱《數據分析快速入門指南》中的歡迎使用數據分析。
使用 Crashlytics 報表範本
數據分析提供一個 Crashlytics 範例報表,其中包含從匯出的 Crashlytics BigQuery 結構定義中匯出的一組完整維度和指標。如果您已啟用 Crashlytics 串流匯出至 BigQuery,就可以在數據分析範本的「即時趨勢」頁面中查看該資料。您可以使用該範例做為範本,依據您自己應用程式上的原始當機資料,快速建立新的報表與視覺化效果:
按一下右上角的 [Use Template] (使用範本)。
在「新資料來源」下拉式選單中,選取「建立新資料來源」。
在「BigQuery」資訊卡上,按一下「選取」。
依序選取「My Projects」>「PROJECT_ID」>「firebase_crashlytics」>「TABLE_NAME」,選擇包含匯出 Crashlytics 資料的資料表。
您隨時可以選取批次表格。如果啟用「將 Crashlytics 串流匯出至 BigQuery」功能,您可以改為選取即時資料表。
在「Configuration」下方,將「Crashlytics Template level」設為「Default」。
按一下 [Connect] (連結) 建立新的資料來源。
按一下「Add to Report」即可返回 Crashlytics 範本。
最後按一下「Create Report」,建立 Crashlytics 數據分析資訊主頁範本的複本。
升級至新的匯出基礎架構
2024 年 10 月中��,Crashlytics 推出了新的基礎架構,可將 Crashlytics 資料匯出至 BigQuery。目前,升級至這項新基礎架構為選用功能。
這項新基礎架構支援美國境外的 Crashlytics 資料集位置。
如果您在 2024 年 10 月中旬之前啟用匯出功能,現在可以選擇將資料匯出位置變更為任何 BigQuery 支援的資料集位置。
如果您在 2024 年 10 月中旬或之後啟用匯出功能,在設定期間,您可以選取任何 BigQuery 支援的資料集位置。
新基礎架構的另一個差異之處,是無法從啟用匯出功能「之前」補充資料。(使用舊版基礎架構時,您最多可以回填到啟用日期前 30 天。)新基礎架構支援回填功能,可回填過去 30 天或您啟用匯出至 BigQuery 的最新日期 (以較晚者為準)。
升級前置條件
升級至新基礎架構前,請確認您符合下列先決條件:目前的批次 BigQuery 資料表的 ID 與已註冊 Firebase 應用程式設有的軟體包 ID 或套件名稱相符。
例如:
如果您有名為
com_yourcompany_yourproject_IOS
的 BigQuery 資料表,則應在 Firebase 專案中註冊 Firebase iOS+ 應用程式,並使用套件 IDcom.yourcompany.yourproject
。如果您有名為
com_yourcompany_yourproject_ANDROID
的 BigQuery 資料表,則應在 Firebase 專案中註冊 Firebase Android 應用程式,套件名稱為com.yourcompany.yourproject
。
以下說明如何查看 Firebase 專案中註冊的所有 Firebase 應用程式:
新的匯出基礎架構會根據已註冊 Firebase 應用程式設定的套件名稱或軟體包 ID,匯出每個應用程式的資料。為了避免中斷 BigQuery 工作流程,請務必確認目前的批次資料表已具有正確的名稱,以便新的基礎架構將所有新資料附加至現有資料表。如果批次資料表名稱「不」與已註冊的 Firebase 應用程式相符,但您仍想升級,請與 Firebase 支援團隊聯絡。
如何升級至新基礎架構
如果您已啟用匯出功能,只要在 Firebase 控制台中切換 Crashlytics 資料匯出功能,即可升級至新基礎架構。
詳細步驟如下:
在 Firebase 主控台中,前往「Integrations」頁面。
在 BigQuery 資訊卡中,按一下「管理」。
關閉 Crashlytics 滑桿即可停用匯出功能。出現提示時,請確認要停止資料匯出作業。
立即再次切換 Crashlytics 滑桿,重新啟用匯出功能。出現提示時,確認要匯出資料。
您匯出至 BigQuery 的 Crashlytics 資料現在使用新的匯出基礎架構。