Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Android NDK kilitlenme raporlarını alın

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

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şlarken kılavuzuna bakın.

Sen başlamadan önce

  1. Henüz yapmadıysanız, Android projenize Firebase'i ekleyin . Android uygulamanız yoksa örnek bir uygulama indirebilirsiniz.

  2. Ö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 > Proje ayarları'nın Entegrasyonlar sekmesinden 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 : NDK için Crashlytics SDK'sını uygulamanıza ekleyin

Modülünüzde (uygulama düzeyinde) Gradle dosyanızda (genellikle <project>/<app-module>/build.gradle ), Crashlytics NDK Android kitaplığı için bağımlılığı ekleyin. Kitaplık sürümü oluşturmayı kontrol etmek için Firebase Android BoM'yi kullanmanızı öneririz.

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:31.1.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'yi 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ı ekleyin

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 {
    // 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:18.3.2'
    implementation 'com.google.firebase:firebase-analytics:21.2.0'
}

Kotlin+KTX

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:31.1.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-ktx'
}

Firebase Android BoM'yi 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ı ekleyin

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 {
    // 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:18.3.2'
    implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
}

2. Adım : Crashlytics Gradle eklentisini uygulamanıza ekleyin

  1. Kök düzeyinde (proje düzeyinde) Gradle dosyanızda ( <project>/build.gradle ), Crashlytics Gradle eklentisini bir buildscript bağımlılığı olarak ekleyin:

    buildscript {
        repositories {
          // Make sure that you have the following two repositories
          google()  // Google's Maven repository
          mavenCentral()  // Maven Central repository
        }
    
        dependencies {
            ...
            classpath 'com.android.tools.build:gradle:7.2.0'
    
            // Make sure that you have the Google services Gradle plugin dependency
            classpath 'com.google.gms:google-services:4.3.14'
    
            // Add the dependency for the Crashlytics Gradle plugin
            classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
        }
    }
  2. Modülünüzde (uygulama düzeyinde) Gradle dosyanızda (genellikle <project>/<app-module>/build.gradle ), Crashlytics Gradle eklentisini ekleyin:

    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 : 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.

  1. Otomatik sembol yükleme görevine erişebilmeniz için, modül (uygulama düzeyi) Gradle dosyanızda nativeSymbolUploadEnabled öğesinin true olarak ayarlandığından emin olun.

  2. 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
    
  3. 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 kilitlenmesini zorlayın

Crashlytics kurulumunu tamamlamak ve Firebase konsolunun Crashlytics panosunda ilk verileri görmek için bir test çökmesini zorlamanız gerekir.

  1. 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))
    
  2. Uygulamanızı oluşturun ve çalıştırın.

  3. Uygulamanızın ilk kilitlenme raporunu göndermek için test kilitlenmesini zorlayın:

    1. Uygulamanızı test cihazınızdan veya öykünücünüzden açın.

    2. Uygulamanızda, yukarıdaki kodu kullanarak eklediğiniz "Test Crash" düğmesine basın.

    3. Uygulamanız kilitlendikten sonra, uygulamanızın kilitlenme raporunu Firebase'e gönderebilmesi için yeniden başlatın.

  4. 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, sembollerin başarıyla yüklenmesi 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

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



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 takibini 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.