Xuất dữ liệu Firebase Crashlytics sang BigQuery

Bạn có thể xuất dữ liệu trên Crashlytics vào BigQuery để phân tích thêm. BigQuery cho phép bạn phân tích dữ liệu bằng BigQuery SQL, xuất dữ liệu sang một nhà cung cấp dịch vụ đám mây khác, sau đó sử dụng dữ liệu này để trực quan hoá cũng như các trang tổng quan tuỳ chỉnh bằng Google Data Studio.

Bật tính năng BigQuery Export

  1. Chuyển đến trang Tích hợp trong bảng điều khiển của Firebase.
  2. Trong thẻ BigQuery, hãy nhấp vào Liên kết.
  3. Làm theo hướng dẫn trên màn hình để bật BigQuery.

Khi bạn liên kết dự án của mình với BigQuery:

  • Firebase thiết lập chế độ đồng bộ hoá dữ liệu hằng ngày từ dự án Firebase của bạn sang BigQuery.
  • Theo mặc định, tất cả các ứng dụng trong dự án của bạn đều được liên kết với BigQuery và mọi ứng dụng mà sau này bạn thêm vào dự án sẽ tự động được liên kết với BigQuery. Bạn có thể quản lý các ứng dụng gửi dữ liệu.
  • Firebase xuất một bản sao dữ liệu hiện có của bạn sang BigQuery. Đối với mỗi ứng dụng được liên kết, bảng này bao gồm một bảng lô chứa dữ liệu từ quá trình đồng bộ hoá hằng ngày.
  • Nếu bạn bật tính năng xuất trực tuyến BigQuery của Crashlytics, tất cả các ứng dụng đã liên kết cũng sẽ có một bảng theo thời gian thực chứa dữ liệu được cập nhật liên tục.

Để tắt tính năng BigQuery Export, hãy huỷ liên kết dự án của bạn trong bảng điều khiển của Firebase.

Dữ liệu nào được xuất sang BigQuery?

Dữ liệu trong Firebase Crashlytics được xuất sang một tập dữ liệu BigQuery có tên là firebase_crashlytics. Theo mặc định, từng bảng riêng lẻ sẽ được tạo bên trong tập dữ liệu Crashlytics cho từng ứng dụng trong dự án của bạn. Firebase đặt tên các bảng dựa trên giá trị nhận dạng gói của ứng dụng, với các dấu chấm được chuyển đổi thành dấu gạch dưới và tên nền tảng được thêm vào cuối.

Ví dụ: dữ liệu cho ứng dụng có mã com.google.test sẽ nằm trong bảng có tên là com_google_test_ANDROID. Bảng lô này được cập nhật mỗi ngày một lần. Nếu bạn bật tính năng xuất trực tuyến BigQuery của Crashlytics, thì dữ liệu của Firebase Crashlytics cũng sẽ được truyền theo thời gian thực đến com_google_test_ANDROID_REALTIME.

Mỗi hàng trong bảng biểu thị một sự kiện đã xảy ra trong ứng dụng, bao gồm sự cố, lỗi không nghiêm trọng và lỗi ANR.

Bật tính năng xuất trực tuyến BigQuery của Crashlytics

Bạn có thể truyền trực tuyến dữ liệu Crashlytics theo thời gian thực bằng BigQueryStreaming. Bạn có thể sử dụng API này cho mọi mục đích cần có dữ liệu trực tiếp, chẳng hạn như trình bày thông tin trong một trang tổng quan trực tiếp, xem trực tiếp quá trình phát hành hoặc theo dõi các sự cố của ứng dụng kích hoạt cảnh báo và quy trình công việc tuỳ chỉnh.

Tính năng xuất trực tuyến BigQuery của Crashlytics không áp dụng cho hộp cát BigQuery.

Khi bật tính năng xuất trực tuyến BigQuery của Crashlytics, ngoài bảng lô, bạn sẽ có một bảng theo thời gian thực. Dưới đây là sự khác biệt mà bạn cần lưu ý giữa các bảng:

Bảng lô Bảng theo thời gian thực
  • Dữ liệu được xuất mỗi ngày một lần
  • Các sự kiện được lưu trữ bền vững trước khi ghi hàng loạt vào BigQuery
  • Có thể được điền lại tối đa 30 ngày trước đó
  • Dữ liệu được xuất theo thời gian thực
  • Không có sẵn quảng cáo thay thế

Bảng lô là lựa chọn lý tưởng cho hoạt động phân tích dài hạn và xác định các xu hướng theo thời gian, vì chúng tôi lưu trữ các sự kiện một cách bền vững trước khi ghi và có thể được bổ sung vào bảng trong tối đa 30 ngày. Khi ghi dữ liệu vào bảng theo thời gian thực, chúng tôi sẽ ghi dữ liệu đó ngay lập tức vào BigQuery. Vì vậy, đây là lựa chọn lý tưởng cho trang tổng quan trực tiếp và cảnh báo tuỳ chỉnh. Bạn có thể kết hợp 2 bảng này với một truy vấn ghép để tận dụng cả hai. Xem truy vấn Ví dụ 9 bên dưới.

Theo mặc định, bảng theo thời gian thực có thời gian hết hạn phân vùng là 30 ngày. Để tìm hiểu cách sửa đổi điều này, hãy xem phần Cập nhật ngày hết hạn của phân vùng.

Bật tính năng truyền trực tuyến BigQuery của Crashlytics

Để bật tính năng truyền trực tuyến, hãy chuyển đến mục Crashlytics của trang nội dung tích hợp BigQuery rồi chọn hộp đánh dấu Bao gồm truyền trực tuyến.

Mẫu Data Studio

Để bật dữ liệu theo thời gian thực trong mẫu Data Studio, hãy làm theo hướng dẫn trong bài viết Trực quan hoá dữ liệu Crashlytics đã xuất bằng Data Studio.

Chế độ xem

Bạn có thể chuyển các truy vấn mẫu bên dưới thành chế độ xem bằng cách sử dụng giao diện người dùng BigQuery. Hãy xem bài viết Tạo chế độ xem để biết hướng dẫn chi tiết.

Bạn có thể làm gì với dữ liệu đã xuất?

Các tệp xuất sang BigQuery chứa dữ liệu thô về sự cố, bao gồm cả loại thiết bị, hệ điều hành, ngoại lệ (ứng dụng Android) hoặc lỗi (ứng dụng của Apple) và nhật ký Crashlytics, cũng như các dữ liệu khác.

Làm việc với dữ liệu của Firebase Crashlytics trong BigQuery

Các ví dụ sau minh hoạ các truy vấn mà bạn có thể chạy trên dữ liệu Crashlytics. Những truy vấn này tạo ra những báo cáo không có trên trang tổng quan Crashlytics.

Ví dụ về truy vấn Crashlytics

Các ví dụ sau minh hoạ cách tạo báo cáo tổng hợp dữ liệu sự kiện sự cố thành các bản tóm tắt dễ hiểu hơn.

Ví dụ 1: Sự cố theo ngày

Sau khi nỗ lực khắc phục nhiều lỗi nhất có thể, một nhà phát triển tiềm năng cho rằng nhóm của cô cuối cùng đã sẵn sàng ra mắt ứng dụng chia sẻ ảnh mới. Trước khi làm, họ muốn kiểm tra số lượng sự cố mỗi ngày trong tháng vừa qua để đảm bảo lỗi đã làm cho ứng dụng ổn định hơn theo thời gian:

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;

Ví dụ 2: Tìm các sự cố rộng khắp nhất

Để ưu tiên các kế hoạch sản xuất một cách hợp lý, một nhà quản lý dự án sẽ cân nhắc cách chỉ ra 10 sự cố thường gặp nhất trong sản phẩm của họ. Chúng tạo ra một truy vấn cung cấp các điểm dữ liệu thích hợp:

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;

Ví dụ 3: 10 thiết bị hàng đầu gặp sự cố

Mùa thu là mùa điện thoại mới! Nhà phát triển biết điều đó cũng có nghĩa là đó cũng là mùa phát hành mới theo thiết bị cụ thể. Để xử lý những mối lo ngại lớn về khả năng tương thích, họ đã tổng hợp một truy vấn xác định 10 thiết bị gặp phải nhiều sự cố nhất trong tuần qua:

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;

Ví dụ 4: Lọc theo khoá tuỳ chỉnh

Một nhà phát triển trò chơi muốn biết trò chơi của họ gặp phải nhiều sự cố nhất ở cấp độ nào. Để theo dõi số liệu thống kê đó, họ đặt một khoá Crashlytics tuỳ chỉnh current_level và cập nhật khoá này mỗi khi người dùng đạt đến một cấp mới.

Objective-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Swift

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

Java

Crashlytics.setInt("current_level", 3);

Với khoá đó trong BigQuery Export, họ có thể viết một truy vấn để báo cáo việc phân phối các giá trị current_level được liên kết với mỗi sự kiện sự cố:

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

Ví dụ 5: Trích xuất mã nhận dạng người dùng

Một nhà phát triển có một ứng dụng trong chương trình tiếp cận sớm. Hầu hết người dùng đều yêu thích ứng dụng này, nhưng 3 người đã gặp phải nhiều sự cố bất thường. Để đi sâu vào vấn đề, họ sẽ viết một truy vấn để lấy tất cả sự kiện sự cố đối với những người dùng đó bằng cách sử dụng mã nhận dạng người dùng:

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

Ví dụ 6: Tìm tất cả người dùng gặp phải một sự cố cụ thể

Một nhà phát triển đã phát hành một lỗi nghiêm trọng cho một nhóm người kiểm thử phiên bản thử nghiệm. Nhóm có thể sử dụng truy vấn từ Ví dụ 2 ở trên để xác định mã vấn đề cụ thể. Bây giờ, họ muốn chạy một truy vấn để trích xuất danh sách người dùng ứng dụng bị sự cố này ảnh hưởng:

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;

Ví dụ 7: Số người dùng bị ảnh hưởng bởi một sự cố, được phân chia theo quốc gia

Giờ đây, đội ngũ này đã phát hiện một lỗi nghiêm trọng trong quá trình ra mắt một bản phát hành mới. Họ có thể sử dụng cụm từ tìm kiếm trong Ví dụ 2 ở trên để xác định mã vấn đề cụ thể về sự cố. Hiện tại, nhóm muốn xem liệu sự cố này có lan đến người dùng ở nhiều quốc gia trên thế giới hay không.

Để viết truy vấn này, nhóm cần phải:

  1. Bật tính năng xuất sang BigQuery cho Google Analytics. Hãy xem bài viết Xuất dữ liệu dự án sang BigQuery.

  2. Hãy cập nhật ứng dụng của họ để chuyển một mã nhận dạng người dùng vào cả SDK Google Analytics và SDK Crashlytics.

    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. Viết một truy vấn sử dụng trường mã nhận dạng người dùng để kết hợp các sự kiện trong tập dữ liệu BigQuery của Google Analytics có sự cố trong tập dữ liệu 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
    

Ví dụ 8: 5 vấn đề hàng đầu cho đến thời điểm hiện tại

Yêu cầu bật tính năng xuất trực tuyến BigQuery của 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;

Ví dụ 9: 5 vấn đề hàng đầu kể từ DATE, kể cả hôm nay

Yêu cầu bật tính năng xuất trực tuyến BigQuery của Crashlytics.

Trong ví dụ này, chúng tôi kết hợp các bảng theo lô và bảng theo thời gian thực để thêm thông tin theo thời gian thực vào dữ liệu lô đáng tin cậy. Vì event_id là khoá chính, nên chúng ta có thể sử dụng DISTINCT event_id để loại bỏ mọi sự kiện phổ biến trong 2 bảng.

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;

Tìm hiểu giản đồ Firebase Crashlytics trong BigQuery

Khi bạn liên kết Crashlytics với BigQuery, Firebase sẽ xuất các sự kiện gần đây (sự cố, lỗi không nghiêm trọng và lỗi ANR), bao gồm cả các sự kiện xảy ra trước thời điểm liên kết tối đa 2 ngày, với tuỳ chọn chèn lấp trong tối đa 30 ngày.

Từ thời điểm đó cho đến khi bạn tắt đường liên kết, Firebase sẽ xuất các sự kiện Crashlytics hằng ngày. Có thể mất vài phút để dữ liệu có trong BigQuery sau mỗi lần xuất.

Tập dữ liệu

Firebase Crashlytics tạo một tập dữ liệu mới trong BigQuery cho dữ liệu Crashlytics. Tập dữ liệu này bao gồm toàn bộ dự án của bạn, ngay cả khi dự án đó có nhiều ứng dụng.

Bảng

Firebase Crashlytics tạo một bảng trong tập dữ liệu cho từng ứng dụng trong dự án của bạn, trừ phi bạn chọn không xuất dữ liệu cho ứng dụng đó. Firebase đặt tên cho các bảng dựa trên giá trị nhận dạng gói của ứng dụng, trong đó các dấu chấm được chuyển đổi thành dấu gạch dưới và tên nền tảng được thêm vào cuối.

Ví dụ: dữ liệu cho ứng dụng Android có mã com.google.test sẽ nằm trong bảng tên là com_google_test_ANDROID, và dữ liệu theo thời gian thực (nếu được bật) sẽ nằm trong bảng tên là com_google_test_ANDROID_REALTIME

Các bảng chứa một bộ dữ liệu Crashlytics tiêu chuẩn cùng với mọi khoá Crashlytics tuỳ chỉnh do nhà phát triển xác định.

Hàng

Mỗi hàng trong bảng biểu thị một lỗi mà ứng dụng gặp phải.

Cột

Các cột trong một bảng là giống nhau đối với sự cố, lỗi không nghiêm trọng và lỗi ANR. Nếu bạn bật tính năng xuất trực tuyến BigQuery của Crashlytics, thì bảng theo thời gian thực sẽ có các cột giống với bảng lô. Các cột trong dữ liệu xuất được liệt kê dưới đây.

Không có dấu vết ngăn xếp

Các cột hiển thị trong các hàng thể hiện sự kiện không có dấu vết ngăn xếp.

Tên trường Loại dữ liệu Mô tả
platform STRING Ứng dụng của Apple hoặc Android
mã_nhận_dạng_gói STRING Mã gói, ví dụ: com.google.gmail
event_id STRING Mã nhận dạng duy nhất của sự kiện
nghiêm trọng BOOLEAN Ứng dụng có gặp sự cố hay không
loại_lỗi STRING Loại lỗi của sự kiện (FATAL, NON_FATAL, ANR)
mã_vấn_đề STRING Vấn đề liên quan đến sự kiện
mã_biến_thể STRING Biến thể vấn đề liên kết với sự kiện này
Xin lưu ý rằng không phải sự kiện nào cũng có một biến thể vấn đề tương ứng.
event_timestamp DẤU THỜI GIAN Thời điểm sự kiện xảy ra
device RECORD Thiết bị diễn ra sự kiện
thiết bị.nhà sản xuất STRING Nhà sản xuất thiết bị
thiết bị.model STRING Mẫu thiết bị
thiết bị.cấu trúc STRING X86_32, X86_64, ARMV7, ARM64, ARMV7S hoặc ARMV7K
bộ nhớ RECORD Trạng thái bộ nhớ của thiết bị
bộ nhớ.đã dùng INT64 Số byte bộ nhớ đã sử dụng
bộ nhớ.miễn phí INT64 Số byte bộ nhớ còn lại
lượng nước giữ lại RECORD Bộ nhớ liên tục của thiết bị
dung lượng lưu trữ.đã dùng INT64 Số byte bộ nhớ đã sử dụng
dung lượng lưu trữ.miễn phí INT64 byte bộ nhớ còn lại
hệ điều hành RECORD Thông tin chi tiết về hệ điều hành trên thiết bị
hệ_điều_hành.hiển_thị_phiên bản STRING Phiên bản hệ điều hành trên thiết bị
operating_system.name STRING Tên hệ điều hành trên thiết bị
điều_hành.modification_state STRING Liệu thiết bị đã bị sửa đổi hay chưa, ví dụ như thiết bị đã bị bẻ khoá/bị can thiệp vào hệ thống (Sửa đổi hoặc UNChạy)
điều hành_hệ thống.loại STRING Loại hệ điều hành chạy trên thiết bị (ví dụ: IOS, MACOS); chỉ dành cho các ứng dụng nền tảng của Apple
hệ điều hành.device_type STRING Loại thiết bị (ví dụ: THIẾT BỊ DI ĐỘNG, MÁY TÍNH BẢNG, TV, v.v.); còn được gọi là "danh mục thiết bị"
ứng dụng RECORD Ứng dụng đã tạo ra sự kiện
application.build_version STRING Phiên bản bản dựng của ứng dụng
application.display_version STRING
user RECORD Không bắt buộc: Thông tin được thu thập về người dùng ứng dụng
user.name STRING Không bắt buộc: Tên người dùng
email người dùng STRING Không bắt buộc: Địa chỉ email của người dùng
user.id STRING Không bắt buộc: Mã nhận dạng dành riêng cho ứng dụng được liên kết với người dùng
khoá_tuỳ_chỉnh BẢN GHI LẶP LẠI Cặp khoá-giá trị do nhà phát triển xác định
khoá_tuỳ_chỉnh_khoá. STRING Khoá do nhà phát triển xác định
giá trị_khoá_tuỳ_chỉnh STRING Giá trị do nhà phát triển xác định
cài đặt_uuid STRING Mã nhận dạng giúp xác định một lượt cài đặt thiết bị và ứng dụng duy nhất
sự cố_sdk_các_phiên bản STRING Phiên bản Crashlytics SDK đã tạo sự kiện
hướng_ứng_dụng STRING PORTRAIT, LANDSCAPE, FACE_UP hoặc FACE_DOWN
hướng_thiết_bị STRING PORTRAIT, LANDSCAPE, FACE_UP hoặc FACE_DOWN
trạng_thái_tiến_trình STRING THÔNG TIN KHÁI QUÁT
nhật ký BẢN GHI LẶP LẠI Thông điệp nhật ký có dấu thời gian do trình ghi nhật ký Crashlytics tạo, nếu được bật
log.timestamp DẤU THỜI GIAN Thời điểm lập nhật ký
log.message STRING Tin nhắn đã ghi nhật ký
breadcrumb BẢN GHI LẶP LẠI Đường dẫn Google Analytics có dấu thời gian, nếu bật
breadcrumbs.timestamp DẤU THỜI GIAN Dấu thời gian liên kết với breadcrumb (tập hợp liên kết phân cấp)
breadcrumbs.name STRING Tên liên kết với breadcrumb (tập hợp liên kết phân cấp)
breadcrumbs.params BẢN GHI LẶP LẠI Các thông số liên quan đến breadcrumb (tập hợp liên kết phân cấp)
breadcrumbs.params.key STRING Khoá tham số liên kết với breadcrumb (tập hợp liên kết phân cấp)
breadcrumbs.params.value STRING Một giá trị tham số liên kết với breadcrumb (tập hợp liên kết phân cấp)
khung_đổ lỗi RECORD Khung được xác định là nguyên nhân gốc gây ra sự cố hoặc lỗi
blame_frame.line INT64 Số dòng của tệp của khung
tệp blame_frame.file STRING Tên của tệp khung
biểu tượng đổ lỗi STRING Biểu tượng ngậm nước hoặc biểu tượng thô nếu không chứa nước
blame_frame.offset INT64 Độ lệch byte vào hình ảnh nhị phân chứa mã, không đặt cho các ngoại lệ của Java
blame_frame.address INT64 Địa chỉ trong hình ảnh nhị phân chứa mã, chưa đặt cho khung Java
blame_frame.library STRING Tên hiển thị của thư viện chứa khung
blame_frame.owner STRING NHÀ PHÁT TRIỂN, NHÀ CUNG CẤP, THỜI GIAN CHẠY, NỀN TẢNG hoặc HỆ THỐNG
đổ lỗi BOOLEAN Liệu kết quả phân tích của Crashlytics xác định rằng khung này có phải là nguyên nhân gây ra sự cố hoặc lỗi hay không
ngoại lệ BẢN GHI LẶP LẠI Chỉ dành cho Android: Các ngoại lệ xảy ra trong sự kiện này. Các ngoại lệ lồng nhau được trình bày theo thứ tự thời gian đảo ngược (đọc: bản ghi cuối cùng là trường hợp ngoại lệ đầu tiên được gửi)
ngoại lệ.type STRING Loại ngoại lệ, ví dụ: java.lang.IllegalStateException
ngoại lệ.exception_message STRING Thông báo liên quan đến trường hợp ngoại lệ
ngoại lệ.nested BOOLEAN Đúng cho tất cả trừ trường hợp ngoại lệ được gửi cuối cùng (tức là bản ghi đầu tiên)
ngoại lệ.tiêu đề STRING Tiêu đề của chuỗi tin nhắn
ngoại lệ.phụ đề STRING Tiêu đề phụ của chuỗi tin nhắn
ngoại lệ.bị đổ lỗi BOOLEAN Đúng nếu Crashlytics xác định rằng trường hợp ngoại lệ gây ra lỗi hoặc sự cố
ngoại lệ.frames BẢN GHI LẶP LẠI Các khung được liên kết với ngoại lệ
ngoại lệ.frames.line INT64 Số dòng của tệp của khung
ngoại lệ.frames.file STRING Tên của tệp khung
ngoại lệ.frames.symbol STRING Biểu tượng ngậm nước hoặc biểu tượng thô nếu không chứa nước
ngoại lệ.frames.offset INT64 Độ lệch byte vào hình ảnh nhị phân chứa mã, không đặt cho các ngoại lệ của Java
ngoại lệ.frames.address INT64 Địa chỉ trong hình ảnh nhị phân chứa mã, chưa đặt cho khung Java
ngoại lệ.frames.library STRING Tên hiển thị của thư viện chứa khung
ngoại lệ.frames.owner STRING NHÀ PHÁT TRIỂN, NHÀ CUNG CẤP, THỜI GIAN CHẠY, NỀN TẢNG hoặc HỆ THỐNG
ngoại lệ.frames.blamed BOOLEAN Liệu kết quả phân tích của Crashlytics xác định rằng khung này có phải là nguyên nhân gây ra sự cố hoặc lỗi hay không
error BẢN GHI LẶP LẠI Chỉ dành cho ứng dụng của Apple: lỗi không nghiêm trọng
error.queue_name STRING Hàng đợi mà luồng đang chạy
error.code INT64 Mã lỗi liên quan đến NSError tuỳ chỉnh đã ghi lại của ứng dụng
error.title STRING Tiêu đề của chuỗi tin nhắn
lỗi.phụ đề STRING Tiêu đề phụ của chuỗi tin nhắn
lỗi.bị đổ lỗi BOOLEAN Liệu kết quả phân tích của Crashlytics xác định rằng khung này có phải là nguyên nhân gây ra lỗi hay không
error.frame BẢN GHI LẶP LẠI Các khung của dấu vết ngăn xếp
error.frames.line INT64 Số dòng của tệp của khung
tệp error.frames.file STRING Tên của tệp khung
error.frames.symbol STRING Biểu tượng ngậm nước hoặc biểu tượng thô nếu không chứa nước
error.frames.offset INT64 Độ lệch byte vào hình ảnh nhị phân có chứa mã
error.frames.address INT64 Địa chỉ trong hình ảnh nhị phân chứa mã
error.frames.library STRING Tên hiển thị của thư viện chứa khung
error.frames.owner STRING NHÀ PHÁT TRIỂN, NHÀ CUNG CẤP, THỜI GIAN CHẠY, NỀN TẢNG hoặc HỆ THỐNG
error.frames.blamed BOOLEAN Liệu kết quả phân tích của Crashlytics xác định rằng khung này có phải là nguyên nhân gây ra lỗi hay không
chuỗi BẢN GHI LẶP LẠI Các luồng hiển thị tại thời điểm diễn ra sự kiện
Đề tài. BOOLEAN Luồng có gặp sự cố hay không
thread.thread_name STRING Tên của chuỗi
thread.queue_name STRING Chỉ dành cho ứng dụng của Apple: Hàng đợi mà luồng đang chạy
luồng.signal_name STRING Tên của tín hiệu khiến ứng dụng gặp sự cố, chỉ xuất hiện trên các luồng gốc đã gặp sự cố
luồng.signal_code STRING Mã của tín hiệu khiến ứng dụng gặp sự cố; chỉ xuất hiện trên các luồng gốc bị sự cố
thread.crash_address INT64 Địa chỉ của tín hiệu khiến ứng dụng gặp sự cố; chỉ xuất hiện trên các luồng gốc đã gặp sự cố
thread.code INT64 Chỉ dành cho ứng dụng Apple: Mã lỗi của NSError tuỳ chỉnh được ghi lại của ứng dụng
string.title STRING Tiêu đề của chuỗi tin nhắn
Đề tài.phụ đề STRING Tiêu đề phụ của chuỗi tin nhắn
luồng.bị đổ lỗi BOOLEAN Liệu kết quả phân tích của Crashlytics xác định rằng khung này có phải là nguyên nhân gây ra sự cố hoặc lỗi hay không
thread.frames BẢN GHI LẶP LẠI Khung của luồng
luồng.frames.line INT64 Số dòng của tệp của khung
luồng.frames.file STRING Tên của tệp khung
luồng.frames.symbol STRING Biểu tượng ngậm nước hoặc biểu tượng thô nếu không thể đọc
thread.frames.offset INT64 Độ lệch byte vào hình ảnh nhị phân có chứa mã
thread.frames.address INT64 Địa chỉ trong hình ảnh nhị phân chứa mã
thread.frames.library STRING Tên hiển thị của thư viện chứa khung
thread.frames.owner STRING NHÀ PHÁT TRIỂN, NHÀ CUNG CẤP, THỜI GIAN CHẠY, NỀN TẢNG hoặc HỆ THỐNG
thread.frames.blmed BOOLEAN Liệu kết quả phân tích của Crashlytics xác định rằng khung này có phải là nguyên nhân gây ra lỗi hay không
unity_metadata.unity_version STRING Phiên bản Unity chạy trên thiết bị này
unity_metadata.debug_build BOOLEAN Nếu đây là bản gỡ lỗi
unity_metadata.processor_type STRING Loại đơn vị xử lý
unity_metadata.processor_count INT64 Số lượng bộ xử lý (lõi)
unity_metadata.processor_frequency_mhz INT64 Tần số của(các) bộ xử lý, tính bằng MHz
unity_metadata.system_memory_size_mb INT64 Dung lượng bộ nhớ của hệ thống tính bằng Mb
unity_metadata.graphics_memory_size_mb INT64 Bộ nhớ đồ hoạ tính bằng MB
unity_metadata.graphics_device_id INT64 Giá trị nhận dạng của thiết bị đồ hoạ
unity_metadata.graphics_device_vendor_id INT64 Giá trị nhận dạng của nhà cung cấp bộ xử lý đồ hoạ
unity_metadata.graphics_device_name STRING Tên của thiết bị đồ hoạ
unity_metadata.graphics_device_vendor STRING Nhà cung cấp thiết bị đồ hoạ
unity_metadata.graphics_device_version STRING Phiên bản của thiết bị đồ hoạ
unity_metadata.graphics_device_type STRING Loại thiết bị đồ hoạ
unity_metadata.graphics_shader_level INT64 Cấp độ chương trình đổ bóng của đồ hoạ
unity_metadata.graphics_render_target_count INT64 Số lượng mục tiêu hiển thị đồ hoạ
unity_metadata.graphics_copy_texture_support?hl=vi STRING Hỗ trợ sao chép hoạ tiết đồ hoạ như định nghĩa trong Unity API
unity_metadata.graphics_max_texture_size INT64 Kích thước tối đa dành riêng cho việc hiển thị hoạ tiết
unity_metadata.screen_size_px STRING Kích thước màn hình tính bằng pixel, được định dạng thành chiều rộng x chiều cao
unity_metadata.screen_Độ phân giải_dpi STRING DPI của màn hình ở dạng số có dấu phẩy động
unity_metadata.screen_refresh_rate_hz INT64 Tốc độ làm mới màn hình tính bằng Hz

Trực quan hoá dữ liệu Crashlytics đã xuất bằng Data Studio

Google Data Studio biến các tập dữ liệu Crashlytics trong BigQuery thành các báo cáo dễ đọc, dễ chia sẻ và hoàn toàn tuỳ chỉnh.

Để tìm hiểu thêm về cách sử dụng Data Studio, hãy thử xem hướng dẫn bắt đầu nhanh về Data Studio, Chào mừng bạn đến với Data Studio.

Sử dụng mẫu báo cáo Crashlytics

Data Studio có một báo cáo mẫu cho Crashlytics bao gồm tập hợp các phương diện và chỉ số toàn diện từ giản đồ Crashlytics BigQuery đã xuất. Nếu đã bật tính năng xuất trực tuyến của Crashlytics BigQuery, bạn có thể xem dữ liệu đó trên trang Xu hướng theo thời gian thực của mẫu Data Studio.Bạn có thể dùng mẫu này làm mẫu để nhanh chóng tạo báo cáo và hình ảnh trực quan mới dựa trên dữ liệu thô về sự cố trong ứng dụng của mình:

  1. Mở mẫu Trang tổng quan Crashlytics Data Studio.
  2. Nhấp vào Sử dụng mẫu ở góc trên bên phải.
  3. Trong trình đơn thả xuống Nguồn dữ liệu mới, hãy chọn Tạo nguồn dữ liệu mới.
  4. Nhấp vào Chọn trên thẻ BigQuery.
  5. Chọn một bảng chứa dữ liệu Crashlytics đã xuất bằng cách chọn Dự án của tôi > [your-project-name] > firebase_crashlytics > [your-table-name]. Bạn luôn có thể chọn bảng lô của mình. Nếu tính năng xuất trực tuyến BigQuery của Crashlytics bật, bạn có thể chọn bảng theo thời gian thực.
  6. Trong phần Cấu hình, hãy đặt Cấp mẫu Crashlytics thành Mặc định.
  7. Nhấp vào Kết nối để tạo nguồn dữ liệu mới.
  8. Nhấp vào Thêm vào báo cáo để quay lại mẫu Crashlytics.
  9. Cuối cùng, hãy nhấp vào Create Report (Tạo báo cáo) để tạo bản sao cho mẫu Trang tổng quan Crashlytics Data Studio.