Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Ottieni rapporti sugli arresti anomali di NDK per Android

Se la tua app Android contiene librerie native , puoi abilitare tracce complete dello stack e rapporti dettagliati sugli arresti anomali per il tuo codice nativo da Firebase Crashlytics con alcuni piccoli aggiornamenti alla configurazione di build della tua app. Questa guida descrive come configurare la segnalazione degli arresti anomali con il nuovo SDK Firebase Crashlytics.

Prima di iniziare

Per iniziare, imposta Crashlytics con Firebase Crashlytics SDK.

Passaggio 1 : aggiorna la configurazione di Gradle

In build.gradle livello di build.gradle , aggiungi la dipendenza runtime di Crashlytics NDK:

apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.crashlytics'

dependencies {
    // ...

    // Add the Crashlytics NDK dependency (if you have the
    // Firebase Crashlytics dependency, replace it).
    implementation 'com.google.firebase:firebase-crashlytics:17.1.1'
    implementation 'com.google.firebase:firebase-crashlytics-ndk:17.1.1'
}

// …
android {
    // ...
    buildTypes {
        release {
            // Add this extension
            firebaseCrashlytics {
                // Enable processing and uploading of native symbols to Crashlytics
                // 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
            }
        }
    }
}

Passaggio 2 : abilita il caricamento di simboli nativi

Per produrre tracce di stack leggibili da crash NDK, Crashlytics deve conoscere i simboli nei file binari nativi. Il nostro plug-in Gradle include l'attività uploadCrashlyticsSymbolFile BUILD_VARIANT per automatizzare questo processo (per accedere a questa attività, assicurarsi che nativeSymbolUploadEnabled sia impostato su true).

Affinché i nomi dei uploadCrashlyticsSymbolFile BUILD_VARIANT visualizzati nelle tracce dello stack, è necessario invocare esplicitamente l'attività uploadCrashlyticsSymbolFile BUILD_VARIANT dopo ogni build della libreria NDK. Per esempio:

>./gradlew app:assemble BUILD_VARIANT \
           app:uploadCrashlyticsSymbolFile BUILD_VARIANT

Passaggio 3 (opzionale): carica simboli per dipendenze esterne

La nostra attività di caricamento dei simboli presuppone che tu stia costruendo le tue librerie native come parte della tua build Gradle, usando strumenti di build NDK standard come CMake. Se si dispone di librerie native costruite esternamente o si utilizza un processo di generazione NDK personalizzato all'interno di Gradle, potrebbe essere necessario specificare esplicitamente il percorso delle librerie rimosse e non eliminate. L'estensione firebaseCrashlytics fornisce proprietà per fare ciò: strippedNativeLibsDir e unstrippedNativeLibsDir .

// …
android {
    // ...
    buildTypes {
        release {
            firebaseCrashlytics {
                nativeSymbolUploadEnabled true
                strippedNativeLibsDir ‘path/to/stripped/parent/dir’
                unstrippedNativeLibsDir ‘path/to/unstripped/parent/dir’
            }
        }
    }
}

Il nostro plug-in presuppone che le librerie si trovino in sottodirectory specifiche dell'architettura sotto le directory specificate e che le corrispondenti coppie di librerie rimosse / non eliminate abbiano identici percorsi in quella directory. Per esempio:

 strippedNativeLibsDir/
 +- x86/
      |
      +- libfoo.so
      +- libbar.so
 +- arm64/
      |
      +- libfoo.so
      +- libbar.so

unstrippedNativeLibsDir/
 +- x86/
      |
      +- libfoo.so
      +- libbar.so
 +- arm64/
      |
      +- libfoo.so
      +- libbar.so
 

Se il sistema di compilazione non aderisce allo schema di denominazione / struttura sopra riportato, creare manualmente questa struttura sul disco locale prima di richiamare l'attività uploadCrashlyticsSymbolFileBUILD_VARIANT .

Passaggio 4 (facoltativo): personalizzare i rapporti sugli arresti anomali NDK

Se lo crashlytics.h puoi includere l'intestazione crashlytics.h nel tuo codice C ++ per aggiungere metadati ai rapporti sugli arresti crashlytics.h NDK, come registri, chiavi personalizzate e ID utente. crashlytics.h è disponibile come libreria C ++ solo intestazione nel repository GitHub di Android SDK Firebase . Leggi i commenti nel file di intestazione per istruzioni sull'uso delle API NDK C ++.

Passaggio 5 : visualizza i rapporti sugli arresti anomali

Verifica che Crashlytics stia segnalando correttamente gli arresti anomali NDK creando l'app, caricando simboli e forzando un arresto anomalo nativo. Avrai bisogno di riavviare l'app dopo che si arresta in modo anomalo affinché Crashlytics invii il rapporto. Dovresti vedere il crash nella tua console Firebase in pochi minuti.

Risoluzione dei problemi