Mulai Menggunakan Firebase Crashlytics


Panduan memulai ini menjelaskan cara menyiapkan Firebase Crashlytics di aplikasi Anda dengan Firebase Crashlytics SDK sehingga Anda bisa mendapatkan laporan error yang komprehensif di Firebase console.

Penyiapan Crashlytics memerlukan tugas di Firebase console dan IDE Anda (seperti menambahkan file konfigurasi Firebase dan Crashlytics SDK). Untuk menyelesaikan penyiapan, paksa error pengujian agar Anda dapat mengirim laporan error pertama ke Firebase.

Sebelum memulai

  1. Tambahkan Firebase ke project Unity, jika Anda belum melakukannya. Jika belum memiliki project Unity, Anda dapat mendownload aplikasi contoh.

  2. Direkomendasikan: Untuk mendapatkan log breadcrumb secara otomatis guna memahami tindakan pengguna yang menyebabkan peristiwa error, non-fatal, atau ANR, Anda harus mengaktifkan Google Analytics di project Firebase Anda.

    • Jika project Firebase yang ada belum mengaktifkan Google Analytics, Anda dapat mengaktifkan Google Analytics dari tab Integrations di > Project settings di Firebase console.

    • Jika Anda membuat project Firebase baru, aktifkan Google Analytics selama alur kerja pembuatan project.

Langkah 1: Tambahkan Crashlytics SDK ke aplikasi Anda

Perlu diperhatikan bahwa saat mendaftarkan project Unity ke project Firebase, Anda mungkin telah mendownload Firebase Unity SDK dan menambahkan paket yang dijelaskan dalam langkah-langkah berikut.

  1. Download Firebase Unity SDK, lalu ekstrak SDK ke tempat yang mudah diakses. Firebase Unity SDK tidak bersifat khusus untuk platform tertentu.

  2. Pada project Unity yang terbuka, buka Aset > Impor Paket > Paket Kustom.

  3. Dari SDK yang telah diekstrak, pilih untuk mengimpor Crashlytics SDK (FirebaseCrashlytics.unitypackage).

    Untuk memanfaatkan log breadcrumb, tambahkan juga Firebase SDK untuk Google Analytics ke aplikasi Anda (FirebaseAnalytics.unitypackage). Pastikan Google Analytics diaktifkan di project Firebase Anda.

  4. Di jendela Import Unity Package, klik Import.

Langkah 2: Melakukan inisialisasi Crashlytics

  1. Buat skrip C# baru, lalu tambahkan ke GameObject di scene.

    1. Buka scene pertama Anda, lalu buat GameObject kosong bernama CrashlyticsInitializer.

    2. Klik Add Component di Inspector untuk objek baru.

    3. Pilih skrip CrashlyticsInit Anda untuk menambahkannya ke objek CrashlyticsInitializer.

  2. Lakukan inisialisasi Crashlytics dalam metode Start skrip:

    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()
        // ...
    }

Langkah 3: (Khusus Android) Lakukan penyiapan untuk upload simbol

Langkah ini hanya diperlukan untuk aplikasi Android yang menggunakan IL2CPP.

  • Untuk aplikasi Android yang menggunakan backend pembuatan skrip Mono dari Unity, langkah-langkah ini tidak diperlukan.

  • Untuk aplikasi platform Apple, langkah-langkah ini tidak diperlukan karena plugin Firebase Unity Editor secara otomatis mengonfigurasi project Xcode untuk mengupload simbol.

Unity SDK 8.6.1+ Crashlytics secara otomatis menyertakan pelaporan error NDK, yang memungkinkan Crashlytics melaporkan error IL2CPP Unity di Android secara otomatis. Namun, guna melihat stack trace tersimbolisasi untuk error library native di dasbor Crashlytics, Anda harus mengupload informasi simbol pada waktu build menggunakan Firebase CLI.

Untuk menyiapkan upload simbol, ikuti petunjuk menginstal Firebase CLI.

Jika Anda sudah menginstal CLI, pastikan untuk mengupdate ke versi terbarunya.

Langkah 4: Bangun project Anda dan upload simbol

iOS+ (platform Apple)

  1. Dari dialog Build Settings, ekspor project Anda ke ruang kerja Xcode.

  2. Bangun aplikasi Anda.

    Untuk platform Apple, plugin Firebase Unity Editor secara otomatis mengonfigurasi project Xcode Anda untuk membuat dan mengupload file simbol yang kompatibel dengan Crashlytics ke server Firebase untuk setiap build.

Android

  1. Dari dialog Build Settings, lakukan salah satu langkah berikut:

    • Ekspor ke project Android Studio untuk membangun project Anda; atau

    • Bangun APK langsung dari Unity Editor.
      Sebelum membangun, pastikan kotak centang untuk Create symbols.zip dicentang pada dialog Build Settings.

  2. Setelah build selesai, buat file simbol yang kompatibel dengan Crashlytics dan upload ke server Firebase dengan menjalankan perintah Firebase CLI berikut:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID: ID Aplikasi Android Firebase Anda (bukan nama paket)
      Contoh ID Aplikasi Android Firebase: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS: Jalur ke file simbol yang dihasilkan oleh CLI

      • Mengekspor ke project Android Studio — PATH/TO/SYMBOLS adalah direktori unityLibrary/symbols, yang dibuat dalam root project yang diekspor setelah Anda membangun aplikasi melalui Gradle atau Android Studio.

      • Membangun APK langsung dari dalam Unity — PATH/TO/SYMBOLS adalah jalur file simbol terkompresi yang dihasilkan di direktori root project saat build Anda selesai (misalnya: myproject/myapp-1.0-v100.symbols.zip).

    Lihat opsi lanjutan untuk menggunakan perintah Firebase CLI dalam pembuatan dan upload file simbol

    Flag Deskripsi
    --generator=csym

    Menggunakan generator file simbol cSYM lama, bukan generator Breakpad default

    Tidak direkomendasikan untuk digunakan. Sebaiknya gunakan generator file simbol Breakpad default.

    --generator=breakpad

    Menggunakan generator file simbol Breakpad

    Perhatikan bahwa default untuk pembuatan file simbol adalah Breakpad. Hanya gunakan flag ini jika Anda telah menambahkan symbolGenerator { csym() } dalam konfigurasi build dan ingin menggantinya untuk menggunakan Breakpad.

    --dry-run

    Membuat file simbol tetapi tidak menguploadnya

    Flag ini berguna jika Anda ingin memeriksa konten file yang dikirim.

    --debug Menyediakan informasi proses debug tambahan

Langkah 5: Sengaja pancing error pengujian untuk menyelesaikan penyiapan

Untuk menyelesaikan penyiapan Crashlytics dan melihat data awal di dasbor Crashlytics pada Firebase console, Anda harus memaksa error pengujian.

  1. Temukan GameObject yang ada, lalu tambahkan ke skrip berikut. Skrip ini akan menyebabkan error pengujian beberapa detik setelah Anda menjalankan aplikasi.

    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. Bangun aplikasi Anda dan upload informasi simbol setelah build selesai.

    • iOS+: Plugin Firebase Unity Editor otomatis mengonfigurasi project Xcode untuk mengupload file simbol.

    • Android: Untuk aplikasi Android yang menggunakan IL2CPP, jalankan perintah crashlytics:symbols:upload Firebase CLI untuk mengupload file simbol Anda.

  3. Jalankan aplikasi Anda. Setelah aplikasi berjalan, pantau log perangkat dan tunggu hingga pengecualian dipicu dari CrashlyticsTester.

    • iOS+: Lihat log di panel bawah Xcode.

    • Android: Lihat log dengan menjalankan perintah berikut di terminal: adb logcat.

  4. Buka dasbor Crashlytics di Firebase console untuk melihat error pengujian Anda.

    Jika Anda sudah me-refresh konsol dan masih tidak melihat error pengujian setelah lima menit, aktifkan logging debug untuk melihat apakah aplikasi Anda mengirim laporan error atau tidak.


Dan selesai! Crashlytics kini memantau aplikasi Anda untuk menemukan error. Buka dasbor Crashlytics untuk melihat dan menyelidiki semua laporan dan statistik Anda.

Langkah berikutnya

  • (Direkomendasikan) Untuk aplikasi Android yang menggunakan IL2CPP, dapatkan bantuan proses debug error yang disebabkan oleh error memori native dengan mengumpulkan laporan GWP-ASan Error terkait memori ini dapat dikaitkan dengan kerusakan memori dalam aplikasi Anda, yang merupakan penyebab utama kerentanan keamanan aplikasi. Untuk memanfaatkan fitur proses debug ini, pastikan aplikasi Anda menggunakan Crashlytics SDK terbaru untuk Unity (v10.7.0+) dan telah mengaktifkan GWP-ASan secara eksplisit (mengharuskan Anda untuk mengubah Manifes Aplikasi Android).
  • Integrasikan dengan Google Play sehingga Anda dapat memfilter laporan error aplikasi Android berdasarkan jalur Google Play secara langsung di dasbor Crashlytics. Dengan demikian, Anda dapat lebih memfokuskan dasbor pada build tertentu.