Bắt đầu với Firebase Crashlytics

Hướng dẫn bắt đầu nhanh này mô tả cách thiết lập Firebase Crashlytics trong ứng dụng của bạn bằng SDK Firebase Crashlytics để bạn có thể nhận báo cáo sự cố toàn diện trong bảng điều khiển Firebase.

Việc thiết lập Crashlytics yêu cầu các tác vụ cả trong bảng điều khiển Firebase và IDE của bạn (như thêm tệp cấu hình Firebase và SDK Crashlytics). Để hoàn tất quá trình thiết lập, bạn cần buộc một sự cố thử nghiệm gửi báo cáo sự cố đầu tiên của mình tới Firebase.

Trước khi bắt đầu

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

  2. Khuyến nghị : Để tự động nhận nhật ký đường dẫn nhằm hiểu hành động của người dùng dẫn đến sự cố, sự kiện không gây tử vong hoặc ANR, bạn cần bật Google Analytics trong dự án Firebase của mình.

    • Nếu dự án Firebase hiện tại của bạn chưa bật Google Analytics, bạn có thể bật Google Analytics từ tab Tích hợp của > Cài đặt dự án trong bảng điều khiển Firebase.

    • 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.

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 xuống SDK Unity Firebase và thêm các gói được mô tả trong các bước sau.

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

  2. Trong dự án Unity đang mở của bạn, hãy điều hướng đến Tài sản > Gói nhập > Gói tùy chỉnh .

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

    Để tận dụng nhật ký breadcrumb , hãy thêm SDK Firebase 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ổ Nhập gói Unity , nhấp vào Nhập .

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

  1. Tạo 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 của bạn, sau đó tạo GameObject trống có tên CrashlyticsInitializer .

    2. Nhấp vào Thêm thành phần trong Thanh tra cho đối tượng mới.

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

  2. Khởi tạo 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 lên biểu tượng

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 chương trình phụ trợ tập lệnh Mono của Unity, các bước này không cần thiết.

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

Unity SDK 8.6.1+ của Crashlytics tự động bao gồm báo cáo sự cố NDK, cho phép Crashlytics tự động báo cáo sự cố Unity IL2CPP trên Android. Tuy nhiên, để xem dấu vết ngăn xếp được tượng trưng cho các sự cố thư viện gốc trong bảng điều khiển Crashlytics, bạn phải tải thông tin biểu tượng lên tại thời điểm xây dựng bằng CLI Firebase.

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

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 của nó .

Bước 4 : Xây dựng dự án của bạn và tải lên các biểu tượng

iOS+ (nền tảng Apple)

  1. Từ hộp thoại Cài đặt bản dựng , xuất dự án của bạn sang không gian làm việc Xcode.

  2. Xây dựng ứng dụng của bạn.

    Đối với nền tảng Apple, plugin Firebase Unity Editor 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. Từ hộp thoại Cài đặt bản dựng , hãy thực hiện một trong các thao tác sau:

    • Xuất sang dự án Android Studio để xây dựng dự án của bạn; hoặc

    • Xây dựng APK của bạn trực tiếp từ Unity Editor.
      Trước khi xây dựng, hãy đảm bảo hộp kiểm Tạo ký hiệu.zip được chọn trong hộp thoại Cài đặt bản dựng .

  2. Sau khi quá trình xây dựng của bạn hoàn tất, hãy tạo 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 Firebase CLI sau:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID : ID ứng dụng Android Firebase của bạn (không phải tên gói của bạn)
      Ví dụ ID ứng dụng Android Firebase: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS : Đường dẫn đến tệp ký hiệu do CLI tạo

      • Đã xuất sang 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 xây dựng ứng dụng qua Gradle hoặc Android Studio.

      • Xây dựng APK trực tiếp từ bên 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 quá trình xây dựng của bạn hoàn tất (ví dụ: myproject/myapp-1.0-v100.symbols.zip ).

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

    Lá cờ Sự miêu 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. Chúng tôi khuyên 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

    Lưu ý rằng mặc định cho việc 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() } trong cấu hình bản dựng của mình và bạn muốn ghi đè nó để sử dụng Breakpad thay thế.

    --dry-run

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

    Cờ này 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 : Buộc chạy thử nghiệm để hoàn tất quá trình thiết lập

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

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

    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. Xây dựng ứng dụng của bạn và tải lên thông tin biểu tượng sau khi quá trình xây dựng của bạn kết thúc.

    • iOS+ : Plugin Firebase Unity Editor tự động định cấu hình dự án Xcode của bạn để tải tệp biểu tượng của bạn 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 lên tệp biểu tượng của bạn.

  3. Chạy ứng dụng của bạn. Khi ứng dụng của bạn đang 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ý ở khung dưới cùng của Xcode.

    • Android : Xem nhật ký bằng cách chạy lệnh sau trong thiết bị đầu cuối: adb logcat .

  4. Đi tới trang tổng quan Crashlytics của bảng điều khiển Firebase để xem sự cố thử nghiệm của bạn.

    Nếu bạn đã làm mới bảng điều khiển và vẫn không thấy lỗi kiểm tra 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ó gửi báo cáo lỗi hay không.


Và thế là xong! Crashlytics hiện đang theo dõi ứng dụng của bạn để phát hiện sự cố. Truy cập trang tổng quan Crashlytics để xem và điều tra tất cả các báo cáo và số liệu thống kê của bạn.

Bước tiếp theo

  • (Được khuyến nghị) Đối với các ứng dụng Android sử dụng IL2CPP, hãy nhận trợ giúp gỡ lỗi sự cố do lỗi bộ nhớ gốc gây ra bằng cách thu thập báo cáo GWP-ASan . Những lỗi liên quan đến bộ nhớ này có thể liên quan đến 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 ứ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 (v10.7.0+) và đã bật rõ ràng GWP-ASan (yêu cầu bạn sửa đổi Bản kê khai ứng dụng Android của mình ).
  • Tích hợp với Google Play để bạn có thể lọc báo cáo sự cố của ứng dụng Android theo bản nhạc Google Play trực tiếp trong trang tổng quan Crashlytics. Điều này cho phép bạn tập trung tốt hơn vào bảng điều khiển của mình trên các bản dựng cụ thể.