Android uygulamanız yerel kitaplıklar içeriyorsa, yerel kodunuz için tam yığın izlemeyi ve ayrıntılı kilitlenme raporlarını etkinleştirebilirsiniz Firebase Crashlytics tarihinden itibaren uygulamanızın derlemesinde birkaç küçük güncelleme yapın yapılandırma.
Bu kılavuzda, NDK için Firebase Crashlytics SDK'sı.
Unity projelerinizi Crashlytics ile kullanmaya nasıl başlayacağınızı öğrenmek istiyorsanız Unity'yi kullanmaya başlama kılavuzuna göz atın.
Başlamadan önce
Henüz yapmadıysanız Android cihazınıza Firebase'i ekleyin. belirler. Android uygulamanız yoksa indirebilirsiniz örnek uygulamaya gidin.
Ö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 yoksa Google Analytics öğesini şuradan etkinleştirebilirsiniz: hesabınızın Entegrasyonlar
> Proje ayarlarıFirebase konsolunda kontrol edebilirsiniz. Yeni bir Firebase projesi oluşturuyorsanız Google Analytics özelliğini etkinleştirin müzakere tekniği de eklediniz.
Uygulamanızın aşağıdaki minimum gerekli sürümlere sahip olduğundan emin olun:
- Gradle 8,0
- Android Gradle eklentisi 8.1.0
- Google hizmetleri Gradle eklentisi 4.4.1
1. Adım: NDK için Crashlytics SDK'sını uygulamanıza ekleyin
Modül (uygulama düzeyinde) Gradle dosyanızda (genellikle<project>/<app-module>/build.gradle.kts
veya
<project>/<app-module>/build.gradle
),
Android için Crashlytics NDK kitaplığına bağımlılığı ekleyin. Şunu kullanmanızı öneririz:
Firebase Android BoM
Kitaplık'ta sürüm oluşturmayı kontrol etmek için
En iyi Crashlytics deneyimi için şunları öneririz: Google Analytics özelliğini etkinleştirme Firebase projenize ekleyin ve uygulamanıza Google Analytics için Firebase SDK'sını ekleyin.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.2.0")) // Add 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 kullanıldığında, Uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanacaktır.
(Alternatif) Firebase kitaplığı bağımlılıklarını kullanmadan BoM
Firebase BoM kullanmamayı seçerseniz her Firebase kitaplığı sürümünü belirtmeniz gerekir değerini alır.
Uygulamanızda birden çok Firebase kitaplığı kullanıyorsanız, kitaplık sürümlerini yönetmek için BoM kullanmanızı öneririz. Bu, tüm sürümlerin uyumlu olduğundan emin olun.
dependencies { // Add 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:19.0.3") implementation("com.google.firebase:firebase-analytics:22.1.0") }
2. Adım: Crashlytics Gradle eklentisini uygulamanıza ekleyin
Kök düzeyindeki (proje düzeyinde) Gradle dosyanızda (
<project>/build.gradle.kts
veya<project>/build.gradle
),plugins
bloğuna Crashlytics Gradle eklentisi:Kotlin
plugins { // Make sure that you have the AGP plugin 8.1+ dependency id("com.android.application") version "8.1.4" apply false // ... // Make sure that you have the Google services Gradle plugin 4.4.1+ dependency id("com.google.gms.google-services") version "4.4.2" apply false // Add the dependency for the Crashlytics Gradle plugin id("com.google.firebase.crashlytics") version "3.0.2" apply false }
Groovy
plugins { // Make sure that you have the AGP plugin 8.1+ dependency id 'com.android.application' version '8.1.4' apply false // ... // Make sure that you have the Google services Gradle plugin 4.4.1+ dependency id 'com.google.gms.google-services' version '4.4.2' apply false // Add the dependency for the Crashlytics Gradle plugin id 'com.google.firebase.crashlytics' version '3.0.2' apply false }
Modülünüz (uygulama düzeyinde) Gradle dosyanızda (genellikle
<project>/<app-module>/build.gradle.kts
veya<project>/<app-module>/build.gradle
), Crashlytics Gradle eklentisini ekleyin:Kotlin
plugins { id("com.android.application") // ... // Make sure that you have the Google services Gradle plugin id("com.google.gms.google-services") // Add the Crashlytics Gradle plugin id("com.google.firebase.crashlytics") }
Groovy
plugins { id 'com.android.application' // ... // Make sure that you have the Google services Gradle plugin id 'com.google.gms.google-services' // Add the Crashlytics Gradle plugin id 'com.google.firebase.crashlytics' }
3. Adım: Crashlytics uzantısını derlemenize ekleyin
Modül (uygulama düzeyi) Gradle dosyanızda (genellikle <project>/<app-module>/build.gradle.kts
veya <project>/<app-module>/build.gradle
) Crashlytics uzantısını yapılandırın.
Kotlin
import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension // ... android { // ... buildTypes { getByName("release") { // Add this extension configure<CrashlyticsExtension> { // 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 } } } }
Groovy
// ... 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 simgelerin otomatik yüklenmesini ayarlayın
NDK kilitlenmelerinden okunabilir yığın izlemeler (stack trace) oluşturmak için Crashlytics öğesinin bilmesi gerekir
yerel ikili programlarınızdaki simgeler hakkında Crashlytics Gradle eklentisi
uploadCrashlyticsSymbolFileBUILD_VARIANT
içerir
görevi otomatikleştirmektir.
Otomatik sembol yükleme görevine erişebilmek için
nativeSymbolUploadEnabled
öğesinin, modülünüzdetrue
olarak ayarlandığını doğrulayın (uygulama düzeyi) Gradle dosyası.Yöntem adlarının yığın izlemelerinizde görünmesi için
uploadCrashlyticsSymbolFileBUILD_VARIANT
görevi tamamlayın. Örneğin:>./gradlew app:assembleBUILD_VARIANT\ app:uploadCrashlyticsSymbolFileBUILD_VARIANT
NDK için Crashlytics SDK'sı ve Crashlytics Gradle eklentisi yerel paylaşılan nesnelerdeki GNU derleme kimliğinin varlığına bağlıdır.
Bu kimliğin varlığını Her ikili program için
. Derleme kimliği yoksa derleme sisteminizin kodunareadelf -n
ekleyin. işareti koyun.-Wl,--build-id
5. Adım: Kurulumu tamamlamak için test kilitlenmesini zorunlu kılın
Crashlytics kurulumunu tamamlamak ve ilk verileri Firebase konsolunun Crashlytics kontrol paneli, testi zorunlu kılmanız gerekiyor olabilir.
Uygulamanıza, test amaçlı kilitlenme yapmak için kullanabileceğiniz kod ekleyin.
Düğme eklemek için uygulamanızın
MainActivity
bölümünde aşağıdaki kodu kullanabilirsiniz uygulamanıza basıldığında kilitlenmeye neden olur. Düğmenin etiketi "Test Kilitlenmesi"dir.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))
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));
Uygulamanızı derleyip çalıştırın.
Uygulamanızın ilk kilitlenme raporunu göndermek için test kilitlenmesini zorunlu kılın:
Uygulamanızı test cihazınızdan veya emülatörden açın.
Uygulamanızda "Kilitlenmeyi Test Et"e basın kodu kullanarak eklediğiniz düğme bölümünü ziyaret edin.
Uygulamanız kilitlendikten sonra, kilitlenme raporunu Firebase'e gönderebilmesi için uygulamanızı yeniden başlatın.
Şu sayfanın Crashlytics kontrol paneline gidin: Firebase konsolunda test kilitlenmenizi görebilirsiniz.
Konsolu yenilediyseniz ve test kilitlenmesini hâlâ görmüyorsanız beş dakika sonra hata ayıklama günlük kaydını etkinleştirme uygulamanızın kilitlenme raporu gönderip göndermediğini kontrol edin.
Hepsi bu kadar. Crashlytics artık uygulamanızı kilitlenmeler açısından izliyor. Kilitlenme raporlarını ve istatistiklerini Crashlytics kontrol panelinde görüntüleyip inceleyebilirsiniz.
Sonraki adımlar
(Önerilir) Yerel bellek hatalarının neden olduğu kilitlenmelerde hata ayıklama konusunda yardım alın: toplama GWP-ASan raporları hakkında daha fazla bilgi edinin. Bellekle ilgili bu hatalar, sistemdeki bellek bozulmasından Bu, uygulama güvenliği açıklarının önde gelen nedenidir. Bu hata ayıklama özelliğinden yararlanmak için uygulamanızın GWP-ASan açıkça etkinleştirildi ve NDK için en güncel Crashlytics SDK'sını (v18.3.6+ veya Firebase BoM sürüm 31.3.0+).
Özelleştir gizlilik raporları, günlükler, anahtarlar ve güvenlik anahtarları ekleyerek kilitlenme raporu izlemesine olanak tanır.
Google Play ile entegre ederek Android uygulamanızın kilitlenme raporlarını Google Play kanalına göre filtreleyebilirsiniz. Crashlytics kontrol paneli. Bu sayede kontrol panelinizde belirli derlemelere daha iyi odaklanabilirsiniz.
Sorun giderme
Firebase konsolunda ve içinde farklı yığın izlemeler (stack trace) görüyorsanız Sorun giderme kılavuzuna bakın.
Simge yüklemeyle ilgili alternatif seçenekler
Yukarıdaki bu sayfada yer alan ana iş akışı, standart Gradle derlemeleri için geçerlidir. Ancak bazı uygulamalar farklı bir yapılandırma veya araç (örneğin, başka bir işlem) ekleyebilirsiniz. Bu durumlarda, sembolleri başarıyla yüklemek için aşağıdaki seçeneklerden yararlanabilirsiniz.
Seçenek: Kitaplık modülleri ve harici bağımlılıklar için sembol yükleme
Bu seçenek aşağıdaki durumlarda faydalı olabilir:
- Gradle'de özelleştirilmiş bir NDK derleme süreci kullanıyorsanız
- Yerel kitaplıklarınız bir kitaplık/özellik modülünde yerleşik olarak bulunuyorsa veya üçüncü taraf
- Otomatik sembol yükleme görevi başarısız oluyorsa veya kontrol panelinde sembolü olmayan kilitlenmeler görüyorsanız
Seçenek: Gradle olmayan derlemeler veya erişilemeyen sade yerel kitaplıklar için semboller yükleyin
Bu seçenek aşağıdaki durumlarda faydalı olabilir:
Gradle dışında bir derleme işlemi kullanıyorsanız
Sadeleştirilmiş yerel kitaplıklarınız size Gradle derlemeleri sırasında bunlara erişilemiyor