CrashlyticsMissingDependencyException

J’utilise les dernières versions de Crashlytics (intégration de Fabric) depuis un certain temps. Mais récemment, j’ai rencontré l’erreur de panne suivante en raison de l’absence de dépendance, même si je n’ai 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) 

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

 [...] classpath 'io.fabric.tools:gradle:1.14.4' [...] comstack('com.crashlytics.sdk.android:crashlytics:2.2.0@aar') { transitive = true } [...] 

MODIFIER:

une version mise à jour du fabric sdk a été publiée, vous pouvez l’obtenir en changeant la ligne en ceci:

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

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

 debug { ext.enableCrashlytics = false } 

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

J’ai eu ce commentaire dans gradle

 apply plugin: 'io.fabric' 

besoin de le décommenter

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

Semble spécifier la version du plugin comme:

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

reprend 1.15.1, ce qui pose problème.

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

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

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

  

et append à fabric.properties:

 apiSecret=API_SECRET_KEY apiKey=YOUR_SECRET_KEY 

METTRE À JOUR:

Maintenant, vous devez utiliser:

   

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); 

Qu’est-ce qui se passe lorsque vous mettez à jour la version de crashlytics est que

 Fabric.with(this, crashlyticsKit); 

est tourné vers

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

Donc, assurez-vous de revenir à crashlyticskit. Si vous le faites correctement et que l’erreur persiste, assurez-vous d’avoir

 debug { ext.enableCrashlytics = false } 

sous Android {buildtypes {}}

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 comportement. Si vous courez:

 ./gradlew assemble --refresh-dependencies 

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

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

Fix pour moi De source officielle

Désactiver Crashlytics pour les builds de débogage

Si vous n’avez pas besoin de rapports de crash Crashlytics ou de dissortingbution bêta pour les builds de débogage, vous pouvez accélérer vos builds de débogage en toute sécurité en désactivant le plugin en deux étapes:

Tout d’abord, ajoutez ceci au 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 lors de l’exécution. Sinon, le kit Crashlytics lancera 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 à 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); 

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

J’avais importé

import com.crashlytics.android.core.BuildConfig;

Au lieu de moi

import .BuildConfig;

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

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

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

Au cas où cela aiderait quelqu’un d’autre, j’ai rencontré 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 de pouvoir fonctionner.

Dans le fichier gradle, sous les dépendances de buildscript, je devais supprimer manuellement:

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

En outre, sous les dépendances, j’ai dû supprimer manuellement:

 comstack 'com.crashlytics.android:crashlytics:1.1.13' 

Peut-être je suis en retard pour répondre. Mais cela peut arriver d’une autre raison que toutes les réponses ci-dessus.

Si vous manquez d’append

 apply plugin:'io.fabric' 

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

Ceci est ajouté par défaut à la structure lorsque nous nous inscrivons et ajoutons du code à partir de la fenêtre Fabric. À l’aide de l’IDE ​​mais, accidentellement, il peut être supprimé.

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

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

  debug { ext.enableCrashlytics = false } 

Au lieu d’utiliser

  debug { ext.enableCrashlytics = true }