Bu hızlı başlangıç kılavuzunda, Firebase konsolunda kapsamlı kilitlenme raporları alabilmek için uygulamanızda Firebase Crashlytics SDK'sı ile Firebase Crashlytics'ü nasıl ayarlayacağınız açıklanmaktadır.
Crashlytics kurulumu için hem Firebase konsolunda hem de IDE'nizde görevler (Firebase yapılandırma dosyası ve Crashlytics SDK ekleme gibi) gerekir. Kurulumu tamamlamak için ilk kilitlenme raporunuzu Firebase'e göndermek üzere test kilitlenmesini zorlamanız gerekir.
Başlamadan önce
Henüz yapmadıysanız Unity projenize Firebase'i ekleyin. Unity projeniz yoksa örnek uygulama indirebilirsiniz.
Önerilir: Kilitlenme, ölümcül olmayan veya ANR etkinliğine yol açan kullanıcı işlemlerini anlamak için ekmek kırıntıları günlüklerini otomatik olarak almak istiyorsanız Firebase projenizde Google Analytics'i etkinleştirmeniz gerekir.
Mevcut Firebase projenizde Google Analytics etkin değilse Firebase konsolunda
bölümündeki > Proje ayarlarıEntegrasyonlar sekmesinden Google Analytics'ü etkinleştirebilirsiniz. Yeni bir Firebase projesi oluşturuyorsanız proje oluşturma iş akışı sırasında Google Analytics politikasını etkinleştirin.
1. Adım: Crashlytics SDK'sını uygulamanıza ekleyin
Unity projenizi Firebase projenize kaydettiğinizde Firebase Unity SDK'sını indirmiş ve aşağıdaki adımlarda açıklanan paketleri eklemiş olabilirsiniz.
Firebase Unity SDK'sını indirin, ardından SDK'yı uygun bir konumda arşivden çıkarın. Firebase Unity SDK'sı platforma özgü değildir.
Açık Unity projenizde Assets > Paketi İçe Aktar > Özel Paket'e gidin.
Arşivden çıkarılan SDK'dan Crashlytics SDK'sını (
FirebaseCrashlytics.unitypackage
) içe aktarmak için seçim yapın.Breadcrumb günlüklerinden yararlanmak için uygulamanıza Google Analytics için Firebase SDK'sını da ekleyin (
FirebaseAnalytics.unitypackage
). Firebase projenizde Google Analytics'in etkinleştirildiğinden emin olun.Unity Paketini İçe Aktar penceresinde İçe Aktar'ı tıklayın.
2. adım: Crashlytics değişkenini başlatın
Yeni bir C# komut dosyası oluşturun ve ardından sahnedeki bir
GameObject
öğesine ekleyin.İlk sahnenizi açın, ardından
CrashlyticsInitializer
adlı boş birGameObject
oluşturun.Yeni nesnenin İnceleyici'de Bileşen Ekle'yi tıklayın.
CrashlyticsInit
komut dosyanızı seçerekCrashlyticsInitializer
nesnesine ekleyin.
Komut dosyasının
Start
yönteminde Crashlytics değişkenini başlatın: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() // ... }
3. Adım: (Yalnızca Android) Simge yükleme için hazırlık yapın
Bu adım yalnızca IL2CPP kullanan Android uygulamaları için gereklidir.
Unity'nin Mono komut dosyası arka ucunu kullanan Android uygulamaları için bu adımlara gerek yoktur.
Firebase Unity Editor eklentisi, Xcode projenizi sembol yükleyecek şekilde otomatik olarak yapılandırdığı için Apple platform uygulamaları için bu adımlara gerek yoktur.
Crashlytics ürününün Unity SDK 8.6.1 ve sonraki sürümleri, NDK kilitlenme raporunu otomatik olarak içerir. Bu sayede Crashlytics, Android'de Unity IL2CPP kilitlenmelerini otomatik olarak bildirebilir. Ancak, Crashlytics kontrol panelinde yerel kitaplık kilitlenmelerinin sembolize edilmiş yığın izlemelerini görmek için Firebase CLI'yi kullanarak derleme sırasında sembol bilgilerini yüklemeniz gerekir.
Simge yükleme için gerekli ayarları yapmak üzere Firebase KSA'yı yükleme talimatlarını uygulayın.
CLI'yi daha önce yüklediyseniz en son sürüme güncellediğinizden emin olun.
4. Adım: Projenizi oluşturun ve simgeleri yükleyin
iOS+ (Apple platformu)
Derleme Ayarları iletişim kutusunda projenizi bir Xcode çalışma alanına aktarın.
Uygulamanızı oluşturun.
Apple platformları için Firebase Unity Düzenleyici eklentisi, Xcode projenizi her derlemede Crashlytics uyumlu bir simge dosyası oluşturup Firebase sunucularına yükleyecek şekilde otomatik olarak yapılandırır.
Android
Derleme Ayarları iletişim kutusunda aşağıdakilerden birini yapın:
Projenizi derlemek için bir Android Studio projesine aktarın veya
APK'nızı doğrudan Unity Düzenleyici'den oluşturun.
Derlemeden önce Derleme Ayarları iletişim kutusunda symbols.zip dosyasını oluştur onay kutusunun işaretlendiğinden emin olun.
Derlemeniz tamamlandıktan sonra Crashlytics uyumlu bir simge dosyası oluşturun ve aşağıdaki Firebase CLI komutunu çalıştırarak Firebase sunucularına yükleyin:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
FIREBASE_APP_ID: Firebase Android uygulama kimliğiniz (paket adınız değil)
Firebase Android uygulama kimliği örneği:1:567383003300:android:17104a2ced0c9b9b
PATH/TO/SYMBOLS: KSA tarafından oluşturulan simge dosyasının yolu
Bir Android Studio projesine aktarılır: PATH/TO/SYMBOLS, Gradle veya Android Studio aracılığıyla uygulamayı derledikten sonra aktarılan proje kökünde oluşturulan
unityLibrary/symbols
dizinidir.APK doğrudan Unity'den derlendi. PATH/TO/SYMBOLS, derlemeniz tamamlandığında proje kök dizininde oluşturulan sıkıştırılmış simge dosyasının yoludur (ör.
).myproject/myapp-1.0-v100.symbols.zip
Simge dosyası oluşturma ve yükleme için Firebase CLI komutunu kullanmayla ilgili gelişmiş seçenekleri görüntüleme
İşaret Açıklama --generator=csym
Varsayılan Breakpad oluşturucu yerine eski cSYM simge dosyası oluşturucuyu kullanır
Kullanılması önerilmez. Varsayılan Breakpad simge dosyası oluşturucuyu kullanmanızı öneririz.
--generator=breakpad
Breakpad sembol dosyası oluşturucuyu kullanır
Simge dosyası oluşturma işleminin varsayılan olarak Breakpad olduğunu unutmayın. Bu işareti yalnızca derleme yapılandırmanıza
eklediyseniz ve bunun yerine Breakpad kullanmak için geçersiz kılmak istiyorsanız kullanın.symbolGenerator { csym() }
--dry-run
Simge dosyalarını oluşturur ancak yüklemez
Bu işaret, gönderilen dosyaların içeriğini incelemek isterseniz kullanışlıdır.
--debug
Ek hata ayıklama bilgileri sağlar
5. adım: Kurulumu tamamlamak için test kilitlenmesini zorlama
Crashlytics kurulumunu tamamlamak ve Firebase konsolunun Crashlytics kontrol panelinde ilk verileri görmek için test kilitlenmesini zorunlu kılmanız gerekiyor.
Mevcut bir
GameObject
bulun ve ardından buGameObject
'ye aşağıdaki komut dosyasını ekleyin. Bu komut dosyası, uygulamanızı çalıştırdıktan birkaç saniye sonra testin kilitlenmesine neden olur.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"); } } }
Derlemeniz tamamlandıktan sonra uygulamanızı derleyin ve simge bilgilerini yükleyin.
iOS ve sonraki sürümler: Firebase Unity Editor eklentisi, Xcode projenizi sembol dosyanızı yükleyecek şekilde otomatik olarak yapılandırır.
Android: IL2CPP kullanan Android uygulamalarınız için simge dosyanızı yüklemek üzere Firebase CLI
crashlytics:symbols:upload
komutunu çalıştırın.
Uygulamanızı çalıştırın. Uygulamanız çalışmaya başladıktan sonra cihaz günlüğünü izleyin ve istisnanın
CrashlyticsTester
tarafından tetiklenmesini bekleyin.iOS ve sonraki sürümler: Günlükleri Xcode'un alt bölmesinde görüntüleyin.
Android: Terminalde aşağıdaki komutu çalıştırarak günlükleri görüntüleyin:
adb logcat
.
Test kilitlenmenizi görmek için Firebase konsolunun Crashlytics kontrol paneline gidin.
Konsolu yenilediyseniz ve beş dakika geçmesine rağmen test kilitlenmesini hâlâ görmüyorsanız uygulamanızın kilitlenme raporları gönderip göndermediğini görmek için hata ayıklama günlük kaydını etkinleştirin.
Hepsi bu kadar! Crashlytics, uygulamanızı kilitlenmeler açısından izliyor. Tüm rapor ve istatistiklerinizi görüntülemek ve incelemek için Crashlytics kontrol panelini ziyaret edin.
Sonraki adımlar
- (Önerilen) IL2CPP kullanan Android uygulamaları için GWP-ASan raporlarını toplayarak yerel bellek hatalarından kaynaklanan kilitlenmelerde hata ayıklama konusunda yardım alın. Bellekle ilgili bu hatalar, uygulamanızdaki bellek bozulmasıyla ilişkilendirilebilir. Bu durum, uygulama güvenlik açıklarının başlıca nedenidir. Bu hata ayıklama özelliğinden yararlanmak için uygulamanızın Unity için en yeni Crashlytics SDK'sını (v10.7.0+) kullandığından ve GWP-ASan'ın açıkça etkinleştirildiğinden emin olun (Android uygulama manifestinizi değiştirmeniz gerekir).
- Etkinleştirme raporları, günlükler, anahtarlar ve önemli olmayan hataların izlenmesini ekleyerek kilitlenme raporu ayarlarınızı özelleştirin.
- Android uygulamanızın kilitlenme raporlarını doğrudan Crashlytics kontrol panelinde Google Play kanalına göre filtreleyebilmek için Google Play ile entegrasyon yapın. Bu sayede kontrol panelinizi belirli derlemelere daha iyi odaklayabilirsiniz.