Android uygulamanız yerel kitaplıklar içeriyorsa, uygulamanızın derleme yapılandırmasında birkaç küçük güncellemeyle Firebase Crashlytics'ten yerel kodunuz için tam yığın izlemelerini ve ayrıntılı kilitlenme raporlarını etkinleştirebilirsiniz.
Bu kılavuz, NDK için Firebase Crashlytics SDK ile kilitlenme raporlamasının nasıl yapılandırılacağını açıklar.
Unity projelerinizde Crashlytics'e nasıl başlayacağınızı arıyorsanız, Unity Başlangıç kılavuzuna bakın.
Sen başlamadan önce
Henüz yapmadıysanız, Android projenize Firebase'i ekleyin . Android uygulamanız yoksa örnek bir uygulama indirebilirsiniz.
Önerilen : Kilitlenmeyen kullanıcılar, içerik haritası günlükleri ve hız uyarıları gibi özellikler elde etmek için Firebase projenizde Google Analytics'i etkinleştirmeniz gerekir.
Mevcut Firebase projenizde Google Analytics etkin değilse, Google Analytics'i Firebase konsolundaki Entegrasyonlar sekmesinden etkinleştirebilirsiniz.
> Proje ayarları'nınYeni bir Firebase projesi oluşturuyorsanız, proje oluşturma iş akışı sırasında Google Analytics'i etkinleştirin.
1. Adım : NDK için Firebase Crashlytics SDK'yı uygulamanıza ekleyin
Firebase Android BoM kullanarak, modülünüzdeki (uygulama düzeyi) Gradle dosyanızdaki (genellikleapp/build.gradle
) Crashlytics NDK Android kitaplığının bağımlılığını bildirin.Crashlytics ile optimum deneyim için Firebase projenizde Google Analytics'i etkinleştirmenizi ve Google Analytics için Firebase SDK'sını uygulamanıza eklemenizi öneririz.
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.0.1') // Declare the dependencies for the Crashlytics NDK and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-crashlytics-ndk' implementation 'com.google.firebase:firebase-analytics' }
Firebase Android BoM'u kullanarak uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.
(Alternatif) BoM kullanmadan Firebase kitaplık bağımlılıklarını bildirin
Firebase Malzeme Listesini kullanmamayı seçerseniz, her bir Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.
Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM'yi kullanmanızı şiddetle tavsiye ettiğimizi unutmayın; bu, tüm sürümlerin uyumlu olmasını sağlar.
dependencies { // Declare the dependencies for the Crashlytics NDK and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-crashlytics-ndk:18.2.10' implementation 'com.google.firebase:firebase-analytics:21.0.0' }
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.0.1') // Declare the dependencies for the Crashlytics NDK and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-crashlytics-ndk' implementation 'com.google.firebase:firebase-analytics-ktx' }
Firebase Android BoM'u kullanarak uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.
(Alternatif) BoM kullanmadan Firebase kitaplık bağımlılıklarını bildirin
Firebase Malzeme Listesini kullanmamayı seçerseniz, her bir Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.
Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM'yi kullanmanızı şiddetle tavsiye ettiğimizi unutmayın; bu, tüm sürümlerin uyumlu olmasını sağlar.
dependencies { // Declare the dependencies for the Crashlytics NDK and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-crashlytics-ndk:18.2.10' implementation 'com.google.firebase:firebase-analytics-ktx:21.0.0' }
2. Adım : Firebase Crashlytics eklentisini uygulamanıza ekleyin
Proje düzeyindeki
build.gradle
dosyanızda, Crashlytics Gradle eklentisini bir buildscript bağımlılığı olarak ekleyin.buildscript { repositories { // Check that you have Google's Maven repository (if not, add it). google() } dependencies { // ... // Check that you have the Google services Gradle plugin v4.3.2 or later // (if not, add it). classpath 'com.google.gms:google-services:4.3.10' // Add the Crashlytics Gradle plugin classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1' } } allprojects { repositories { // Check that you have Google's Maven repository (if not, add it). google() } }
Uygulama düzeyindeki
build.gradle
dosyanızda Crashlytics Gradle eklentisini uygulayın:apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' // Google services Gradle plugin // Apply the Crashlytics Gradle plugin apply plugin: 'com.google.firebase.crashlytics'
3. Adım : firebaseCrashlytics
uzantısını yapınıza ekleyin
Modülünüzde (uygulama düzeyinde) Gradle dosyanızda (genellikle app/build.gradle
), firebaseCrashlytics
uzantısını ekleyin.
Java
// ... android { // ... buildTypes { release { // Add this extension firebaseCrashlytics { // Enable processing and uploading of native symbols to Firebase servers. // By default, this is disabled to improve build speeds. // This flag must be enabled to see properly-symbolicated native // stack traces in the Crashlytics dashboard. nativeSymbolUploadEnabled true } } } }
Kotlin+KTX
// ... android { // ... buildTypes { release { // Add this extension firebaseCrashlytics { // Enable processing and uploading of native symbols to Firebase servers. // By default, this is disabled to improve build speeds. // This flag must be enabled to see properly-symbolicated native // stack traces in the Crashlytics dashboard. nativeSymbolUploadEnabled true } } } }
4. Adım : Yerel sembollerin otomatik olarak yüklenmesini ayarlayın
NDK çökmelerinden okunabilir yığın izleri oluşturmak için Crashlytics'in yerel ikili dosyalarınızdaki semboller hakkında bilgi sahibi olması gerekir. Crashlytics Gradle eklentisi, bu işlemi otomatikleştirmek için uploadCrashlyticsSymbolFile BUILD_VARIANT
görevini içerir.
Otomatik sembol yükleme görevine erişebilmeniz için, modül (uygulama düzeyi) Gradle dosyanızda
nativeSymbolUploadEnabled
öğesinintrue
olarak ayarlandığından emin olun.Yığın izlemelerinizde yöntem adlarının görünmesi için, NDK kitaplığınızın her derlemesinden sonra
uploadCrashlyticsSymbolFile BUILD_VARIANT
görevini açıkça çağırmanız gerekir. Örneğin:>./gradlew app:assembleBUILD_VARIANT\ app:uploadCrashlyticsSymbolFileBUILD_VARIANT
Hem NDK için Crashlytics SDK hem de Crashlytics Gradle eklentisi, yerel paylaşılan nesneler içinde GNU yapı kimliğinin varlığına bağlıdır.
Her ikili
readelf -n
çalıştırarak bu kimliğin varlığını doğrulayabilirsiniz. Yapı kimliği yoksa, sorunu çözmek için yapı sisteminizin bayraklarına-Wl,--build-id
ekleyin.
Adım 5 : Kurulumu tamamlamak için bir test çökmesini zorlayın
Crashlytics kurulumunu tamamlamak ve Firebase konsolunun Crashlytics panosunda ilk verileri görmek için bir test çökmesini zorlamanız gerekir.
Uygulamanıza, bir test çökmesini zorlamak için kullanabileceğiniz bir kod ekleyin.
Uygulamanıza basıldığında çökmeye neden olan bir düğme eklemek için uygulamanızın
MainActivity
aşağıdaki kodu kullanabilirsiniz. Düğme "Çökme Testi" olarak etiketlenmiştir.Java
Button crashButton = new Button(this); crashButton.setText("Test Crash"); crashButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { throw new RuntimeException("Test Crash"); // Force a crash } }); addContentView(crashButton, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
Kotlin+KTX
val crashButton = Button(this) crashButton.text = "Test Crash" crashButton.setOnClickListener { throw RuntimeException("Test Crash") // Force a crash } addContentView(crashButton, ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT))
Uygulamanızı oluşturun ve çalıştırın.
Uygulamanızın ilk kilitlenme raporunu göndermek için test kilitlenmesini zorlayın:
Uygulamanızı test cihazınızdan veya öykünücünüzden açın.
Uygulamanızda, yukarıdaki kodu kullanarak eklediğiniz "Test Crash" düğmesine basın.
Uygulamanız kilitlendikten sonra, uygulamanızın kilitlenme raporunu Firebase'e gönderebilmesi için yeniden başlatın.
Test çökmenizi görmek için Firebase konsolunun Crashlytics panosuna gidin.
Konsolu yenilediyseniz ve beş dakika sonra test çökmesini 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üğünü etkinleştirin .
Ve bu kadar! Crashlytics artık uygulamanızı çökmelere karşı izliyor ve Crashlytics panosunda kilitlenme raporlarını ve istatistikleri görüntüleyebilir ve inceleyebilirsiniz.
Sembolleri yüklemek için alternatif seçenekler
Yukarıdaki bu sayfadaki ana iş akışı, standart Gradle derlemeleri için geçerlidir. Ancak, bazı uygulamalar farklı bir yapılandırma veya araç kullanır (örneğin, Gradle dışında bir oluşturma işlemi). Bu durumlarda, sembolleri başarıyla yüklemek için aşağıdaki seçenekler yardımcı olabilir.
Seçenek : Kütüphane modülleri ve harici bağımlılıklar için semboller yükleyin
Bu seçenek aşağıdaki durumlarda yardımcı olabilir:
- Gradle içinde özelleştirilmiş bir NDK oluşturma işlemi kullanıyorsanız
- Yerel kitaplıklarınız bir kitaplık/özellik modülünde yerleşikse veya bir üçüncü tarafça sağlandıysa
- Otomatik sembol yükleme görevi başarısız oluyorsa veya gösterge tablosunda sembolik olmayan kilitlenmeler görüyorsanız
Standart Crashlytics sembol yükleme görevi, CMake gibi standart NDK oluşturma araçlarını kullanarak uygulama modülünüzün Gradle derlemesinin bir parçası olarak yerel kitaplıklarınızı oluşturduğunuzu varsayar.
Ancak, Gradle içinde özelleştirilmiş bir NDK oluşturma işlemi kullanıyorsanız veya yerel kitaplıklarınız bir kitaplık/özellik modülünde yerleşikse veya bir üçüncü tarafça sağlanıyorsa, ayrıştırılmamış kitaplıklarınızın yolunu açıkça belirtmeniz gerekebilir. Bunu başarmak için, build.gradle
dosyanızdaki firebaseCrashlytics
uzantısına unstrippedNativeLibsDir
özelliğini ekleyebilirsiniz.
Bu sayfada daha önce yer alan ana iş akışında yer alan aşağıdaki başlangıç görevlerini tamamladığınızdan emin olun:
Otomatik sembol yükleme görevinin sembol bilgilerinizi bulabilmesi için modül (uygulama düzeyinde)
build.gradle
dosyanıza aşağıdakileri ekleyin:// ... android { // ... buildTypes { release { firebaseCrashlytics { nativeSymbolUploadEnabled true unstrippedNativeLibsDir file("PATH/TO/UNSTRIPPED/DIRECTORY") } } } }
Crashlytics eklentisi,
.so
uzantılı yerel kitaplıklar için belirtilen dizini yinelemeli olarak arayacaktır. Crashlytics daha sonra tüm bu tür kitaplıklardan hata ayıklama sembollerini çıkarır ve bunları Firebase sunucularına yükler.unstrippedNativeLibsDir
özelliğinde şunları belirtebilirsiniz:java.lang.String
,java.io.File
veyaorg.gradle.api.file.FileCollection
dahil olmak üzereorg.gradle.api.Project#files(Object...)
için izin verilen herhangi bir bağımsız değişkenBir liste veya
FileCollection
örneği sağlayarak tek bir yapı türü için birden çok dizin
Son olarak, Crashlytics kurulumunu tamamlamak ve Firebase konsolunun Crashlytics panosunda ilk verileri görmek için bir test çökmesini zorlayın.
Seçenek : Gradle olmayan yapılar veya erişilemeyen açıklanmamış yerel kitaplıklar için semboller yükleyin
Bu seçenek aşağıdaki durumlarda yardımcı olabilir:
Gradle dışında bir derleme işlemi kullanıyorsanız
Soyulmamış yerel kitaplıklarınız size Gradle derlemeleri sırasında erişilemeyecek şekilde sağlanırsa
Bu seçenek, Firebase konsolunda sembolik yığın izlerini görmek istediğiniz bir yayın derlemesi veya herhangi bir derleme oluşturduğunuzda bir Firebase CLI komutu çalıştırmanızı gerektirir.
Bu sayfada daha önce yer alan ana iş akışında yer alan aşağıdaki başlangıç görevlerini tamamladığınızdan emin olun:
Bu seçenekle, sembol dosyalarınızı oluşturmak ve yüklemek için Firebase CLI'yi (aşağıdaki adımlar) kullanacağınız için,
firebaseCrashlytics
uzantısını eklemeniz veya otomatik sembol yüklemeyi ayarlamanız gerekmediğini unutmayın.Sembol yükleme için ortamınızı ve projenizi ayarlayın:
Firebase CLI'yi yüklemek için talimatları izleyin.
CLI'yi zaten yüklediyseniz, en son sürümüne güncellediğinizden emin olun.
(yalnızca Android API düzeyi 30+ kullanan uygulamalar için) İşaretçi Etiketlemeyi devre dışı bırakmak için uygulamanızın
AndroidManifest.xml
şablonunu güncelleyin:Android Oynatıcı Ayarları > Yayınlama Ayarları > Oluştur > Özel Ana Manifest kutusunu işaretleyin.
Assets/Plugins/Android/AndroidManifest.xml
bulunan bildirim şablonunu açın.Uygulama etiketine şu özniteliği ekleyin:
<application android:allowNativeHeapPointerTagging="false" ... />
Projenizi oluşturun.
Sembol bilgilerinizi yükleyin.
Derlemeniz bittiğinde, Crashlytics uyumlu bir sembol dosyası oluşturun ve aşağıdaki Firebase CLI komutunu çalıştırarak bunu 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)
Örnek Firebase Android Uygulama Kimliği:1:567383003300:android:17104a2ced0c9b9b
Firebase Uygulama Kimliğinizi bulmanın iki yolu:
google-services.json
dosyanızda, Uygulama Kimliğinizmobilesdk_app_id
değeridir; veyaFirebase konsolunda Proje ayarlarınıza gidin. Uygulamalarınız kartına ilerleyin, ardından Uygulama Kimliğini bulmak için istediğiniz Firebase Uygulamasına tıklayın.
PATH/TO/SYMBOLS : CLI tarafından oluşturulan sembol dosyasının yolu
Bir Android Studio projesine aktarıldı — PATH/TO/SYMBOLS herhangi bir dizin olabilir. Firebase CLI,
.so
uzantılı yerel kitaplıklar için belirtilen dizini yinelemeli olarak arayacaktır.APK'yı doğrudan Unity içinden oluşturun - PATH/TO/SYMBOLS , derlemeniz bittiğinde proje kök dizininde oluşturulan sıkıştırılmış sembol 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 kullanmak için gelişmiş seçenekleri görüntüleyin
bayrak Tanım --generator=csym
Varsayılan Breakpad oluşturucu yerine eski cSYM simge dosyası oluşturucusunu kullanır
Kullanım için tavsiye edilmez. Varsayılan Breakpad sembol dosyası oluşturucusunu kullanmanızı öneririz.
--generator=breakpad
Breakpad sembol dosyası oluşturucusunu kullanır
Sembol dosyası oluşturma için varsayılanın Breakpad olduğunu unutmayın. Bu bayrağı yalnızca yapı yapılandırmanıza
symbolGenerator { csym() }
ve bunun yerine Breakpad'i kullanmak için geçersiz kılmak istiyorsanız kullanın.--dry-run
Sembol dosyalarını oluşturur ancak yüklemez
Bu bayrak, gönderilen dosyaların içeriğini incelemek istiyorsanız kullanışlıdır.
--debug
Ek hata ayıklama bilgileri sağlar Son olarak, Crashlytics kurulumunu tamamlamak ve Firebase konsolunun Crashlytics panosunda ilk verileri görmek için bir test çökmesini zorlayın.
Uygulamanızı çökmeye zorlamanın bir parçası olarak oluşturduktan sonra, sembol dosyanızı yüklemek için Firebase CLI
crashlytics:symbols:upload
komutunu çalıştırdığınızdan emin olun.
Sorun giderme
Firebase konsolunda ve logcat'te farklı yığın izleri görüyorsanız, Sorun Giderme kılavuzuna bakın.
Sonraki adımlar
Kaydolma raporu, günlükler, anahtarlar ve önemli olmayan hataların izlenmesini ekleyerek kilitlenme raporu kurulumunuzu özelleştirin .
Android uygulamanızın kilitlenme raporlarını doğrudan Crashlytics panosunda Google Play parçasına göre filtreleyebilmek için Google Play ile entegre edin . Bu, gösterge tablonuzu belirli yapılara daha iyi odaklamanıza olanak tanır.