Bu hızlı başlangıç kılavuzunda, Firebase konsolunda kapsamlı kilitlenme raporları alabilmeniz için Firebase Crashlytics SDK ile uygulamanızda Firebase Crashlytics'i nasıl kuracağınız açıklanmaktadır.
Crashlytics'in kurulumu, hem Firebase konsolunda hem de IDE'nizde görevler (Firebase yapılandırma dosyası ve Crashlytics SDK ekleme gibi) gerektirir. Kurulumu tamamlamak için ilk kilitlenme raporunuzu Firebase'e göndermesi için bir test kilitlenmesini zorunlu kılmanız gerekir.
Başlamadan önce
Henüz yapmadıysanız Unity projenize Firebase'i ekleyin. Unity projeniz yoksa örnek bir uygulama indirebilirsiniz.
Önerilen: Kilitlenme, önemli olmayan veya ANR etkinliğiyle sonuçlanan kullanıcı işlemlerini anlamak için içerik haritası günlüklerini otomatik olarak almak için Firebase projenizde Google Analytics'i etkinleştirmeniz gerekir.
Mevcut Firebase projenizde Google Analytics etkin değilse Firebase konsolunda
'nın > Proje ayarlarıEntegrasyonlar sekmesinden Google Analytics'i etkinleştirebilirsiniz. Yeni bir Firebase projesi oluşturuyorsanız proje oluşturma iş akışı sırasında Google Analytics'i etkinleştirin.
1. Adım: Crashlytics SDK'yı uygulamanıza ekleyin
Unity projenizi Firebase projenize kaydettiğinizde Firebase Unity SDK'yı zaten indirmiş ve aşağıdaki adımlarda açıklanan paketleri eklemiş olabilirsiniz.
Firebase Unity SDK'yı indirin, ardından SDK'yı uygun bir yerde açın. Firebase Unity SDK platforma özgü değildir.
Açık Unity projenizde Assets > Paketi İçe Aktar > Özel Paket'e gidin.
Sıkıştırılmamış SDK'dan Crashlytics SDK'yı (
FirebaseCrashlytics.unitypackage
) içe aktarmak için seçim yapın.İçerik haritası günlüklerinden yararlanmak isterseniz uygulamanıza (
FirebaseAnalytics.unitypackage
) Google Analytics için Firebase SDK'sını da ekleyin. Firebase projenizde Google Analytics'in etkinleştirildiğinden emin olun.Unity Paketini İçe Aktar penceresinde İçe Aktar'ı tıklayın.
2. Adım: Crashlytics'i başlatın
Yeni bir C# komut dosyası oluşturun, ardından bunu 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.
CrashlyticsInitializer
nesnesine eklemek içinCrashlyticsInit
komut dosyanızı seçin.
Crashlytics'i komut dosyasının
Start
yönteminde 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) Sembol yükleme için gerekli ayarları yapın
Bu adım yalnızca IL2CPP kullanan Android uygulamaları için gereklidir.
Unity'nin Mono kodlama arka ucunu kullanan Android uygulamaları için bu adımlar gerekli değildir.
Firebase Unity Editor eklentisi Xcode projenizi otomatik olarak simge yükleyecek şekilde yapılandırdığından, Apple platform uygulamaları için bu adımlar gerekli değildir.
Crashlytics'in Unity SDK 8.6.1 ve sonraki sürümleri otomatik olarak NDK kilitlenme raporunu içerir. Bu sayede Crashlytics, Android'deki Unity IL2CPP kilitlenmelerini otomatik olarak bildirebilir. Ancak Crashlytics kontrol panelinde, yerel kitaplık kilitlenmeleriyle ilgili simgesel yığın izlemeleri (stack trace) görmek için derleme sırasında Firebase CLI'ı kullanarak simge bilgilerini yüklemeniz gerekir.
Sembol yüklemeyi ayarlamak için Firebase CLI'ı yükleme talimatlarını uygulayın.
KSA'yı zaten yüklediyseniz en son sürümüne güncellediğinizden emin olun.
4. Adım: Projenizi oluşturun ve semboller yükleyin
iOS+ (Apple platformu)
Build Settings (Ayarları Derleme) iletişim kutusundan projenizi Xcode çalışma alanına aktarın.
Uygulamanızı oluşturun.
Apple platformları için Firebase Unity Editor eklentisi, Xcode projenizi her derleme için Crashlytics ile uyumlu sembol 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 Editor'dan oluşturun.
Derlemeden önce, Build Settings (Derleme Ayarları) iletişim kutusunda Create simgeleri.zip onay kutusunun işaretli olduğundan emin olun.
Derlemeniz tamamlandıktan sonra Crashlytics ile uyumlu sembol dosyası oluşturun ve aşağıdaki Firebase CLI komutunu çalıştırarak bu dosyayı Firebase sunucularına yükleyin:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
FIREBASE_APP_ID: Firebase Android uygulaması kimliğiniz (paket adınız değil)
Örnek Firebase Android uygulaması kimliğ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 dışa aktarılan proje kökünde oluşturulan
unityLibrary/symbols
dizinidir.APK'yı doğrudan Unity içinden derleyin. PATH/TO/SYMBOLS, derlemeniz tamamlandığında proje kök dizininde oluşturulan sıkıştırılmış simge dosyasının yoludur (örneğin:
).myproject/myapp-1.0-v100.symbols.zip
Sembol dosyası oluşturma ve yükleme için Firebase CLI komutunu kullanma ile ilgili gelişmiş seçenekleri görüntüleyin
İşaretleme Açıklama --generator=csym
Varsayılan Breakpad oluşturucu yerine eski cSYM simge dosyası oluşturma aracını kullanır
Kullanılması önerilmez. Varsayılan Breakpad simge dosyası oluşturma aracını kullanmanızı öneririz.
--generator=breakpad
Breakpad simge dosyası oluşturma aracını kullanır.
Sembol dosyası oluşturmak için varsayılan olarak Breakpad'in kullanıldığını unutmayın. Bu işareti yalnızca derleme yapılandırmanıza
eklediyseniz ve Breakpad'i kullanmak için geçersiz kılmak istiyorsanız kullanın.symbolGenerator { csym() }
--dry-run
Sembol dosyalarını oluşturur ancak yüklemez
Gönderilen dosyaların içeriğini incelemek istiyorsanız bu işaret yararlıdır.
--debug
Ek hata ayıklama bilgileri sağlar
5. Adım: Kurulumu tamamlamak için test kilitlenmesini zorunlu kılın
Crashlytics'in kurulumunu tamamlamak ve Firebase konsolunun Crashlytics kontrol panelinde ilk verileri görmek için test kilitlenmesini zorunlu kılmanız gerekir.
Mevcut bir
GameObject
bulun ve ardından aşağıdaki komut dosyasını buna 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+: Firebase Unity Editor eklentisi, Xcode projenizi simge dosyanızı yükleyecek şekilde otomatik olarak yapılandırır.
Android: IL2CPP kullanan Android uygulamalarınızda simge dosyanızı yüklemek için 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+: Günlükleri, Xcode'un alt bölmesinde görüntüleyebilirsiniz.
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 şu anda uygulamanızda kilitlenme olup olmadığını izliyor. Tüm raporlarınızı ve istatistiklerinizi görüntüleyip incelemek için Crashlytics kontrol panelini ziyaret edin.
Sonraki adımlar
- (Önerilir) IL2CPP kullanan Android uygulamaları için GWP-ASan raporlarını toplayarak yerel bellek hatalarının neden olduğu kilitlenmeleri ayıklama konusunda yardım alın. Bellekle ilgili bu hatalar, uygulamanızdaki bellek bozulmasıyla ilişkilendirilebilir. Bu durum, uygulama güvenliği açıklarının önde gelen nedenidir. Bu hata ayıklama özelliğinden yararlanmak isterseniz uygulamanızın Unity için en yeni Crashlytics SDK'yı (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.
- Google Play ile entegre ederek Android uygulamanızın kilitlenme raporlarını doğrudan Crashlytics kontrol panelinde Google Play kanalına göre filtreleyebilirsiniz. Bu sayede kontrol panelinizde belirli derlemelere daha iyi odaklanabilirsiniz.