12 votes

Crashlytics n'affiche pas les crashs natifs.

Crashlytics Native report

Avant que ce message ne soit marqué comme faisant double emploi, j'ai tout essayé parmi toutes les questions possibles. Les plantages Java sont signalés correctement, mais les plantages des librairies natives n'ont pas les symboles de débogage.

Ce que j'ai essayé :

./gradlew crashlyticsUploadSymbolsDevDebug // to upload the symbols manually
androidNdkOut 'build/intermediates/ndkBuild/devDebug/obj/local' //specify the ndk paths manually
androidNdkLibsOut 'build/intermediates/merged_native_libs/devDebug/out/lib'` //specify the ndk paths manually

La configuration actuelle :

Dépendances :

implementation('com.crashlytics.sdk.android:crashlytics:2.10.1@aar') { transitive = true }

implementation 'com.crashlytics.sdk.android:crashlytics-ndk:2.1.1'

android.applicationVariants.all { variant ->
def variantName = variant.name.capitalize()
def task = task("ndkbuild${variantName}")
task.finalizedBy("crashlyticsUploadSymbols${variantName}")
}

crashlytics {
enableNdk true
manifestPath 'AndroidManifest.xml'
androidNdkOut 'build/intermediates/ndkBuild/devDebug/obj/local'
androidNdkLibsOut 'build/intermediates/merged_native_libs/devDebug/out/lib'
}

Les dépendances du tissu :

buildscript {
repositories {
    maven { url 'https://maven.fabric.io/public' }
}

dependencies {
    // The Fabric Gradle plugin uses an open ended version to react
    // quickly to Android tooling updates
    classpath 'io.fabric.tools:gradle:1.31.2'
    }
}

Fabric est installé et fonctionne avec la couche Java qui se plante.

Fabric.Builder builder = new Fabric.Builder(this).kits(new Crashlytics(), new 
CrashlyticsNdk());`

Le problème : les crashs natifs sont signalés mais les symboles de débogage sont absents, il n'y a aucune erreur/sortie qui indique pourquoi ils sont absents.

J'ai créé une application d'exemple afin de pouvoir reproduire ce problème plus facilement. Tout ce que vous avez à faire est de créer un projet dans firebase et coller le fichier google-services.json et construire. Lien vers le dépôt

0voto

syslogic Points 749

Cela peut être dû à des symboles de débogage dans un autre module ou à cause de une configuration obsolète .

Essayez de le configurer comme ceci :

crashlytics {
    enableNdk true
    // If using the Android plugin for Gradle version 2.2.0+ with the externalNativeBuild DSL,
    // you should remove the androidNdkOut and androidNdkLibsOut properties, as these paths will
    // automatically be detected by the Fabric plugin.
    androidNdkOut 'obj'
    androidNdkLibsOut 'libs'
    manifestPath 'AndroidManifest.xml'
}

Cependant, il est préférable de migrer vers Firebase Crashlytics parce que les fabricants vont bientôt le fermer :

Crashlytics a été intégré à Firebase, avec de nouvelles fonctionnalités réservées à Firebase. Les nouvelles applications devraient utiliser Crashlytics dans Firebase pour avoir accès aux dernières mises à jour et fonctionnalités. Fabric Crashlytics et le tableau de bord Fabric seront disponibles jusqu'au 31 mars 2020 pour les utilisateurs existants.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X