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ı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")
}
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 zorunlu kılın

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

  1. 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));
  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. Uygulamanızı test cihazınızdan veya emülatörden açın.

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

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

  4. Ş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

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