Android NDK kilitlenme raporlarını al

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

  1. Henüz yapmadıysanız Android cihazınıza Firebase'i ekleyin. belirler. Android uygulamanız yoksa indirebilirsiniz örnek uygulamaya gidin.

  2. Ö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.

  3. 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ıza (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle) Android için Crashlytics NDK kitaplığına ait bağımlılık ekleyin. Kitaplık sürümlendirmesini kontrol etmek için Firebase Android BoM simgesini kullanmanızı öneririz.

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.3.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) BoM

Firebase BoM kullanmamayı seçerseniz her Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

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.1.0")
    implementation("com.google.firebase:firebase-analytics:22.1.0")
}
.
'nı inceleyin. Kotlin'e özel bir kitaplık modülü mü arıyorsunuz? Ekim 2023'ten (Firebase BoM 32.5.0) itibaren hem Kotlin hem de Java geliştiricileri ana kitaplık modülünden yararlanabilir (ayrıntılar için bu girişimle ilgili SSS bölümüne bakın).

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

  1. 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
    }
    
  2. 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.

  1. Otomatik sembol yükleme görevine erişebilmek için nativeSymbolUploadEnabled öğesinin, modülünüzde true olarak ayarlandığını doğrulayın (uygulama düzeyi) Gradle dosyası.

  2. 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
    
  3. 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 readelf -n. Derleme kimliği yoksa derleme sisteminizin koduna -Wl,--build-id ekleyin. işareti koyun.

5. adım: Kurulumu tamamlamak için test kilitlenmesini zorlama

Crashlytics kurulumunu tamamlamak ve ilk verileri Firebase konsolunun Crashlytics kontrol paneli, testi zorunlu kılmanız gerekiyor olabilir.

  1. Uygulamanıza, test kilitlenmesini zorlamak için kullanabileceğiniz bir kod ekleyin.

    Düğme eklemek için uygulamanızın MainActivity bölümünde aşağıdaki kodu kullanabilirsiniz bu işlev, basıldığında kilitlenmeye neden olur. Düğme etiketli "Kilitlenmeyi test et".

    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));
    
  2. Uygulamanızı derleyip çalıştırın.

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

    1. Test cihazınızdan veya emülatörünüzden uygulamanızı açın.

    2. Uygulamanızda "Kilitlenmeyi Test Et"e basın kodu kullanarak eklediğiniz düğme bölümünü ziyaret edin.

    3. Kilitlendikten sonra uygulamanızın kilitlenmeyi gönderebilmesi için uygulamayı yeniden başlatın Firebase'e bildirir.

  4. Test kilitlenmenizi görmek için Firebase konsolunun Crashlytics kontrol paneline gidin.

    Konsolu yeniledikten sonra beş dakika geçmesine rağmen testin kilitlendiğini görmüyorsanız uygulamanızın kilitlenme raporu gönderip göndermediğini görmek için hata ayıklama günlük kaydını etkinleştirin.


Hepsi bu kadar. Crashlytics artık uygulamanızı kilitlenmelere karşı izliyor ve siz Google Haritalar API'larını kullanarak kilitlenme raporlarını ve Crashlytics kontrol paneli.

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, 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+).

  • Etkinleştirme raporları, günlükler, anahtarlar ve ölümcül olmayan hataların izlenmesini ekleyerek kilitlenme raporu ayarlarınızı özelleştirin.

  • 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üklemek için 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, aşağıdaki seçenekler sembolleri başarılı bir şekilde yükleme açısından yararlıdır.

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

  • Çıplak yerel kitaplıklarınız Gradle derlemeleri sırasında erişilemeyecek şekilde sağlanıyorsa