Memulai Firebase Crashlytics

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

Penyiapan Crashlytics perlu dilakukan baik di Firebase console maupun di IDE Anda (misalnya, 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 fitur seperti pengguna bebas error, log breadcrumb, dan pemberitahuan kecepatan, Anda harus mengaktifkan Google Analytics di project Firebase.

    • Jika project Firebase yang ada belum mengaktifkan Google Analytics, Anda dapat melakukannya 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 Crashlytics.

  1. Download Firebase Unity SDK, lalu ekstrak SDK ke tempat yang mudah diakses.

    Firebase Unity SDK tidak dikhususkan untuk platform tertentu.

  2. Pada project Unity yang terbuka, buka Assets > Import Package > Custom Package.

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

    Anda juga dapat mengimpor produk Firebase lain yang didukung.

  4. Di jendela Import Unity Package, klik Import.

Langkah 2: Lakukan 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: Paksa 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 pada 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.


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

Langkah berikutnya

  • Integrasikan dengan Google Play sehingga Anda dapat memfilter laporan error aplikasi Android menurut jalur Google Play secara langsung di dasbor Crashlytics. Dengan demikian, Anda dapat lebih memfokuskan dasbor pada build tertentu.