web-dev-qa-db-fra.com

Crashlytics n'apparaissant pas dans Firebase

Les données My Crashlytics n'apparaissent pas dans la vue Firebase Crashlytics. Il affiche 75% «statistiques sans crash», il semble donc enregistrer certaines données. Je vois aussi les blocages apparaître instantanément à la fois dans Fabric et dans l'ancienne interface de rapport d'incidents Firebase, ainsi que dans DebugView en tant qu'événements généraux, mais rien dans la section Problèmes de la page Crashlytics. Je pensais que mon projet Fabric n'avait peut-être pas été lié à mon projet Firebase, mais lorsque j'ai essayé de le faire manuellement à l'aide de ce lien https://www.fabric.io/firebase_migration/apps il me dit que les projets sont déjà lié, plus précisément, il est écrit Project already contains a linked app with that bundle ID and platform. À chaque fois que j'ouvre mon application dans Android studio, j'exécute immédiatement la commande adb Shell setprop debug.firebase.analytics.app ie.moses.keepitlocal pour que mes événements apparaissent dans DebugView. Cela pourrait peut-être l'affecter, mais j'en doute.

Voici mon fichier build.gradle:

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

    }

    dependencies {
        classpath 'com.Android.tools.build:gradle:3.1.4'
        classpath 'com.google.gms:google-services:3.3.0'
        classpath 'io.fabric.tools:gradle:1.25.4'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url 'https://maven.google.com/'
        }

    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

et ceci est le build.gradle pour mon module d'application spécifique

apply plugin: 'com.Android.application'
apply plugin: 'io.fabric'

def supportLibraryVersion = '27.1.1'

Android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "ie.moses.keepitlocal"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 5
        versionName "0.3.1-alpha"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        debug {
            buildConfigField 'boolean', 'CRASHLYTICS', 'true'
        }

        release {
            buildConfigField 'boolean', 'CRASHLYTICS', 'true'
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        if (details.requested.group == 'com.Android.support') {
            // Used to prevent conflicting versions of Android support library
            // contained in other dependencies (e.g. all the firebase dependencies)
            details.useVersion supportLibraryVersion
        }
    }
}

dependencies {
    implementation files('libs/YouTubeAndroidPlayerApi.jar')
    implementation "com.Android.support:appcompat-v7:$supportLibraryVersion"
    implementation "com.Android.support:recyclerview-v7:$supportLibraryVersion"
    implementation "com.Android.support:cardview-v7:$supportLibraryVersion"
    implementation 'com.google.firebase:firebase-core:16.0.3'
    implementation 'com.google.firebase:firebase-database:16.0.1'
    implementation 'com.google.firebase:firebase-auth:16.0.3'
    implementation 'com.google.firebase:firebase-crash:16.2.0'
    implementation 'com.crashlytics.sdk.Android:crashlytics:2.9.5'
    implementation 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
    implementation 'com.github.bumptech.glide:glide:4.7.1'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
    implementation 'com.google.guava:guava:26.0-Android'
}

apply plugin: 'com.google.gms.google-services'

J'utilise un bouton pour forcer un plantage avec le code suivant (comme je l'ai mentionné, ces plantages apparaissent presque immédiatement dans Fabric et dans l'ancienne interface de signalement des collisions, qui est obsolète et qui sera supprimé dans 2 jours!). Voici le code pour le bouton crash:

Button crashButton = new Button(this);
        crashButton.setText("Crash!");
        crashButton.setOnClickListener(view -> {
            throw new IllegalStateException("you hit the crash button!");
        });
        addContentView(crashButton, new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT));

MODIFIER

Je viens de remarquer que sur la page d'état de la transition de la base Firebase, il est indiqué "0/1 APP LINKED" et "AUCUN PROJET ENCORE".

 enter image description here

Je dois également réinstaller la bibliothèque Crashlytics à partir du plug-in Fabric chaque fois que j'ouvre le studio Android. Les dépendances existent déjà dans mon fichier gradle mais le plugin ne semble pas les reconnaître.

MODIFIER

J'essaie maintenant de dissocier le tissu et la base de feu afin de pouvoir les relier de nouveau. Je suis tombé sur cette question Dissocier une application firebase existante? , mais fabric n'est même pas répertorié comme une intégration dans mon projet.

5
Moses

Oubliez le tissu, ce n'est pas obligatoire. Suivez simplement les instructions de votre console Firebase et de votre documentation Firebase: https://firebase.google.com/docs/crashlytics/get-started#Android

Ne jouez pas avec la console Fabric, vous devez supprimer complètement tout appel à la console Fabric et configurer votre projet à partir de zéro, comme le dit le document Firebase. Dès que vous exécuterez une application correctement configurée, vous verrez le panneau Crashlytics dans votre console Firebase.

3
user1209216

La seule solution que j'ai pu trouver était la suivante (j'inclus toutes les étapes exactement comme je les ai effectuées même si elles ne sont peut-être pas pertinentes):

  1. J'ai exporté ma base de données temps réel au format JSON et ai copié mes règles de base de données.
  2. J'ai supprimé mon application du projet Firebase.
  3. J'ai supprimé le projet Firebase.
  4. J'ai supprimé mon projet de Fabric.
  5. J'ai supprimé toutes les références à Fabric, Crashlytics et à l'ancienne bibliothèque Firebase Crash Reporting de mon projet. Cela consistait à supprimer les dépendances de mes fichiers build.gradle et à supprimer le fichier fabric.properties.
  6. J'ai exécuté gradlew.bat clean (je suis sous Windows) sur mon projet à partir de la ligne de commande.
  7. J'ai fait un Ctrl+Shift+F (recherche dans tous les fichiers du projet) pour les mots fabric et crash juste pour m'assurer qu'il ne restait plus aucune référence à Fabric, Crashlytics ou à la bibliothèque obsolète Crash Reporting (qui restait une dépendance). dans mon build.gradle sans que je m'en rende compte, car l'outil d'assistant Firebase l'a ajouté comme dépendance à la génération de rapports d'incidents lorsque j'ai d'abord essayé de le faire fonctionner, puis que je l'avais immédiatement déclarée obsolète: /).
  8. J'ai cherché dans l'Explorateur de fichiers sous Windows tous les fichiers faisant référence à "Fabric" ou "Crash" (il n'y en avait pas).
  9. J'ai créé un nouveau projet sur Firebase.
  10. J'ai importé ma base de données temps réel à partir du fichier JSON précédemment exporté et copié/collé dans mes règles.
  11. J'ai recréé mon compte d'utilisateur test (heureusement, l'application n'est pas encore en production: p).
  12. J'ai réactivé les analyses (bien qu'il s'agisse simplement d'aller dans l'onglet Analytics et de constater qu'elles étaient déjà activées, car j'avais toujours la dépendance dans mon build.gradle pour mon module d'application).
  13. Je suis allé à l'onglet Crashlytics et j'ai vu l'écran d'origine expliquer comment activer Crashlytics. Cette fois cependant, je n'ai pas créé le projet sur Fabric ni installé le plug-in Fabric, je ne l'ai copié que dans les dépendances de Fabric, comme je pense que @jake le suggérait. Vous pouvez les trouver ici https://firebase.google.com/docs./crashlytics/get-started? authuser = 0 .
  14. J'ai ensuite essayé de produire un blocage en utilisant la méthode décrite ici https://firebase.google.com/docs/crashlytics/force-a-crash?authuser=0 .
  15. Et puis voilà! Le crash est immédiatement apparu dans l'onglet Crashlytics de Firebase. Pas de projet Fabric, pas de plugin Fabric, juste les dépendances.

Cette méthode présentait l’avantage supplémentaire de me débarrasser de bases de données et de propriétés d’utilisateur supplémentaires que je ne souhaitais pas (que Firebase ne vous permet pas actuellement de supprimer une fois que vous les avez créées> :(), mais cette méthode risque évidemment de ne pas être réalisable. Toute personne qui a déjà beaucoup investi dans son projet Firebase et ne peut tout simplement pas recommencer à zéro. Heureusement pour moi, cela n'a pas été très pénible.

1
Moses

J'ai eu le même problème que vous. J'ai pu lier Fabric à Firebase après avoir dissocié Crashlytics de Firebase en suivant les instructions de cette réponse . Malheureusement, cela ne peut être fait qu'avec la construction d'une URL personnalisée.

0
dipdipdip