Bắt đầu sử dụng Crashlytics cho Unity

Chọn nền tảng: iOS+ Android Android NDK Flutter Unity


Hướng dẫn này mô tả cách bắt đầu sử dụng Firebase Crashlytics trong dự án Unity của bạn.

Sau khi thiết lập SDK Firebase Crashlytics trong ứng dụng, bạn có thể nhận được báo cáo sự cố toàn diện trong bảng điều khiển Firebase.

Để thiết lập Crashlytics, bạn cần thực hiện các nhiệm vụ trong cả bảng điều khiển Firebase và IDE (chẳng hạn như thêm tệp cấu hình Firebase và SDK Crashlytics). Để hoàn tất việc thiết lập, bạn cần xác định sự cố thử nghiệm để gửi báo cáo sự cố đầu tiên đến Firebase.

Trước khi bắt đầu

  1. Nếu bạn chưa thực hiện, hãy thêm Firebase vào dự án Unity của bạn. Nếu chưa có dự án Unity, bạn có thể tải ứng dụng mẫu xuống.

  2. Nên dùng: Để tự động nhận nhật ký dấu vết nhằm tìm hiểu các hành động của người dùng dẫn đến sự cố, lỗi không nghiêm trọng hoặc sự kiện ANR, bạn cần bật Google Analytics trong dự án Firebase của mình.

    • Nếu bạn đang tạo dự án Firebase mới, hãy bật Google Analytics trong quy trình tạo dự án.

    • Nếu đang sử dụng một dự án Firebase hiện có chưa bật Google Analytics, bạn có thể bật tính năng này trong trang Cài đặt > Tích hợp của bảng điều khiển Firebase.

Bước 1: Thêm SDK Crashlytics vào ứng dụng của bạn

Lưu ý rằng khi đăng ký dự án Unity với dự án Firebase, bạn có thể đã tải SDK Firebase Unity xuống và thêm các gói được mô tả trong các bước sau.

  1. Tải Firebase Unity SDK xuống, sau đó giải nén SDK vào một vị trí thuận tiện. SDK Firebase Unity không dành riêng cho nền tảng nào.

  2. Trong dự án Unity đang mở, hãy chuyển đến Assets (Tài sản) > Import Package (Nhập gói) > Custom Package (Gói tuỳ chỉnh).

  3. Trong SDK đã giải nén, hãy chọn nhập SDK Crashlytics (FirebaseCrashlytics.unitypackage).

    Để tận dụng nhật ký dấu vết, hãy thêm Firebase SDK cho Google Analytics vào ứng dụng của bạn (FirebaseAnalytics.unitypackage). Đảm bảo rằng Google Analytics được bật trong dự án Firebase của bạn.

  4. Trong cửa sổ Import Unity Package (Nhập gói Unity), hãy nhấp vào Import (Nhập).

Bước 2: Khởi tạo Crashlytics

  1. Tạo một tập lệnh C# mới, sau đó thêm tập lệnh đó vào GameObject trong cảnh.

    1. Mở cảnh đầu tiên, sau đó tạo một GameObject trống có tên là CrashlyticsInitializer.

    2. Nhấp vào Add Component (Thêm thành phần) trong Inspector (Trình kiểm tra) cho đối tượng mới.

    3. Chọn tập lệnh CrashlyticsInit để thêm vào đối tượng CrashlyticsInitializer.

  2. Khởi chạy Crashlytics trong phương thức Start của tập lệnh:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    // Import Firebase and Crashlytics
    using Firebase;
    using Firebase.Crashlytics;
    
    public class CrashlyticsInit : MonoBehaviour {
        // Use this for initialization
        void Start () {
            // Initialize Firebase
            Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
                var dependencyStatus = task.Result;
                if (dependencyStatus == Firebase.DependencyStatus.Available)
                {
                    // Create and hold a reference to your FirebaseApp,
                    // where app is a Firebase.FirebaseApp property of your application class.
                    // Crashlytics will use the DefaultInstance, as well;
                    // this ensures that Crashlytics is initialized.
                    Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance;
    
                    // When this property is set to true, Crashlytics will report all
                    // uncaught exceptions as fatal events. This is the recommended behavior.
                    Crashlytics.ReportUncaughtExceptionsAsFatal = true;
    
                    // Set a flag here for indicating that your project is ready to use Firebase.
                }
                else
                {
                    UnityEngine.Debug.LogError(System.String.Format(
                      "Could not resolve all Firebase dependencies: {0}",dependencyStatus));
                    // Firebase Unity SDK is not safe to use here.
                }
            });
        }
    
      // Update is called once per frame
      void Update()
        // ...
    }

Bước 3: (Chỉ dành cho Android) Thiết lập để tải biểu tượng lên

Bước này chỉ bắt buộc đối với các ứng dụng Android sử dụng IL2CPP.

  • Đối với các ứng dụng Android sử dụng phần phụ trợ tập lệnh Mono của Unity, bạn không cần thực hiện các bước này.

  • Đối với các ứng dụng trên nền tảng của Apple, bạn không cần thực hiện các bước này vì trình bổ trợ Firebase Unity Editor sẽ tự động định cấu hình dự án Xcode của bạn để tải các biểu tượng lên.

Crashlytics SDK cho Unity (phiên bản 8.6.1 trở lên) tự động tích hợp tính năng báo cáo sự cố NDK, cho phép Crashlytics tự động báo cáo sự cố IL2CPP của Unity trên Android. Tuy nhiên, để xem dấu vết ngăn xếp được thay thế bằng biểu tượng cho các sự cố thư viện gốc trong trang tổng quan Crashlytics, bạn phải tải thông tin biểu tượng lên tại thời điểm tạo bản dựng bằng CLI Firebase.

Để thiết lập tính năng tải biểu tượng lên, hãy làm theo hướng dẫn để cài đặt CLI Firebase.

Nếu bạn đã cài đặt CLI, hãy nhớ cập nhật lên phiên bản mới nhất.

Bước 4: Tạo dự án và tải ký hiệu lên

iOS+ (nền tảng Apple)

  1. Trong hộp thoại Build Settings (Cài đặt bản dựng), hãy xuất dự án của bạn sang một không gian làm việc Xcode.

  2. Tạo ứng dụng.

    Đối với các nền tảng của Apple, trình bổ trợ Trình chỉnh sửa Unity của Firebase sẽ tự động định cấu hình dự án Xcode của bạn để tạo và tải tệp biểu tượng tương thích với Crashlytics lên máy chủ Firebase cho mỗi bản dựng.

Android

  1. Trong hộp thoại Build Settings (Cài đặt bản dựng), hãy làm theo một trong những cách sau:

    • Xuất sang một dự án Android Studio để xây dựng dự án; hoặc

    • Tạo tệp APK ngay trong Trình chỉnh sửa Unity.
      Trước khi tạo bản dựng, hãy đảm bảo bạn đã đánh dấu vào hộp Create symbols.zip (Tạo tệp symbols.zip) trong hộp thoại Build Settings (Cài đặt bản dựng).

  2. Sau khi quá trình tạo bản dựng hoàn tất, hãy tạo một tệp biểu tượng tương thích với Crashlytics và tải tệp đó lên máy chủ Firebase bằng cách chạy lệnh CLI Firebase sau:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID: Mã ứng dụng Android Firebase (không phải tên gói)
      Ví dụ về Mã ứng dụng Android Firebase: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS: Đường dẫn đến tệp biểu tượng do CLI tạo

      • Được xuất sang một dự án Android Studio — PATH/TO/SYMBOLS là thư mục unityLibrary/symbols, được tạo trong thư mục gốc của dự án đã xuất sau khi bạn tạo ứng dụng thông qua Gradle hoặc Android Studio.

      • Tạo tệp APK ngay trong Unity — PATH/TO/SYMBOLS là đường dẫn của tệp biểu tượng nén được tạo trong thư mục gốc của dự án khi bản dựng hoàn tất (ví dụ: myproject/myapp-1.0-v100.symbols.zip).

    Xem các lựa chọn nâng cao để sử dụng lệnh CLI Firebase nhằm tạo tệp biểu tượng và tải lên

    Gắn cờ Nội dung mô tả
    --generator=csym

    Sử dụng trình tạo tệp biểu tượng cSYM cũ thay vì trình tạo Breakpad mặc định

    Không nên sử dụng. Bạn nên sử dụng trình tạo tệp biểu tượng Breakpad mặc định.

    --generator=breakpad

    Sử dụng trình tạo tệp biểu tượng Breakpad

    Xin lưu ý rằng chế độ mặc định để tạo tệp biểu tượng là Breakpad. Chỉ sử dụng cờ này nếu bạn đã thêm symbolGenerator { csym() } vào cấu hình bản dựng và muốn ghi đè để sử dụng Breakpad.

    --dry-run

    Tạo tệp biểu tượng nhưng không tải tệp lên

    Cờ này sẽ hữu ích nếu bạn muốn kiểm tra nội dung của các tệp được gửi.

    --debug Cung cấp thêm thông tin gỡ lỗi

Bước 5: Xác định sự cố thử nghiệm để hoàn tất việc thiết lập

Để hoàn tất việc thiết lập Crashlytics và xem dữ liệu ban đầu trên trang tổng quan Crashlytics trong bảng điều khiển của Firebase, bạn cần xác định sự cố thử nghiệm.

  1. Tìm một GameObject hiện có, sau đó thêm tập lệnh sau vào đó. Tập lệnh này sẽ gây ra sự cố thử nghiệm vài giây sau khi bạn chạy ứng dụng.

    using System;
    using UnityEngine;
    
    public class CrashlyticsTester : MonoBehaviour {
    
        int updatesBeforeException;
    
        // Use this for initialization
        void Start () {
          updatesBeforeException = 0;
        }
    
        // Update is called once per frame
        void Update()
        {
            // Call the exception-throwing method here so that it's run
            // every frame update
            throwExceptionEvery60Updates();
        }
    
        // A method that tests your Crashlytics implementation by throwing an
        // exception every 60 frame updates. You should see reports in the
        // Firebase console a few minutes after running your app with this method.
        void throwExceptionEvery60Updates()
        {
            if (updatesBeforeException > 0)
            {
                updatesBeforeException--;
            }
            else
            {
                // Set the counter to 60 updates
                updatesBeforeException = 60;
    
                // Throw an exception to test your Crashlytics implementation
                throw new System.Exception("test exception please ignore");
            }
        }
    }
  2. Tạo ứng dụng và tải thông tin biểu tượng lên sau khi quá trình tạo bản dựng hoàn tất.

    • iOS+: Trình bổ trợ Firebase Unity Editor tự động định cấu hình dự án Xcode để tải tệp biểu tượng lên.

    • Android: Đối với các ứng dụng Android sử dụng IL2CPP, hãy chạy lệnh Firebase CLI crashlytics:symbols:upload để tải tệp biểu tượng lên.

  3. Chạy ứng dụng. Sau khi ứng dụng chạy, hãy xem nhật ký thiết bị và đợi ngoại lệ kích hoạt từ CrashlyticsTester.

    • iOS+: Xem nhật ký trong ngăn dưới cùng của Xcode.

    • Android: Xem nhật ký bằng cách chạy lệnh sau trong dòng lệnh: adb logcat.

  4. Trong bảng điều khiển Firebase, hãy chuyển đến trang tổng quan DevOps & Engagement (DevOps và mức độ tương tác) > Crashlytics để kiểm tra báo cáo sự cố thử nghiệm.

    Nếu bạn đã làm mới bảng điều khiển và vẫn không thấy sự cố kiểm thử sau 5 phút, hãy bật tính năng ghi nhật ký gỡ lỗi để xem ứng dụng của bạn có đang gửi báo cáo sự cố hay không.


Chỉ vậy thôi! Crashlytics hiện đang theo dõi ứng dụng của bạn để phát hiện sự cố. Truy cập vào trang tổng quan Crashlytics để xem và tìm hiểu tất cả báo cáo và số liệu thống kê của bạn.

Các bước tiếp theo

  • (Nên dùng) Đối với các ứng dụng Android sử dụng IL2CPP, hãy thu thập báo cáo GWP-ASan để được trợ giúp gỡ lỗi sự cố do lỗi bộ nhớ gốc gây ra. Các lỗi liên quan đến bộ nhớ này có thể liên quan đến tình trạng hỏng bộ nhớ trong ứng dụng của bạn, đây là nguyên nhân hàng đầu gây ra lỗ hổng bảo mật trong ứng dụng. Để tận dụng tính năng gỡ lỗi này, hãy đảm bảo ứng dụng của bạn sử dụng SDK Crashlytics mới nhất cho Unity (phiên bản 10.7.0 trở lên) và đã bật rõ ràng GWP-ASan (bạn cần sửa đổi Tệp kê khai ứng dụng Android).

  • Tuỳ chỉnh chế độ thiết lập báo cáo sự cố bằng cách thêm báo cáo chọn sử dụng, nhật ký, khoá và theo dõi lỗi không nghiêm trọng.

  • Xuất dữ liệu sang BigQuery hoặc Cloud Logging để sử dụng các tính năng và phân tích nâng cao, chẳng hạn như truy vấn dữ liệu, tạo trang tổng quan tuỳ chỉnh và thiết lập cảnh báo tuỳ chỉnh.