將 Firebase Crashlytics 資料匯出至 BigQuery

您可以將 Crashlytics 資料匯出至 BigQuery 以進行進一步分析。BigQuery 可讓您使用 BigQuery SQL 分析資料、將資料匯出至其他雲端服務供應商,並利用 Google 數據分析將資料視覺化和自訂資訊主頁。

啟用 BigQuery Export

  1. 前往 Firebase 控制台的「Integrations」(整合) 頁面。
  2. 在「BigQuery」資訊卡中,按一下「連結」
  3. 按照畫面上的指示啟用 BigQuery。

將專案連結至 BigQuery 之後:

  • Firebase 會每天將 Firebase 專案的資料同步到 BigQuery。
  • 根據預設,您專案中的所有應用程式都會連結至 BigQuery,您之後新增至該專案的所有應用程式都會自動連結至 BigQuery。此外,您可以控管該讓哪些應用程式傳送資料
  • Firebase 會將現有資料的副本匯出至 BigQuery。每個連結的應用程式都會包含一個批次資料表,內含每日同步處理資料。
  • 如果您啟用 Crashlytics BigQuery 串流匯出,所有已連結的應用程式也會擁有一個包含持續更新資料的即時資料表

如要停用 BigQuery 匯出功能,請在 Firebase 控制台中取消連結專案

哪些資料會匯出至 BigQuery?

Firebase Crashlytics 資料會匯出至名為「firebase_crashlytics」的 BigQuery 資料集。根據預設,系統會為專案中每個應用程式的 Crashlytics 資料集建立個別資料表。Firebase 會根據應用程式的軟體包 ID 來為資料表命名,並將半形句號轉換為底線,並將平台名稱附加到結尾。

舉例來說,ID 為 com.google.test 的應用程式資料會在名為 com_google_test_ANDROID 的資料表中。這個批次資料表每天會更新一次。如果您啟用 Crashlytics BigQuery 串流匯出功能,Firebase Crashlytics 的資料也會即時串流至 com_google_test_ANDROID_REALTIME

資料表中的每一列都代表應用程式中發生的一個事件,包括當機、一般錯誤和 ANR 事件。

啟用 Crashlytics BigQuery 串流匯出功能

您可以透過 BigQueryStreaming 即時串流 Crashlytics 資料。您可以將這項服務用於任何需要即時資料的用途,例如在即時資訊主頁中顯示資訊、觀看發布即時資料,或監控觸發快訊和自訂工作流程的應用程式問題。

Crashlytics BigQuery 串流匯出功能不適用於 BigQuery 沙箱。

啟用 Crashlytics BigQuery 串流匯出後,除了批次資料表之外,您還會有即時資料表。以下是您應瞭解的不同資料表差異:

批次資料表 即時資料表
  • 每日匯出一次的資料
  • 請在批次寫入 BigQuery 前建立事件
  • 最多可以在 30 天前退款
  • 即時匯出資料
  • 沒有可用的補充作業

批次資料表非常適合用於長期分析及識別長期趨勢,因為在寫入事件之前,我們會長期儲存事件,而且最多可以將事件補充至資料表 30 天。當我們將資料寫入即時資料表時,會立即將資料寫入 BigQuery,因此非常適合用於即時資訊主頁和自訂快訊。這兩個資料表可以與拼接查詢合併,以取得兩者的好處。請參閱下方的查詢範例 9

根據預設,即時資料表的分區到期時間為 30 天。如要瞭解如何修改這個值,請參閱「更新分區到期時間」一文。

啟用 Crashlytics BigQuery 串流

如要啟用串流,請前往 BigQuery 整合頁面的 Crashlytics 部分,然後勾選「Include 串流」核取方塊。

數據分析範本

如要在數據分析範本中啟用即時資料,請按照使用數據分析以視覺化方式呈現匯出的 Crashlytics 資料中的操作說明。

檢視表

您可以使用 BigQuery 使用者介面,將下列查詢範例轉換為檢視表。如需詳細操作說明,請參閱建立檢視表一文。

你可以如何處理匯出的資料?

BigQuery 匯出內容包含原始當機資料,包括裝置類型、作業系統、例外狀況 (Android 應用程式) 或錯誤 (Apple 應用程式)、Crashlytics 記錄以及其他資料。

在 BigQuery 中使用 Firebase Crashlytics 資料

下列範例示範您可以在 Crashlytics 資料上執行的查詢。您無法在 Crashlytics 資訊主頁中查看這些查詢產生的報表。

Crashlytics 查詢的範例

下列範例示範如何產生報表,將當機事件資料匯總至更容易理解的摘要中。

範例 1:按日劃分的當機事件

盡全力修正所有錯誤後,主要開發人員認為她的團隊終於已準備好推出新的相片分享應用程式。在開始之前,他們想檢查過去一個月內每天的當機次數,確保應用程式的錯誤會隨著時間推移變得更穩定:

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;

示例 2:找出最常見的當機問題

為了適當排定生產計畫的優先順序,專案經理會思考如何指出產品中前 10 大常見當機問題。他們會產生查詢,可提供相關資料點:

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;

範例 3:前 10 名當機的裝置

秋天是換新手機的季節!開發人員知道,代表這是新的裝置問題季別。為了提前因應新興的相容性問題,開發人員建立了一項查詢,找出過去一週內最常當機的 10 部裝置:

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;

範例 4:依自訂鍵篩選

遊戲開發人員想知道自家遊戲的哪個關卡最當機。為協助對方追蹤統計資料,他們設定了自訂 Crashlytics 鍵 current_level,並在使用者達到新關卡時進行更新。

Objective-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Swift

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

Java

Crashlytics.setInt("current_level", 3);

在 BigQuery 匯出檔案中,開發人員編寫了查詢,回報與每個當機事件相關的 current_level 值分佈情形:

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

示例 5:擷取 User-ID

開發人員有一個應用程式處於搶先體驗階段。大多數使用者都很喜歡這項功能 但其中三位使用者遇到不尋常的當機次數為瞭解決這個問題,開發人員編寫查詢,運用使用者 ID 提取這些使用者的所有當機事件:

SELECT *
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
WHERE
  user.id IN ("userid1", "userid2", "userid3")
ORDER BY
  user.id
 

範例 6:找出所有遇到特定當機問題的使用者

某開發人員已向一組 Beta 版測試人員發布重大錯誤。團隊可使用上述範例 2 中的查詢,找出特定當機問題 ID。現在,他們要執行查詢,擷取受到此當機事件影響的應用程式使用者清單:

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;

示例 7:受當機問題影響的使用者人數 (依國家/地區細分)

現在,團隊在新版本推出期間偵測到重大錯誤。他們能夠使用上述範例 2 中的查詢,找出特定當機問題 ID。現在,他們想瞭解這項當機事件是否已於全球不同國家/地區的使用者傳播。

如要編寫這項查詢,團隊需要:

  1. 啟用 Google Analytics (分析) 的 BigQuery 匯出功能。請參閱「將專案資料匯出至 BigQuery」一文。

  2. 更新應用程式,將使用者 ID 傳遞至 Google Analytics (分析) SDK 和 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. 編寫查詢,以使用使用者 ID 欄位來彙整 Google Analytics BigQuery 資料集中的事件,以及 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
    

範例 8:目前為止的 5 大問題

必須啟用 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;

範例 9:自 DATE 以來的 5 大問題 (包括今天)

必須啟用 Crashlytics BigQuery 串流匯出功能。

在本例中,我們會合併批次和即時資料表,將即時資訊加入可靠的批次資料。由於 event_id 是主鍵,因此我們可以使用 DISTINCT event_id 簡化兩個資料表中所有常見的事件。

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;

瞭解 BigQuery 中的 Firebase Crashlytics 結構定義

將 Crashlytics 連結至 BigQuery 時,Firebase 會匯出近期事件 (當機、一般錯誤和 ANR),包括連結前最多兩天的事件,以及最多 30 天補充的選項。

之後到停用連結為止,Firebase 每天都會匯出 Crashlytics 事件。每次匯出後,可能需要幾分鐘的時間才能在 BigQuery 中使用資料。

資料集

Firebase Crashlytics 會在 BigQuery 中為 Crashlytics 資料建立新的資料集。資料集會涵蓋整個專案,即使專案包含多個應用程式也沒問題。

資料表

除非您選擇停止匯出應用程式的資料,否則 Firebase Crashlytics 會在資料集中為專案中的每個應用程式建立資料表。Firebase Crashlytics 會根據應用程式的軟體包 ID 為資料表命名,並將句號轉換為底線,並在結尾處加上平台名稱。

舉例來說,ID 為 com.google.test 的 Android 應用程式資料會在名為 com_google_test_ANDROID 的資料表中,而即時資料 (如果已啟用) 會在名為 com_google_test_ANDROID_REALTIME 的資料表中。

資料表除了包含開發人員定義的任何自訂 Crashlytics 金鑰,還會含有一組標準的 Crashlytics 資料。

資料列

每個在資料表中的資料列都代表應用程式遇到的某個錯誤。

資料欄

資料表中的資料欄與當機、一般錯誤和 ANR 事件相同。如果啟用了 Crashlytics BigQuery 串流匯出功能,即時資料表的資料欄就會與批次資料表相同。以下列出匯出項目中的資料欄。

不含堆疊追蹤

資料列中的資料欄,代表不含堆疊追蹤的事件。

欄位名稱 資料類型 說明
platform STRING Apple 或 Android 應用程式
bundle_ID STRING 軟體包 ID,例如 com.google.gmail
event_id STRING 事件的專屬 ID
is_fatal BOOLEAN 應用程式是否異常終止
錯誤類型 STRING 事件的錯誤類型 (FATAL、NON_FATAL、ANR)
issue_id STRING 事件相關問題
子類_id STRING 與此事件相關聯的問題變化版本
請注意,並非所有事件都有相關聯的問題變化版本。
event_timestamp TIMESTAMP 事件發生時間
device RECORD 發生事件的裝置
device.manufacturer STRING 裝置製造商
device.model STRING 裝置型號
device.架構 STRING X86_32、X86_64、ARMV7、ARM64、ARMV7S 或 ARMV7K
記憶體 RECORD 裝置的記憶體狀態
記憶體用量.已使用 INT64 記憶體用量位元組
釋放記憶體 INT64 剩餘記憶體位元組數
儲存空間 RECORD 裝置的永久儲存空間
storage.used INT64 已使用的儲存空間位元組數
storage.free INT64 剩餘的儲存空間位元組數
作業系統 RECORD 裝置 OS 的詳細資料
OS.display_version STRING 裝置上的 OS 版本
operating_system.name STRING 裝置上的作業系統名稱
OS.modification_state STRING 裝置是否經過修改,例如已越獄解鎖/已啟用 Root 權限 (MODIFIED 或 UNMODIFIED)
作業系統.type STRING 裝置上執行的 OS 類型 (例如 IOS、MACOS);僅適用於 Apple 平台應用程式
作業系統.device_type STRING 裝置類型 (例如行動裝置、平板電腦、電視等);也稱為「裝置類別」
調度應用程式資源 RECORD 產生事件的應用程式
application.build_version STRING 應用程式的建構版本
application.display_version STRING
使用者 RECORD 選用:向使用者收集的應用程式使用者資訊
user.name STRING 選填:使用者名稱
<使用者>.email STRING 選填:使用者的電子郵件地址
user.id STRING 選用:與使用者相關聯的應用程式專屬 ID
自訂鍵 重複錄音 開發人員定義的鍵/值組合
custom_keys.key STRING 開發人員定義的金鑰
自訂鍵.值 STRING 開發人員定義的值
install_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 背景或前景
記錄檔 重複錄音 Crashlytics 記錄器產生的記錄訊息並加上時間戳記 (如果已啟用)
log.timestamp TIMESTAMP 記錄建立時間
logs.message STRING 記錄的訊息
導覽標記 重複錄音 加上時間戳記的 Google Analytics (分析) 導覽標記 (如已啟用)
導覽標記.時間戳記 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 分析作業是否判定這個影格就是造成當機或錯誤的原因
例外狀況 重複錄音 僅限 Android:在此事件期間發生的例外狀況。巢狀例外狀況會以反向時間順序呈現 (讀取:最後一個記錄是系統擲回的第一個例外狀況)
Exception.type STRING 例外狀況類型,例如 java.lang.IllegalStateException
Exception.exception_message STRING 與例外狀況相關的訊息
Exception.nested BOOLEAN 除了上次擲回的例外狀況 (即第一筆記錄) 以外,所有其他為「是」
例外狀況.title STRING 討論串標題
<例外狀況>.<副標題> STRING 討論串的子標題
Exception.blamed BOOLEAN 如果 Crashlytics 判定例外狀況是造成錯誤或當機問題的例外狀況,則為「true」
Exception.frames 重複錄音 與例外狀況相關的影格
Exception.frames.line INT64 頁框檔案的行編號
Exception.frames.file STRING 頁框檔案名稱
Exception.frames.symbol STRING 含有水分的符號,或無法補充水分的生符號
Exception.frames.offset INT64 包含程式碼的二進位映像檔的位元組偏移 (針對 Java 例外狀況未設定)
Exception.frames.address INT64 包含程式碼的二進位映像檔中的位址,針對 Java 影格未設定
Exception.frames.library STRING 包含影格的程式庫顯示名稱
Exception.frames.owner STRING DEVELOPER、VENDOR、RUNTIME、PLATFORM 或 SYSTEM
Exception.frames.blamed BOOLEAN 不論 Crashlytics 分析作業是否判定這個影格就是造成當機或錯誤的原因
錯誤 重複錄音 僅限 Apple 應用程式:一般錯誤
error.queue_name STRING 執行執行緒的佇列
<錯誤代碼>.code INT64 與應用程式自訂記錄 NSError 相關聯的錯誤代碼
錯誤.title STRING 討論串標題
<錯誤名稱>.<副標題> 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 分析作業是否判定這個影格就是造成錯誤的原因
討論串 重複錄音 事件當時顯示的討論串
Thread.crashed BOOLEAN 執行緒是否當機
Thread.thread_name STRING 討論串名稱
Thread.queue_name STRING 僅限 Apple 應用程式:執行緒執行的佇列。
Thread.signal_name STRING 導致應用程式當機的信號名稱 (僅會在原生執行緒當機時出現)
Thread.signal_code STRING 導致應用程式當機的信號程式碼;只有原生執行緒當機時會出現
Thread.crash_address INT64 導致應用程式當機的信號位址;只有原生執行緒當機時會發生
Thread.code INT64 僅適用於 Apple 應用程式:應用程式自訂記錄 NSError 的錯誤代碼
Thread.title STRING 討論串標題
討論串.字幕 STRING 討論串的子標題
Thread.blamed BOOLEAN 不論 Crashlytics 分析作業是否判定這個影格就是造成當機或錯誤的原因
Thread.frames 重複錄音 執行緒的框架
Thread.frames.line INT64 頁框檔案的行編號
Thread.frames.file STRING 頁框檔案名稱
Thread.frames.symbol STRING 含有水分的符號,或無法補充水分的生符號
Thread.frames.offset INT64 位元組偏移到包含程式碼的二進位映像檔
Thread.frames.address INT64 包含程式碼的二進位映像檔中的位址
Thread.frames.library STRING 包含影格的程式庫顯示名稱
Thread.frames.owner STRING DEVELOPER、VENDOR、RUNTIME、PLATFORM 或 SYSTEM
Thread.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 串流匯出功能,即可在數據分析範本的「Realtime Trends」頁面中查看這些資料。您可以將範例做為範本,以便根據自家應用程式的原始當機資料,快速建立新的報表和視覺化呈現:

  1. 開啟 Crashlytics 數據分析資訊主頁範本
  2. 按一下右上角的 [Use Template] (使用範本)
  3. 在「新資料來源」下拉式選單中,選取「建立新資料來源」
  4. 在「BigQuery」資訊卡上,按一下 [Select] (選取)
  5. 依序選取「My Projects」(我的專案) > [your-project-name] >「firebase_crashlytics」 >「your-table-name」,選取包含 Crashlytics 匯出資料的資料表。您隨時可以選取批次資料表。如果您已啟用 Crashlytics BigQuery 串流匯出功能,則可改為選取即時資料表。
  6. 在「Configuration」(設定) 底下,將 [Crashlytics Template level] (Crashlytics 範本等級) 設為 [Default] (預設)
  7. 按一下 [Connect] (連結) 建立新的資料來源。
  8. 按一下 [Add to Report] (新增至報表) 傳回 Crashlytics 範本。
  9. 最後,按一下「Create Report」(建立報表) 建立 Crashlytics 數據分析資訊主頁範本的副本。