您可以將 Firebase Crashlytics 資料匯出至 BigQuery,以進行進一步分析。BigQuery 讓您使用 BigQuery SQL 分析資料、匯出至其他雲端供應商,以及透過 Looker Studio 製作視覺化圖表和自訂資訊主頁。
匯出資料的用途
匯出至 BigQuery 的檔案包含原始當機資料,包括裝置類型、作業系統、例外狀況 (Android 應用程式) 或錯誤 (Apple 應用程式),以及 Crashlytics 記錄和其他資料。您稍後可在本頁查看匯出的Crashlytics資料內容和資料表結構定義。
以下列舉幾個匯出資料的用途:Crashlytics
執行查詢
您可以對 Crashlytics 資料執行查詢,產生報表,將當機事件資料匯總至更容易理解的摘要中。由於這些類型的報表無法在控制台的 Crashlytics 資訊主頁中取得,因此可做為補充資料,協助您分析及瞭解當機資料。Firebase本頁稍後會提供查詢範例。使用Looker Studio範本
Crashlytics提供預先建構的Looker Studio範本 ,可將匯出的資料視覺化。建立檢視表
使用 BigQuery UI,您可以建立「檢視表」,也就是由 SQL 查詢定義的虛擬資料表。如需不同類型檢視區塊的詳細操作說明,以及如何建立檢視區塊,請參閱 BigQuery 說明文件。
Crashlytics串流匯出至 BigQuery
您可以透過BigQuery串流即時串流 Crashlytics 資料。 您可以使用這項功能處理任何需要即時資料的用途,例如在即時資訊主頁中呈現資訊、觀看發布作業的即時情況,或是監控會觸發快訊和自訂工作流程的應用程式問題。
啟用Crashlytics串流匯出至 BigQuery 後,除了批次資料表,您還會取得即時資料表。以下是您應注意的資料表差異:
批次資料表 | 即時表格 |
---|---|
|
|
批次資料表適合長期分析及找出一段時間內的趨勢,因為系統會先永久儲存事件,再寫入資料表,且最多可回填 30 天的資料*。當我們將資料寫入即時資料表時,會立即將資料寫入 BigQuery,因此非常適合用於即時資訊主頁和自訂快訊。這兩個資料表可以透過縫合查詢合併,同時享有兩者的優點。
根據預設,即時資料表的分區到期時間為 30 天。如要瞭解如何修改這項設定,請參閱 BigQuery 說明文件中的「設定分割區到期時間」。
* 如要瞭解回填支援的詳細資訊,請參閱「升級至新的匯出基礎架構」。
啟用匯出至「BigQuery」的功能
前往 Firebase 控制台的「整合」頁面。
在 BigQuery 資訊卡中,按一下「連結」。
按照畫面上的指示啟用匯出至 BigQuery 的功能。
如要在 BigQuery 中近乎即時地存取 Crashlytics 資料,建議升級至串流匯出。
啟用 Crashlytics 串流匯出至 BigQuery
前往 Firebase 控制台的「整合」頁面。
在 BigQuery 資訊卡中,按一下「管理」。
勾選「Include streaming」核取方塊。
這項操作會為所有連結的應用程式啟用串流功能。
啟用匯出功能後會怎麼樣?
選取資料集位置。建立資料集後,該資料集的位置就無法再變更,不過您可以將資料集複製到其他位置,或將資料集手動移動 (重新建立) 至其他位置。詳情請參閱「變更現有匯出作業的位置」。
這個位置僅適用於匯出至 BigQuery 的資料,不會影響儲存資料的位置,因此您仍可在 Firebase 控制台的 Crashlytics 資訊主頁或 Android Studio 中使用這些資料。
根據預設,您專案中所有的應用程式都會連結至 BigQuery,您之後才加進專案的應用程式也統統會自動與 BigQuery 連結。此外,您可以控管該讓哪些應用程式傳送資料。
Firebase 會設定每日將資料同步至 BigQuery。
連結專案後,通常需要等到隔天同步處理,第一組資料才會匯出至 BigQuery。
無論您在 BigQuery 中設定的排定匯出作業為何,系統每天都會執行一次每日同步作業。請注意,同步作業的時間和持續時間可能會變更,因此不建議根據匯出的特定時間安排下游作業或工作。
Firebase 會將現有資料副本匯出至 BigQuery。資料首次傳播以供匯出時,最多可能需要 48 小時。
針對每個連結的應用程式,這項匯出作業會包含一個批次資料表,內含每日同步處理的資料。
您可以手動排定資料回填作業,為批次資料表回填過去 30 天的資料或啟用匯出至 BigQuery 的最新日期資料 (以較近的日期為準)。
請注意,如果您在 2024 年 10 月中旬前啟用 Crashlytics 資料匯出功能,也可以回填啟用匯出功能前 30 天的資料。
如果啟用Crashlytics串流匯出至 BigQuery,所有連結的應用程式也會有即時資料表,內含持續更新的資料。
如要停用匯出至 BigQuery 的功能,請在 Firebase 控制台中取消連結專案。
查詢範例
範例 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:擷取 User-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:自「DATE」起 (含今天) 的前 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 >= PARSE_TIMESTAMP("%Y_%m_%d", "YYYY_MM_DD") GROUP BY issue_id ORDER BY events DESC LIMIT 5;
使用 Looker Studio以視覺化方式呈現匯出的 Crashlytics 資料
Looker Studio 可將 BigQuery 中的 Crashlytics 資料集轉換為報表,方便您輕鬆閱讀、分享及自訂。
如要進一步瞭解如何使用 Looker Studio,請參閱歡迎指南。
使用 Crashlytics 報表範本
Looker Studio提供 Crashlytics 範例報表,其中包含從匯出的 Crashlytics BigQuery 結構定義中取得的一組完整維度和指標。如果您已啟用Crashlytics串流匯出功能,將資料匯出至 BigQuery,則可在Looker Studio範本的「即時趨勢」頁面查看該資料。您可以使用該範例做為範本,依據您自己應用程式上的原始當機資料,快速建立新的報表與視覺化效果:
按一下右上角的 [Use Template] (使用範本)。
在「新資料來源」下拉式選單中,選取「建立新資料來源」。
按一下「BigQuery」資訊卡上的「選取」。
依序選擇「My Projects」> PROJECT_ID >「firebase_crashlytics」> TABLE_NAME,選取包含匯出 Crashlytics 資料的資料表。
你隨時可以選取批次表格。如果啟用Crashlytics串流匯出至 BigQuery,則可改為選取即時資料表。
在「Configuration」(設定) 底下,將「Crashlytics Template level」(範本等級) 設為「Default」(預設)。
按一下 [Connect] (連結) 建立新的資料來源。
按一下「加入報表」,即可返回 Crashlytics 範本。
最後按一下「建立報表」,建立 Crashlytics Looker Studio 資訊主頁範本的副本。
瞭解 Crashlytics 結構定義 BigQuery
Firebase Crashlytics資料會匯出至名為「firebase_crashlytics
」的BigQuery資料集。這個資料集會涵蓋整個專案,即使專案包含多個應用程式亦同。
表格
根據預設,Firebase 會在資料集中為專案中連結至 BigQuery 的每個應用程式建立個別資料表。Crashlytics資料表會根據應用程式 ID 命名 (句號會轉換為底線),並附加應用程式平台 (_IOS
或 _ANDROID
)。舉例來說,如果 Android 應用程式的套件名稱為 com.google.test
,資料就會位於名為 com_google_test_ANDROID
的資料表中。
如果啟用 Crashlytics 串流匯出至 BigQuery,Crashlytics 資料也會即時串流至附加 _REALTIME
的資料表 (例如 com_google_test_ANDROID_REALTIME
)。
表格中的每一列都代表應用程式中發生的事件,包括當機、非重大錯誤和 ANR。
除了您在應用程式中定義的任何自訂 Crashlytics 鍵之外,資料表還包含一組標準的 Crashlytics 資料。
資料列
每個在資料表中的資料列都代表應用程式遇到的某個錯誤。
欄
對於當機、輕微錯誤和 ANR 來說,資料表中的資料欄都完全相同。如果啟用 Crashlytics 串流匯出至 BigQuery,即時資料表就會與批次資料表有相同的資料欄。請注意,您可能在代表沒有堆疊追蹤的事件的資料列中,有資料欄。
下表列出匯出 Crashlytics 資料時的資料欄:
欄位名稱 | 資料類型 | 說明 |
---|---|---|
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 應用程式) 裝置執行的作業系統類型 (例如 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 |
REPEATED RECORD | 開發人員定義的鍵/值組合 |
custom_keys.key |
STRING | 開發人員定義的金鑰 |
custom_keys.value |
STRING | 開發人員定義的值 |
installation_uuid |
STRING | 用於識別不重複的應用程式和裝置安裝作業 |
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 |
REPEATED RECORD | Crashlytics記錄器產生的含時間戳記記錄訊息 (如已啟用) |
logs.timestamp |
TIMESTAMP | 記錄建立時間 |
logs.message |
STRING | 記錄的訊息 |
breadcrumbs |
REPEATED RECORD | 時間戳記 Google Analytics 導覽標記 (如已啟用) |
breadcrumbs.timestamp |
TIMESTAMP | 與麵包屑相關聯的時間戳記 |
breadcrumbs.name |
STRING | 與麵包屑相關聯的名稱 |
breadcrumbs.params |
REPEATED RECORD | 與麵包屑相關聯的參數 |
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 |
REPEATED RECORD | (僅限 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 |
REPEATED RECORD | 與例外狀況相關的影格 |
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 |
REPEATED RECORD | (僅限 Apple 應用程式) 一般錯誤 |
error.queue_name |
STRING | 執行緒執行的佇列 |
error.code |
INT64 | 與應用程式自訂記錄的 NSError 相關聯的錯誤代碼 |
error.title |
STRING | 討論串標題 |
error.subtitle |
STRING | 討論串的副標題 |
error.blamed |
BOOLEAN | Crashlytics 是否判定這個影格是錯誤的原因 |
error.frames |
REPEATED RECORD | 堆疊追蹤的框架 |
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 |
REPEATED RECORD | 事件發生時的執行緒 |
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 |
REPEATED RECORD | 執行緒的影格 |
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 為單位) |
升級至新的匯出基礎架構
2024 年 10 月中旬,Crashlytics推出了新基礎架構,可批次將 Crashlytics 資料匯出至 BigQuery。
所有 Firebase 專案最快將於 2025 年 9 月 15 日自動升級至新的批次匯出基礎架構。 您可以在這個日期前升級,但請確認 BigQuery 批次資料表符合升級的先決條件。
您可以升級至新版基礎架構,但請確認您的 BigQuery 批次資料表符合升級必要條件。
判斷是否使用新基礎架構
如果您在 2024 年 10 月中旬以後啟用批次匯出功能,Firebase 專案就會自動使用新的匯出基礎架構。
如要查看專案使用的基礎架構,請前往 Google Cloud 控制台,如果「資料移轉設定」標示為 Firebase Crashlytics with Multi-Region Support
,則專案使用新的匯出基礎架構。
舊版和新版匯出基礎架構的重要差異
新基礎架構支援Crashlytics美國以外的資料集位置。
在 2024 年 10 月中旬前啟用匯出功能並升級至新的匯出基礎架構:您現在可以選擇變更資料匯出位置。
2024 年 10 月中旬後啟用匯出功能:設定時系統會提示你選取資料匯出位置。
新基礎架構不支援回填啟用匯出之前的資料。
舊版基礎架構支援回填最多 30 天的資料 (從啟用匯出功能當天算起)。
新基礎架構支援回填過去 30 天內的資料或您啟用匯出至 BigQuery 的最新日期 (以較近者為準)。
新基礎架構會使用 Firebase 專案中為 Firebase 應用程式設定的 ID,為批次資料表命名。BigQuery
舊版基礎架構會根據應用程式程式碼集 Firebase 設定中的軟體包 ID 或套件名稱,將資料寫入批次資料表。
新基礎架構會根據在 Firebase 專案中為已註冊 Firebase 應用程式設定的軟體包 ID 或套件名稱,將資料寫入批次資料表。
步驟 1:升級的必要條件
檢查現有的BigQuery批次資料表是否使用與Firebase 專案中已註冊 Firebase 應用程式所設軟體包 ID 或套件名稱相符的 ID。如果不符,匯出的批次資料可能會中斷。大多數專案都會處於適當且相容的狀態,但升級前請務必檢查。
如要查看 Firebase 專案中註冊的所有 Firebase 應用程式,請前往 Firebase 控制台:依序前往「專案設定」,然後捲動至「您的應用程式」資訊卡,即可查看所有 Firebase 應用程式及其資訊。
您可以在 Google Cloud 控制台的BigQuery 頁面中找到所有 BigQuery 批次表格。
舉例來說,以下是升級時不會發生任何問題的理想狀態:
您有一個名為
com_yourcompany_yourproject_IOS
的批次資料表,以及在 Firebase 專案中註冊的 Firebase iOS+ 應用程式,其軟體包 ID 為com.yourcompany.yourproject
。您有一個名為「
com_yourcompany_yourproject_ANDROID
」的批次資料表,以及在 Firebase 專案中註冊的 Firebase Android 應用程式,套件名稱為「com.yourcompany.yourproject
」。
如果批次資料表名稱與已註冊 Firebase 應用程式設有的 ID不相符,請按照本頁稍後的說明,在手動升級或 2025 年 9 月 15 日前完成操作,以免批次匯出作業中斷。
步驟 2:手動升級至新基礎架構
如果您在 2024 年 10 月中旬之前啟用批次匯出功能,只要在 Firebase 控制台中切換 Crashlytics 資料匯出功能,先關閉再開啟,即可手動升級至新基礎架構。
詳細步驟如下:
前往 Firebase 控制台的「整合」頁面。
在 BigQuery 資訊卡中,按一下「管理」。
將 Crashlytics 滑桿切換為關閉,即可停用匯出功能。按照提示確認要停止匯出資料。
立即再次開啟 Crashlytics 滑桿,重新啟用匯出功能。 系統顯示提示時,請確認要匯出資料。
您現在使用新的匯出基礎架構,將 Crashlytics 資料匯出至 BigQuery。