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 uygulamanızın derlemesinde yapacağınız birkaç küçük güncelleme ile Firebase Crashlytics'ten yapılandırma.

Bu kılavuzda, NDK için Firebase Crashlytics SDK.

Unity'nizde Crashlytics'i kullanmaya nasıl başlayacağınızı öğrenmek istiyorsanız daha fazla bilgi edinmek için Unity Başlangıç Kılavuzu.

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. Önerilen: Otomatik içerik haritası günlükleri Kilitlenme, önemli olmayan veya ANR etkinliğiyle sonuçlanan kullanıcı işlemlerini anlamak için Firebase projenizde Google Analytics'i etkinleştirmeniz gerekir.

    • Mevcut Firebase projenizde Google Analytics yoksa Google Analytics'i şuradan etkinleştirebilirsiniz: Entegrasyonlar sekmesini > Proje ayarları Firebase konsolunda yer alır.

    • Yeni bir Firebase projesi oluşturuyorsanız Google Analytics'i 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 Google Analytics'i 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.1.2"))

    // 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'u kullanarak, Uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanacaktır.

(Alternatif) BoM'u kullanmadan Firebase kitaplığı bağımlılıklarını ekleyin

Firebase BoM'yi kullanmamayı tercih ederseniz 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. Böylece, uyumlu olur.

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.0.2")
}
.
'nı inceleyin. Kotlin'e özel bir kitaplık modülü mü arıyorsunuz? Başlamak için kalan süre: Ekim 2023 (Firebase BoM 32.5.0), hem Kotlin hem de Java geliştiricileri (ayrıntılar için bkz. bu girişimle ilgili SSS).

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ünüz (uygulama düzeyinde) 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'in 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. Hem NDK için Crashlytics SDK'sı hem de 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'in kurulumunu tamamlamak ve ilk verileri şurada görmek için: 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 uygulamanıza 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. n Crashlytics kontrol paneline Firebase konsolunu kullanarak 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ı kilitlenmelere karşı izliyor. Google Haritalar'daki kilitlenme raporlarını ve istatistiklerini Google Crashlytics kontrol paneli.

Sonraki adımlar

Sorun giderme

Firebase konsolunda ve Firebase'de 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'da özelleştirilmiş bir NDK derleme işlemi 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