Check out what’s new from Firebase at Google I/O 2022. Learn more

Mengupgrade ke Firebase Crashlytics SDK

Anda kini dapat menyiapkan Crashlytics di aplikasi menggunakan Firebase Crashlytics SDK resmi baru, yang menawarkan API yang lebih baik dan lebih konsisten dengan produk Firebase lainnya serta lebih intuitif untuk digunakan.

Panduan ini menjelaskan cara mengupgrade ke SDK baru dari Fabric SDK yang lama. Panduan ini menjelaskan perubahan yang ada pada API baru, alasan perubahan, dan cara mengubah kode Anda, jika diperlukan.

Sebelum memulai

Fabric menambahkan GameObject ke Scene Anda untuk menginisialisasi Crashlytics dalam game Anda serta direktori tambahan untuk SDK itu sendiri.

Untuk memastikan tidak ada konflik antara plugin Fabric Crashlytics dan Firebase Crashlytics, hapus folder dan file Fabric berikut dari project Unity Anda:

  • Pada bagian Assets, hapus file berikut:

    Assets/
       Editor Default Resources/
           FabricSettings.asset     <- DELETE
       Fabric/                      ><- DELETE
       Plugins/
           Android/
               answers/             ><- DELETE
               beta/                ><- DELETE
               crashlytics/         ><- DELETE
               crashlytics-wrapper/ ><- DELETE
               fabric/              ><- DELETE
               fabric-init/         ><- DELETE
           iOS/
               Fabric/              ><- DELETE
    >
  • Di Hierarchy Window, hapus GameObjects berikut

    SampleScene
        Main Camera
        Directional Light
        Canvas
        EventSystem
        FabricInit                  <- DELETE CrashlyticsInit><- DELETE
    >
  • Hapus semua entri Fabric di Assets > Plugins > Android > AndroidManifest.xml.

    Misalnya, kunci yang diketahui untuk dihapus adalah: android:name="io.fabric.unity.android.FabricApplication"

    Telusuri dan hapus entri Fabric lainnya jika ada.

Langkah 1: Tambahkan file konfigurasi Firebase

  1. Buka Setelan Project. Di kartu Aplikasi Anda, pilih ID paket atau nama paket aplikasi yang Anda perlukan file konfigurasinya.

  2. Download file konfigurasi Firebase khusus platform untuk setiap aplikasi.

    • Untuk iOS+GoogleService-Info.plist
    • Untuk Androidgoogle-services.json

    Untuk satu project Unity, Anda dapat memiliki maksimal dua file konfigurasi.

  3. Di project Unity Anda, buka jendela Project, lalu pindahkan file konfigurasi Anda ke folder Assets.

Langkah 2: Tambahkan Firebase Crashlytics SDK

  1. Download Firebase Unity SDK, lalu ekstrak SDK di 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). Pastikan Anda memiliki FirebaseCrashlytics.unitypackage versi 6.15.0 atau yang lebih baru (jika tidak, update versi paket Asset). Hal ini diperlukan agar laporan error Anda muncul di Firebase console.

    • Unity 2017.x dan versi yang lebih baru: Perbolehkan penggunaan framework .NET 4.x. Jika project Unity Anda menggunakan .NET 4.x, impor dotnet4/FirebaseCrashlytics.unitypackage.

    Perhatikan bahwa Anda juga dapat mengimpor produk Firebase lain yang didukung.

  4. Di jendela Import Unity Package, klik Import.

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

  6. Inisialisasi Crashlytics dalam metode Start skrip:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    // Import Firebase
    using Firebase;
    
    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;
    
                  // 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()
      // ...
    }

Setelah SDK ditambahkan dan diinisialisasi, Crashlytics akan otomatis mulai memproses dan mengumpulkan laporan error.

Langkah 3: Perbarui kode

Tinjau perubahan SDK berikut dan lakukan perubahan yang sesuai pada kode Anda:

Crashlytics kini merotasi ID berdasarkan ID penginstalan Firebase

Crashlytics menggunakan UUID Penginstalan Crashlytics untuk mengidentifikasi instance aplikasi Anda dan untuk mengaitkan data pengguna dengan perangkat mereka. Sebelumnya, Crashlytics merotasi UUID Penginstalan pengguna saat ID iklan perangkat mereka berubah. Sekarang, Crashlytics merotasi UUID Penginstalan berdasarkan ID penginstalan Firebase (FID) pengguna. Untuk informasi selengkapnya, buka Mengelola ID penginstalan Firebase.

Alasan perubahan

Penggunaan FID konsisten dengan Firebase SDK lainnya.

Fabric.Crashlytics sekarang menjadi Firebase.Crashlytics

Kami telah mengubah namespace kami dari Fabric menjadi Firebase.

Fabric

using Fabric.Crashlytics;

Firebase

using Firebase.Crashlytics;

RecordCustomException sekarang menjadi LogException

Buat log pengecualian non-fatal kustom yang tertangkap dan sudah ditangani.

Fabric

Crashlytics.RecordCustomException(string name, string reason, StackTrace stackTrace);
Crashlytics.RecordCustomException(string name, string reason, string stackTraceString);

Firebase

Crashlytics.LogException(Exception ex);

Alasan perubahan

Fungsi ini paling sering digunakan untuk membuat log instance Exception. Anda tidak diwajibkan mengekstrak "name", "reason", dan "stackTrace" secara manual (yang menghasilkan kode berlebihan), tetapi Anda kini dapat memberikan instance Exception, dan Firebase Crashlytics akan mengekstrak informasi yang dibutuhkan.

Solusi

Jika memanfaatkan parameter ini dengan cara selain mengambil informasi langsung dari pengecualian, Anda masih bisa menghasilkan perilaku sebelumnya dengan membuat subclass Exception Anda sendiri, dengan metadata kustom dalam deskripsinya.

SetKeyValue sekarang menjadi SetCustomKey

Siapkan key-value pair untuk dikirim bersama laporan error Anda. Menyetel ulang kunci yang sama akan memperbarui nilainya.

Fabric

Crashlytics.SetKeyValue(string key, string value);

Firebase

Crashlytics.SetCustomKey(string key, string value);

Alasan perubahan

Metode ini diganti namanya agar perilakunya lebih mudah dipahami dan agar lebih konsisten dengan Firebase API lainnya.

SetUserIdentifier sekarang menjadi SetUserId

Siapkan ID pengguna untuk membantu memahami pengguna mana yang mengalami error.

Fabric

Crashlytics.SetUserIdentifier(string identifier);

Firebase

Crashlytics.SetUserId(string identifier);

Alasan perubahan

Metode ini diganti namanya agar lebih konsisten dengan Firebase API lainnya. Sebagai bonus, namanya lebih pendek; siapa yang tidak suka mengurangi jumlah ketikan?

SetUserEmail dan SetUserName dihapus

Sebelumnya, Anda diperbolehkan menetapkan nama atau email yang terkait dengan error menggunakan metode eksplisit. Metode ini tidak akan lagi ditetapkan secara eksplisit.

Fabric

Crashlytics.SetUserEmail(string email);
Crashlytics.SetUserName(string name);

Alasan perubahan

Google berusaha melindungi data pelanggan dan, sebagai bagian dari upaya tersebut, merancang API yang melakukan hal yang sama bagi alat developer. API khusus pengguna ini telah dihapus untuk mendorong penggunaan metode yang dihasilkan dan bukan pengidentifikasi pribadi untuk membedakan pengguna mana yang terpengaruh oleh error.

Solusi

Untuk menentukan pengguna mana yang mengalami error, metode yang disukai adalah menggunakan SetUserId. Namun, jika ini bukan solusi yang sesuai, fungsionalitas yang sama dapat dicapai menggunakan SetCustomKey.

Crash dan ThrowNonFatal dihapus

Sebelumnya, Crashlytics menyediakan dua metode utilitas untuk melemparkan pengecualian untuk tujuan pengujian. Kedua metode utilitas ini tidak akan dicakup dalam Firebase Crashlytics.

Fabric

Crashlytics.Crash();
Crashlytics.ThrowNonFatal();

Alasan perubahan

Crashlytics untuk Unity dijalankan di banyak lingkungan berbeda, dan berbagai jenis error dapat terjadi. Kedua metode ini tidak secara jelas menentukan apakah error terjadi di C# atau di SDK native khusus platform yang mendasarinya.

Solusi

  • Uji implementasi Anda dengan sengaja menimbulkan error pengujian yang akan mengirim laporan error ke dasbor Crashlytics di Firebase console.

Langkah 4: Build project

  1. Ekspor project Anda menggunakan dialog Build Settings Unity.

  2. Setelah ekspor selesai, pastikan bahwa project diekspor dengan benar dengan membandingkan project yang diekspor dan contoh konfigurasi ekspor di bawah.

    iOS+

    Android

  3. Jika sepertinya ada file yang hilang setelah membandingkan project: buka Unity Editor, lalu jalankan Resolver Layanan Google Play (temukan petunjuknya di bawah).

(jika diperlukan) Jalankan resolver jika file hilang setelah ekspor

External Dependency Manager for Unity (EDM4U) memastikan bahwa project Unity Anda memiliki dependensi runtime yang sesuai untuk platform Apple dan Android. Untuk informasi lebih lanjut tentang resolver, baca README untuk Unity Jar Resolver.

Langkah berikutnya