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)
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'
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.
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!
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.+'
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" />
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 {}}
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.
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);
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;
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
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!
Vérifiez si crashlytics est désactivé dans le fichier build.gradle
debug {
ext.enableCrashlytics = false
}
Utilisez plutôt
debug {
ext.enableCrashlytics = true
}
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?!
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.
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'
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.