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
Buka Setelan Project. Di kartu Aplikasi Anda, pilih ID paket atau nama paket aplikasi yang Anda perlukan file konfigurasinya.
Download file konfigurasi Firebase khusus platform untuk setiap aplikasi.
- Untuk iOS+ —
GoogleService-Info.plist
- Untuk Android —
google-services.json
Untuk satu project Unity, Anda dapat memiliki maksimal dua file konfigurasi.
- Untuk iOS+ —
Di project Unity Anda, buka jendela Project, lalu pindahkan file konfigurasi Anda ke folder
Assets
.
Langkah 2: Tambahkan Firebase Crashlytics SDK
Download Firebase Unity SDK, lalu ekstrak SDK di tempat yang mudah diakses.
Firebase Unity SDK tidak dikhususkan untuk platform tertentu.
Pada project Unity yang terbuka, buka Assets > Import Package > Custom Package.
Dari SDK yang telah diekstrak, pilih untuk mengimpor Crashlytics SDK (
FirebaseCrashlytics.unitypackage
). Pastikan Anda memilikiFirebaseCrashlytics.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.
- Unity 2017.x dan versi yang lebih baru: Perbolehkan penggunaan framework .NET 4.x. Jika project Unity Anda menggunakan .NET 4.x, impor
Di jendela Import Unity Package, klik Import.
Buat skrip C# baru, lalu tambahkan ke
GameObject
di scene.Buka scene pertama Anda, lalu buat
GameObject
kosong bernamaCrashlyticsInitializer
.Klik Add Component di Inspector untuk objek baru.
Pilih skrip
CrashlyticsInit
Anda untuk menambahkannya ke objekCrashlyticsInitializer
.
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
Ekspor project Anda menggunakan dialog Build Settings Unity.
Setelah ekspor selesai, pastikan bahwa project diekspor dengan benar dengan membandingkan project yang diekspor dan contoh konfigurasi ekspor di bawah.
iOS+
Android
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
Uji implementasi Anda dengan sengaja menimbulkan error pengujian yang akan mengirim laporan error ke dasbor Crashlytics di Firebase console.
Sesuaikan penyiapan laporan error dengan menambahkan pelaporan keikutsertaan, log, kunci, dan pelacakan error non-fatal.
Tambahkan Google Analytics ke aplikasi Anda. Gabungkan keandalan Google Analytics dengan Firebase Crashlytics untuk melihat statistik pengguna bebas error di Firebase console.