27
votes

Fabric Debug Craslytic Reports: inscription, ID de build manquant, application du plugin: io.fabric

Nous programmons une application Android et essayons d'implémenter Crashlytics dans notre application.

Nous avons différents types de problèmes. Version que nous avons utilisée: Version studio Android: 3.3

Version Gradle: classpath 'com.android.tools.build:gradle:3.3.1'

Plugin: Fabric pour Android studio v4.3.0

Implémentation: implémentation ('com.crashlytics.sdk.android:crashlytics:2.9.9') {transitive = true} implémentation ('io.fabric.sdk.android:fabric:1.4.0@aar') {transitive = true}

gradle-wrapper.properties: distributionUrl = https: //services.gradle.org/distributions/gradle-5.2.1-all.zip

Premier problème:

Lorsque nous implémentons Crashlytics, vous savez que les développeurs ont 3 étapes. Nous ne pouvons pas sauter 2,3. étapes. Parce que nous n'avons pas encore compilé notre application. Nous avons eu deux erreurs principales:

Erreur 1:

Cette application repose sur Crashlytics. Veuillez vous inscrire pour y accéder sur https://fabric.io/sign_up ,

Erreur 2:

  adb shell setprop log.tag.Fabric DEBUG
  adb shell setprop log.tag.CrashlyticsCore DEBUG

Il a donc fallu désactiver "Debug Mod" pour terminer l'implémentation de Crashlytic.

<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="true" />

Et la mise en œuvre était terminée.

Mais nous ne voulons pas faire cela. Parce que, quand nous avons un crash, il ne fait aucun rapport à Crashlytics ou Firebase. Nous voulons également avoir des plantages de mod de débogage.

Lorsque nous avons supprimé -> ....disabled(BuildConfig.DEBUG) - il s'affiche à nouveau: Erreur 1, Erreur 2.

Deuxième problème:

In gradle; apply plugin:'io.fabric ', nous avons fait la ligne de commentaire, lorsque nous supprimons la ligne de commentaires, nous avons des erreurs ci-dessous:

Erreur 3:

buildTypes {
    debug {
        manifestPlaceholders = [crashlyticsEnabled: true]
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        manifestPlaceholders = [crashlyticsEnabled: false]

    }

Lorsque nous l'avons recherché, cette erreur était liée au nouveau gradle de studio Android. Nous avons donc dû créer à nouveau la ligne de commentaire «appliquer le plugin: fabric.io».

Il n'y a pas de bonne solution à ce sujet.

Pour exécuter l'application, nous ne pouvons pas supprimer:

new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build() : (en raison de Error1 Error2)

Nous essayons donc d'activer le rapport de différentes manières:

Qu'avons-nous essayé d'ajouter jusqu'ici?

1. Activer en gradle:

WARNING: API 'variant.getExternalNativeBuildTasks()' is obsolete and has been replaced with 'variant.getExternalNativeBuildProviders()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
To determine what is calling variant.getExternalNativeBuildTasks(), use -Pandroid.debug.obsoleteApi=true on the command line to display a stack trace.
Affected Modules: app

2. Activer dans le manifeste

Crashlytics crashlyticsKit = new Crashlytics.Builder()
        .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
        .build();

Fabric.with(this, crashlyticsKit);  // Tod from Fabric suggested in stackoverflow

3. activer dans ADB

E/CrashlyticsCore: The Crashlytics build ID is missing.This occurs when 
Crashlytics tooling is absent from your app's build configuration.
Please review Crashlytics onboarding instructions and ensure you have a valid Crashlytics account.

Mais encore, Crashlytics ou Firebase n'obtient aucun rapport Debug Crash.

Nous attendons vos solutions.


4 commentaires

Je suis confronté à un problème similaire. Votre application a-t-elle plusieurs saveurs?


nous avons résolu en ajoutant android.debug.obsoleteApi = true à gradle.properties. le tissu doit se développer pour un nouveau grade. Ils ont des bugs. Cela autorisera toutes les anciennes méthodes et variables. Lorsque le tissu l'a mis à jour, n'oubliez pas de le supprimer.


J'ai réussi à résoudre ce problème sans ajouter ce que vous avez suggéré. J'expliquerai dans quelques-uns comme réponse.


Pourquoi spécifiez-vous Proguard pour les versions de débogage?


13 Réponses :


18
votes

J'ai réussi à gradle.properties sans ajouter android.debug.obsoleteApi=true dans gradle.properties .

J'ai essentiellement connecté 3 versions à différents projets Firebase en utilisant une configuration de saveur appropriée et le fichier google-services.json fourni.

Ce qui manque à votre fichier gradle en le comparant au mien, c'est ceci:

flavor1:
assets
java
res
AndroidManifest
google-services.json (for flavor1)

flavor2:
assets
java
res
AndroidManifest
google-services.json (for flavor2)


apply plugin: "io.fabric"

Et enfin: implementation "com.google.firebase:firebase-crash:16.2.1"

Je sais que Fabric va fermer cette année, mais en exécutant les applications de cette façon, ils se sont connectés à la console Firebase sans aucun problème.

En ce qui concerne la configuration de la saveur, j'ai téléchargé trois fichiers json différents (j'ai 3 saveurs) et les ai ajoutés dans le répertoire racine de chaque saveur. Par exemple:

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    classpath "com.google.gms:google-services:$google_services_version" // google-services plugin

    classpath "io.fabric.tools:gradle:$fabric_tools_version"

}

Et c'est tout. J'espère que cela aide quelqu'un.

ÉDITER
Donc, comme vous le savez peut-être déjà, Fabric s'arrête et Firebase Crashlytics est prêt, ce qui rend cette réponse obsolète.
Veuillez cocher ici pour pouvoir mettre à jour votre application avec succès et éviter les comportements étranges.


1 commentaires

En fait, je pense que le tissu a résolu cette erreur. nous supprimons obsolete = true de notre code. De plus, pour différentes saveurs, vous n'avez pas besoin d'ajouter google-services.json séparé. Vous pouvez tous les fusionner dans un seul fichier google-service.json



2
votes

J'ai eu le même problème dans mon application (Android Studio 3.4.1)

J'ai corrigé la connexion avec le plugin Fabric. Créer un compte et y associer mon application.


0 commentaires

19
votes

Cela se produit également si vous définissez ext.enableCrashlytics = false pour une variante de construction mais que vous essayez toujours d'appeler Fabric.with(context, Crashlytics()) dans le code d'initialisation de votre application. ext.enableCrashlytics = false désactive le plugin de construction (une optimisation que j'ai faite pour accélérer mes builds de débogage) mais bien sûr, l'ID de build sera manquant.


0 commentaires

2
votes

Dans mon cas, je viens de mettre à jour l' implementation 'com.google.firebase:firebase-core:16.0.9' vers l' implementation 'com.google.firebase:firebase-core:17.0.1' et implementation 'com.google.firebase:firebase-core:17.0.1' ajouté le apply plugin: 'io.fabric' à mon niveau d'application. Cela a résolu l' erreur 2 pour moi.


0 commentaires

11
votes

il suffit de définir le apply plugin: 'io.fabric' dans votre build.gradle (app)


0 commentaires

18
votes

Aujourd'hui, j'ai migré de Fabric Crashlytics vers Firebase Crashlytics et j'ai rencontré une erreur fatale qui ne m'a pas empêché de continuer. Voici ce que j'ai fait: Dans app-> build.gradle:

buildTypes {

    debug {
        minifyEnabled false
        debuggable true
        **ext.enableCrashlytics = false**
        ext.alwaysUpdateBuildId = false
    }    
}

En général build.gradle:

buildscript {

repositories {

    maven {
        url 'https://maven.fabric.io/public'
    }
}
dependencies {
    classpath 'io.fabric.tools:gradle:1.31.2'  // Crashlytics plugin
}

Et bien sûr, téléchargez le fichier json depuis Firebase et insérez-le dans le dossier de l'application.

Après avoir terminé ces étapes simples, j'ai reçu cette erreur lorsque j'ai lancé l'application

L'ID de build Crashlytics est manquant. Cela se produit lorsque les outils Crashlytics sont absents de la configuration de construction de votre application. Veuillez consulter les instructions d'intégration de Crashlytics et vous assurer que vous disposez d'un compte Crashlytics valide.

Je suis allé vérifier qu'il n'y avait pas de code capable d'appeler d'anciennes méthodes Fabric, et en fait j'ai découvert que dans app-> build.gradle j'avais ceci:

apply plugin: 'io.fabric'
dependencies {
 implementation "com.google.firebase:firebase-core:17.2.0"
// Add dependency
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
}

ext.enableCrashlytics = false c'était certainement une méthode qui faisait référence à l'ancien Fabric, j'ai donc supprimé cette ligne et tout fonctionnait parfaitement! J'espère aider quelqu'un avec ça


3 commentaires

Merci! Travaux.


Cette ligne ext.enableCrashlytics = false est nécessaire pour accélérer les versions de débogage locales ...


Oui, probablement, mais dans ce cas, il appartenait à un ancien tissu, après la migration, il a posé des problèmes. Ils n'ont probablement plus cette méthode.



8
votes

Dans mon cas, il me manquait le plugin Crashlytics:

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

Mettez cette ligne en haut du fichier build.gradle de votre module, par exemple

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


0 commentaires

0
votes

Dans mon cas, j'ai deux modules qui utilisaient une version différente de FireBase Crashlytics.


0 commentaires

2
votes

J'ai rencontré le même problème lors de la migration de Fabric Crashlytics vers Firebase Crashlytics, les étapes suivantes ont résolu le problème pour moi

  • Clean votre projet
  • Mettre à jour le fichier google-services.json

0 commentaires

0
votes

si vous migrez de Fabric vers Firebase , assurez-vous d'avoir appelé:

FirebaseApp.initializeApp(this)

dans votre application onCreate () .

Plus besoin de relation avec Fabric , suivez simplement ces conseils:

https://firebase.google.com/docs/crashlytics/get-started?platform=android


1 commentaires

L'initialisation explicite de Crashlytics n'est plus requise



0
votes

Dans mon cas, cette ligne me manque: apply plugin: 'com.google.gms.google-services' Appliquer le plug-in Firebase Crashlytics à votre application

Pour référence, https://rnfirebase.io/crashlytics/android-setup


0 commentaires

1
votes

Ajoutez simplement cette ligne dans votre build.gradle (Projet):

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

et ce plugin dans votre build Gradle (app):

 classpath 'com.google.firebase:firebase-crashlytics-gradle:2.2.0'


0 commentaires

0
votes

J'ai eu le même problème ici et je l'ai résolu en ajoutant Fabric à Gradle

Voici mon fichier de projet Gradle:

        google()
        jcenter()
        maven { url 'https://jitpack.io' }
        maven { url 'https://maven.fabric.io/public' }

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'io.fabric.tools:gradle:1.+'
        classpath 'com.google.gms:google-services:4.3.3'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.4.1'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    } 


0 commentaires