Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Dapatkan laporan kerusakan Android NDK

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Jika aplikasi Android Anda berisi pustaka asli , Anda dapat mengaktifkan pelacakan tumpukan penuh dan laporan kerusakan mendetail untuk kode asli Anda dari Firebase Crashlytics dengan beberapa pembaruan kecil pada konfigurasi pembangunan aplikasi Anda.

Panduan ini menjelaskan cara mengonfigurasi pelaporan kerusakan dengan Firebase Crashlytics SDK untuk NDK.

Jika Anda sedang mencari cara untuk memulai dengan Crashlytics di proyek Unity Anda, lihat panduan Memulai Unity .

Sebelum kamu memulai

  1. Jika Anda belum melakukannya, tambahkan Firebase ke proyek Android Anda. Jika Anda tidak memiliki aplikasi Android, Anda dapat mengunduh contoh aplikasi .

  2. Direkomendasikan : Untuk mendapatkan fitur seperti crash-free users, breadcrumb logs, dan velocity alerts, Anda perlu mengaktifkan Google Analytics di project Firebase Anda.

    • Jika proyek Firebase Anda yang ada tidak mengaktifkan Google Analytics, Anda dapat mengaktifkan Google Analytics dari tab Integrasi di Anda > Setelan proyek di konsol Firebase.

    • Jika Anda membuat proyek Firebase baru, aktifkan Google Analytics selama alur kerja pembuatan proyek.

Langkah 1 : Tambahkan Crashlytics SDK untuk NDK ke aplikasi Anda

Dalam file Gradle modul (level aplikasi) Anda (biasanya <project>/<app-module>/build.gradle ), tambahkan dependensi untuk library Android Crashlytics NDK. Kami merekomendasikan penggunaan Firebase Android BoM untuk mengontrol pembuatan versi library.

Untuk pengalaman optimal dengan Crashlytics, sebaiknya aktifkan Google Analytics di project Firebase Anda dan tambahkan SDK Firebase untuk Google Analytics ke aplikasi Anda.

Kotlin+KTX

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

Dengan menggunakan Firebase Android BoM , aplikasi Anda akan selalu menggunakan versi pustaka Android Firebase yang kompatibel.

(Alternatif) Tambahkan dependensi library Firebase tanpa menggunakan BoM

Jika Anda memilih untuk tidak menggunakan Firebase BoM, Anda harus menentukan setiap versi pustaka Firebase di baris dependensinya.

Perhatikan bahwa jika Anda menggunakan beberapa pustaka Firebase di aplikasi Anda, kami sangat menyarankan penggunaan BoM untuk mengelola versi pustaka, yang memastikan bahwa semua versi kompatibel.

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

Java

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

Dengan menggunakan Firebase Android BoM , aplikasi Anda akan selalu menggunakan versi pustaka Android Firebase yang kompatibel.

(Alternatif) Tambahkan dependensi library Firebase tanpa menggunakan BoM

Jika Anda memilih untuk tidak menggunakan Firebase BoM, Anda harus menentukan setiap versi pustaka Firebase di baris dependensinya.

Perhatikan bahwa jika Anda menggunakan beberapa pustaka Firebase di aplikasi Anda, kami sangat menyarankan penggunaan BoM untuk mengelola versi pustaka, yang memastikan bahwa semua versi kompatibel.

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

Langkah 2 : Tambahkan plugin Crashlytics Gradle ke aplikasi Anda

  1. Di file Gradle level root (level proyek) Anda ( <project>/build.gradle ), tambahkan plugin Crashlytics Gradle sebagai dependensi buildscript:

    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.15'
    
            // Add the dependency for the Crashlytics Gradle plugin
            classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
        }
    }
  2. Dalam file Gradle modul (level aplikasi) Anda (biasanya <project>/<app-module>/build.gradle ), tambahkan plugin Gradle Crashlytics:

    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'
        ...
    }

Langkah 3 : Tambahkan ekstensi firebaseCrashlytics ke build

Dalam file Gradle modul (level aplikasi) Anda (biasanya app/build.gradle ), tambahkan ekstensi firebaseCrashlytics .

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
          }
      }
  }
}

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
          }
      }
  }
}

Langkah 4 : Siapkan pengunggahan otomatis simbol asli

Untuk menghasilkan pelacakan tumpukan yang dapat dibaca dari error NDK, Crashlytics perlu mengetahui tentang simbol di biner native Anda. Plugin Crashlytics Gradle menyertakan tugas uploadCrashlyticsSymbolFile BUILD_VARIANT untuk mengotomatiskan proses ini.

  1. Agar Anda dapat mengakses tugas untuk pengunggahan simbol otomatis, pastikan bahwa nativeSymbolUploadEnabled disetel ke true dalam file Gradle modul (level aplikasi) Anda.

  2. Agar nama metode muncul di pelacakan tumpukan, Anda harus secara eksplisit menjalankan tugas uploadCrashlyticsSymbolFile BUILD_VARIANT setelah setiap build library NDK Anda. Sebagai contoh:

    >./gradlew app:assembleBUILD_VARIANT\
               app:uploadCrashlyticsSymbolFileBUILD_VARIANT
    
  3. Baik Crashlytics SDK for NDK maupun plugin Crashlytics Gradle bergantung pada keberadaan ID build GNU di dalam objek bawaan yang dibagikan.

    Anda dapat memverifikasi keberadaan ID ini dengan menjalankan readelf -n pada setiap biner. Jika build ID tidak ada, tambahkan -Wl,--build-id ke flag sistem build Anda untuk memperbaiki masalah.

Langkah 5 : Paksa uji crash untuk menyelesaikan penyiapan

Untuk menyelesaikan penyiapan Crashlytics dan melihat data awal di dasbor Crashlytics di Firebase console, Anda perlu memaksakan pengujian error.

  1. Tambahkan kode ke aplikasi Anda yang dapat Anda gunakan untuk memaksakan error pengujian.

    Anda bisa menggunakan kode berikut di MainActivity aplikasi Anda untuk menambahkan tombol ke aplikasi Anda yang, jika ditekan, akan menyebabkan crash. Tombol tersebut diberi label "Test Crash".

    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. Bangun dan jalankan aplikasi Anda.

  3. Paksa error pengujian untuk mengirimkan laporan error pertama aplikasi Anda:

    1. Buka aplikasi Anda dari perangkat pengujian atau emulator.

    2. Di aplikasi Anda, tekan tombol "Test Crash" yang Anda tambahkan menggunakan kode di atas.

    3. Setelah aplikasi Anda mogok, mulai ulang agar aplikasi Anda dapat mengirimkan laporan kerusakan ke Firebase.

  4. Buka dasbor Crashlytics di Firebase console untuk melihat error pengujian Anda.

    Jika Anda telah me-refresh konsol dan Anda masih belum melihat pengujian error setelah lima menit, aktifkan logging debug untuk melihat apakah aplikasi Anda mengirim laporan kerusakan.


Dan itu saja! Crashlytics sekarang memantau aplikasi Anda untuk kerusakan, dan Anda dapat melihat serta menyelidiki laporan dan statistik kerusakan di dasbor Crashlytics.



Opsi alternatif untuk mengunggah simbol

Alur kerja utama pada halaman ini di atas berlaku untuk build Gradle standar. Namun, beberapa aplikasi menggunakan konfigurasi atau alat yang berbeda (misalnya proses build selain Gradle). Dalam situasi ini, opsi berikut mungkin berguna untuk berhasil mengunggah simbol.

Opsi : Unggah simbol untuk modul pustaka dan dependensi eksternal

Opsi ini dapat membantu dalam situasi berikut:

  • Jika Anda menggunakan proses pembuatan NDK yang disesuaikan dalam Gradle
  • Jika pustaka asli Anda dibuat dalam modul pustaka/fitur atau disediakan oleh pihak ketiga
  • Jika tugas pengunggahan simbol otomatis gagal atau Anda melihat kerusakan yang tidak tersimbolkan di dasbor

Opsi : Upload simbol untuk build non-Gradle atau library native unstripped yang tidak dapat diakses

Opsi ini dapat membantu dalam situasi berikut:

  • Jika Anda menggunakan proses build selain Gradle

  • Jika pustaka asli Anda yang tidak dilucuti diberikan kepada Anda dengan cara tertentu sehingga pustaka tersebut tidak dapat diakses selama pembangunan Gradle



Penyelesaian masalah

Jika Anda melihat pelacakan tumpukan yang berbeda di Firebase console dan di logcat, lihat Panduan pemecahan masalah .

Langkah selanjutnya

  • Sesuaikan penyiapan laporan kerusakan Anda dengan menambahkan pelaporan keikutsertaan, log, kunci, dan pelacakan kesalahan non-fatal.

  • Integrasikan dengan Google Play sehingga Anda dapat memfilter laporan kerusakan aplikasi Android Anda melalui jalur Google Play langsung di dasbor Crashlytics. Ini memungkinkan Anda untuk lebih memfokuskan dasbor Anda pada build tertentu.