web-dev-qa-db-fra.com

Comment puis-je corriger cette exception CrashlyticsMissingDependencyException?

J'utilise la dernière version de Crashlytics (intégration de Fabric) depuis un certain temps. Mais récemment, j'ai rencontré l'erreur de crash suivante en raison d'une dépendance manquante bien que je n'aie rien changé aux configurations Crashlytics. 

une idée?

02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .     |  |
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .     |  |
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .     |  |
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .   \ |  | /
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .    \    /
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .     \  /
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .      \/
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
    install an Android build tool and ask a team member to invite you to this app's organization.
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .      /\
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .     /  \
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .    /    \
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .   / |  | \
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .     |  |
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .     |  |
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .     |  |
02-08 22:18:00.935  18887-18887/? E/Fabric﹕ .
02-08 22:18:00.935  18887-18887/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.Android.staging, PID: 18887
    Java.lang.RuntimeException: Unable to create application com.example.Android.App: io.fabric.sdk.Android.services.concurrency.UnmetDependencyException: com.crashlytics.Android.CrashlyticsMissingDependencyException:
    This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
    install an Android build tool and ask a team member to invite you to this app's organization.
            at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4734)
            at Android.app.ActivityThread.access$1600(ActivityThread.Java:171)
            at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1357)
            at Android.os.Handler.dispatchMessage(Handler.Java:102)
            at Android.os.Looper.loop(Looper.Java:157)
            at Android.app.ActivityThread.main(ActivityThread.Java:5506)
            at Java.lang.reflect.Method.invokeNative(Native Method)
            at Java.lang.reflect.Method.invoke(Method.Java:515)
            at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1265)
            at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:1081)
            at dalvik.system.NativeStart.main(Native Method)
96
xialin

La seule solution pour le moment, si vous devez vraiment publier votre application (comme moi), changez les numéros de version dynamiques en statiques:

[...]

classpath 'io.fabric.tools:gradle:1.14.4'

[...]

compile('com.crashlytics.sdk.Android:crashlytics:2.2.0@aar') {
        transitive = true
}

[...]

MODIFIER:

une version mise à jour du sdk Fabric a été publiée, vous pouvez l'obtenir en changeant la ligne comme suit:

classpath 'io.fabric.tools:gradle:1.15.2'
21
ThatBigGuy

J'ai ajouté les codes suivants avant d'installer Fabric/Crashlytics: 

debug {
    ext.enableCrashlytics = false
}

Le supprimer avant la première utilisation avec Crashlytics a résolu le problème. Le problème ne se produit plus après la première exécution.

95
i906

J'ai eu cette commenté en grade

apply plugin: 'io.fabric'

besoin de le décommenter

Ou si vous ne l'avez pas, ajoutez-le!

25
MobileMon

On dirait que vous spécifiez la version du plugin comme suit:

classpath 'io.fabric.tools:gradle:1.+' 

reprend 1.15.1, qui a le problème.

Spécifier majeur et mineur au précédent 1.14 semble être stable:

classpath 'io.fabric.tools:gradle:1.14.+'
13
Khaleesi

J'ai eu le même problème après la mise à jour du plugin. pour résoudre le besoin de supprimer de AndroidManifest.xml:

<meta-data
    Android:name="com.crashlytics.ApiKey"
    Android:value="API_SECRET_KEY" />

et ajouter à fabric.properties:

apiSecret=API_SECRET_KEY
apiKey=YOUR_SECRET_KEY

METTRE À JOUR:

Maintenant, vous devez utiliser:

  <meta-data
      Android:name="io.fabric.ApiKey"
      Android:value="API_KEY" />
13
Sergei K

Si vous utilisez la fonction de désactivation pendant le débogage, comme indiqué

 Crashlytics crashlyticsKit = new Crashlytics.Builder()
            .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
            .build();
    Fabric.with(this, crashlyticsKit);

Que se passe-t-il lorsque vous mettez à jour la version de crashlytics?

Fabric.with(this, crashlyticsKit); 

est tourné vers

Fabric.with(this,new Crashlytics());

Donc, assurez-vous de changer cela en crashlyticskit. Si vous le faites correctement et que l'erreur persiste, assurez-vous de disposer du

debug {

      ext.enableCrashlytics = false
 }

sous Android {buildtypes {}}

12
Sidhanth Sur

Mike de Crashlytics ici. Nous avons livré une version mise à jour - 1.15.2 - plus tôt aujourd'hui, qui inclut un correctif pour ce problème. Si vous courez:

./gradlew assemble --refresh-dependencies

cela va tirer dans la dernière version. Vous pouvez également voir plus détails sur le correctif ici.

11
Mike Bonnell

Fix for me D'officiel source

Désactiver Crashlytics pour les versions de débogage

Si vous n'avez pas besoin des rapports d'incident Crashlytics ou de la distribution bêta pour les générations de débogage, vous pouvez accélérer en toute sécurité vos générations de débogage en désactivant entièrement le plug-in en procédant comme suit:

Tout d’abord, ajoutez ceci à build.gradle de votre application:

Android {
    buildTypes {
        debug {
          // Disable fabric build ID generation for debug builds
          ext.enableCrashlytics = false
          ...

Ensuite, désactivez le kit Crashlytics au moment de l'exécution. Sinon, le kit Crashlytics émettra l'erreur suivante:

com.crashlytics.Android.core.CrashlyticsMissingDependencyException:

This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up`

Vous pouvez désactiver le kit au moment de l'exécution pour les versions de débogage uniquement avec le code suivant:

// Set up Crashlytics, disabled for debug builds
Crashlytics crashlyticsKit = new Crashlytics.Builder()
    .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
    .build();

// Initialize Fabric with the debug-disabled crashlytics.
Fabric.with(this, crashlyticsKit);
4
Damir Mailybayev

Le problème se produit également si vous incluez accidentellement Crashlytics BuildConfig - très facile à effectuer avec les importations automatiques Android Studio/IntelliJ. 

J'avais importé

import com.crashlytics.Android.core.BuildConfig;

Au lieu de la mienne

import <package_name>.BuildConfig;

4
nmw

Pour moi, c'était à cause de dataBinding = true. La mise à niveau du plugin Fabric Gradle vers 1.21.0 a résolu le problème suivant: https://twittercommunity.com/t/fabric-gradle-plugin-1-21-0-add-support-for-Android-databinding-true/57474

4
Hieu Rocker

Dans mon cas, j'utilisais la structure dans un module "CommonLib" ajouté en tant que dépendance dans tous les autres modules (y compris l'application). Donc, j'avais ajouté apply plugin: 'io.fabric' après le bloc buildscript {}. J'ai donc placé deux plugins ensemble:

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

Et le problème a été résolu!

3
Rahul Rastogi

Vérifiez si crashlytics est désactivé dans le fichier build.gradle

    debug {
        ext.enableCrashlytics = false
    }

Utilisez plutôt

    debug {
        ext.enableCrashlytics = true
    }
1
Sagar

Suppression de l'icône de l'application fixe Crashylitics, whaaat?

J'avais tout fait sur la base du tutoriel d'intégration, en utilisant les dernières versions, etc.

Je viens de perdre une heure à essayer de comprendre cela. Il s'avère que quelqu'un a pensé que c'était une bonne idée de lire le nom du paquet de l'icône de l'application au lieu de context.packageName pour obtenir un contexte des ressources de l'application. C'est fait avec cette méthode:

io.fabric.sdk.Android.services.common.CommonUtils#getResourcePackageName

Cela explose évidemment si vous utilisez une icône qui ne se trouve pas dans l'APK, par exemple: Android:icon="@Android:drawable/sym_def_app_icon". C'était probablement une bonne idée à l'époque, se demander quel bogue étrange ils essayaient de contourner?!

0
TWiStErRob

Peut-être que je suis en retard pour répondre. Mais cela peut arriver d'une raison supplémentaire, en dehors de toutes les réponses ci-dessus 

Si vous manquez d'ajouter

apply plugin:'io.fabric'

Cela peut sembler étrange, mais cela entraînera le même problème. 

Ceci est ajouté par défaut par Fabric lorsque nous nous inscrivons et ajoutons du code à partir de la fenêtre Fabric en utilisant IDE mais il peut être supprimé par inadvertance.

0
Kumar Utkarsh

Au cas où cela aiderait quelqu'un d'autre, j'avais un problème similaire lors de la mise à niveau de Crashlytics vers Fabric. Dans mon cas, le plugin a laissé 2 lignes de Crashlytics que je devais supprimer manuellement avant que cela fonctionne.

Dans le fichier gradle, sous les dépendances de buildscript, j'ai dû supprimer manuellement:

classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.16.0'

Aussi, sous les dépendances, j'ai dû supprimer manuellement:

compile 'com.crashlytics.Android:crashlytics:1.1.13'
0
David M

Assurez-vous d’ajouter apply plugin: 'io.fabric' dans votre projet d’application build.gradle. Dans mon cas, j'avais un build.gradle commun avec apply plugin: 'io.fabric'. Le déplacer vers un projet d'application a résolu le problème.

0
Yuriy Yunikov