Memigrasikan aplikasi Unity dari Fabric Crashlytics ke Firebase Crashlytics

Panduan memulai ini menjelaskan cara memigrasikan aplikasi Fabric Crashlytics Unity yang ada ke Firebase Crashlytics sehingga Anda dapat melihat semua laporan kerusakan di Firebase console.

Sebelum memulai

Panduan berikut ini menganggap bahwa Anda memiliki aplikasi Unity yang berfungsi dengan Fabric. Jika Anda belum memiliki aplikasi Unity yang ada di Fabric, ikuti petunjuk Memulai untuk pengguna yang baru menggunakan Crashlytics.

  1. Login ke Fabric, lalu buka alur migrasi.

  2. Periksa apakah kolom Login ke Google sebagai mencantumkan akun Google yang dikaitkan dengan project Firebase Anda. Jika tidak, klik Ganti akun untuk memilih akun yang benar.

  3. Klik Mulai, lalu klik Mulai Penautan.

  4. Tarik Aplikasi Fabric yang sesuai di sebelah kiri ke project Firebase yang tepat di sebelah kanan.

    Anda juga dapat membuat project Firebase baru.

  5. Klik Tautkan 1 aplikasi ke Firebase.

Langkah 2: Hapus Fabric

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 Aset, hapus file-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 Jendela Hierarki, hapus GameObjects berikut

    SampleScene
        Main Camera
        Directional Light
        Canvas
        EventSystem
        FabricInit                  <- DELETE
        CrashlyticsInit             <- DELETE
    
  • Hapus semua entri Fabric di Aset > Plugin > 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 3: Tambahkan file konfigurasi Firebase

  1. Buka Firebase console.

  2. Di pojok kiri atas di samping Ringkasan Project, klik , lalu pilih Setelan Project

  3. Untuk aplikasi yang baru saja ditautkan, download file konfigurasi Firebase khusus platform Anda untuk setiap aplikasi yang Anda tautkan. Untuk satu project Unity, Anda dapat memiliki paling banyak dua file konfigurasi.

    • Untuk iOSGoogleService-Info.plist
    • Untuk Androidgoogle-services.json
  4. Di project Unity Anda, buka jendela Project, lalu pindahkan file konfigurasi Anda ke folder Assets.

Langkah 4: Tambahkan Firebase Crashlytics SDK

  1. Download Firebase Unity SDK, lalu buka kompresi SDK di tempat yang mudah diakses.

    Firebase Unity SDK tidak khusus platform.

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

  3. Dari SDK yang telah dibuka kompresinya, 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 aset). Hal ini diperlukan agar laporan kerusakan Anda muncul di Firebase console.

    • Unity 5.x dan versi yang lebih lama: Menggunakan framework .NET 3.x, jadi impor dotnet3/FirebaseCrashlytics.unitypackage.

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

    Anda juga dapat mengimpor produk Firebase yang didukung lainnya.

  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 Tambahkan Komponen di Inspektur untuk object 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 mendeteksi dan mengumpulkan laporan kerusakan.

Langkah 5: Inisialisasi Firebase 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 Tambahkan Komponen di Inspektur untuk object baru.

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

  2. 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 mendeteksi dan mengumpulkan laporan kerusakan.

Langkah 6: Ganti panggilan Fabric API

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

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

Catat pengecualian tidak fatal kustom yang terbaca dan 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 mencatat instance Exception. Bukannya mengharuskan Anda mengekstrak "nama", "alasan", dan "stackTrace" secara manual (yang menghasilkan kode berlebihan), Anda kini dapat memberikan instance Exception, dan Firebase Crashlytics akan mengekstrak informasi yang dibutuhkan.

Solusi

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

SetKeyValue sekarang menjadi SetCustomKey

Siapkan key-value pair untuk dikirim bersama laporan kerusakan Anda. Menyetel ulang kunci yang sama akan memperbarui nilai ini.

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 ketukan tombol?

SetUserEmail dan SetUserName dihapus

Sebelumnya, Anda diperbolehkan menetapkan nama atau email yang terkait dengan error menggunakan metode eksplisit. Nama atau email 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 untuk pembuatan fitur 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 dapat dipertahankan, fungsi yang sama dapat dicapai menggunakan SetCustomKey.

Error dan ThrowNonFatal dihapus

Sebelumnya, Crashlytics menyediakan dua metode utilitas untuk memunculkan 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 asli khusus platform yang mendasarinya.

Solusi

Langkah 7: Buat project Anda

Setelah mengekspor project ke iOS atau Android, pastikan bahwa project tersebut diekspor dengan benar.

Jika sepertinya ada file yang hilang setelah membandingkan project Anda dengan contoh konfigurasi ekspor di bawah ini, buka Unity Editor, kemudian jalankan Resolver Layanan Google Play.

iOS

Android

Jalankan resolver (opsional)

Resolver Layanan Google Play memastikan bahwa project Unity Anda memiliki dependensi yang sesuai untuk mengekspor aplikasi Anda ke iOS atau Android.

Untuk informasi lebih lanjut tentang resolver, baca README untuk Unity Jar Resolver.

iOS

Resolver iOS berjalan secara otomatis dan memanfaatkan Cocoapods untuk menempatkan dependensi iOS di direktori Pods yang diekspor.

  • Untuk mendownload Cocoapods ke mesin Anda:

    • Buka Aset > Resolver Layanan Play > Resolver iOS > Instal Cocoapods
  • Untuk mengaktifkan atau menonaktifkan pembuatan podfiles (opsional):

    • Buka Aset > Resolver Layanan Play > Resolver iOS > Setelan

Android

Resolver Android berjalan secara otomatis dan memanfaatkan gradle untuk menempatkan dependensi Android di Assets/Plugins/Android.

  • Untuk menjalankan resolver secara manual:

    • Buka Aset > Resolver Layanan Play > Resolver Android > Selesaikan
  • Untuk mengaktifkan atau menonaktifkan resolusi otomatis (diaktifkan secara default):

    • Buka Aset > Resolver Layanan Play > Resolver Android > Setelan

Langkah berikutnya

  • Menguji implementasi Anda—Uji penyiapan Crashlytics Anda dengan menimbulkan error secara sengaja untuk menghasilkan laporan kerusakan di Firebase console.

  • Menyesuaikan laporan kerusakan—Crashlytics otomatis mulai mengumpulkan laporan kerusakan begitu Anda menambahkan SDK. Namun, Anda juga dapat menyesuaikan penyiapan dengan menambahkan pelaporan keikutsertaan, log, kunci, dan bahkan pelacakan error tidak fatal.

  • Mempelajari Perubahan API—Lihat perkembangan Crashlytics dari Fabric Crashlytics menjadi Firebase Crashlytics.

  • Tambahkan Google Analytics— Gabungkan keandalan Google Analytics dengan Firebase Crashlytics untuk melihat statistik Pengguna Bebas Error di Firebase console.