android - new - ¿Cómo puedo solucionar este CrashlyticsMissingDependencyException?
firebase crashlytics (17)
Arreglo para mí De source oficial
Deshabilitar Crashlytics para compilaciones de depuración
Si no necesita los informes de fallos de Crashlytics o la distribución beta para las compilaciones de depuración, puede acelerar sus compilaciones de forma segura deshabilitando el complemento por completo con estos dos pasos:
Primero, agregue esto al build.gradle de su aplicación:
android {
buildTypes {
debug {
// Disable fabric build ID generation for debug builds
ext.enableCrashlytics = false
...
A continuación, deshabilite el kit Crashlytics en tiempo de ejecución. De lo contrario, el kit Crashlytics arrojará el siguiente error:
com.crashlytics.android.core.CrashlyticsMissingDependencyException:
This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up`
Puede deshabilitar el kit en tiempo de ejecución para compilaciones de depuración solo con el siguiente código:
// 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);
He estado usando el último Crashlytics (integración de Fabric) por un tiempo. Pero recientemente encontré el siguiente error de bloqueo debido a la falta de dependencia, aunque no cambié nada sobre las configuraciones de Crashlytics.
¿alguna idea?
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)
Asegúrese de agregar el
apply plugin: ''io.fabric''
en el proyecto de aplicación
build.gradle
.
En mi caso, tenía un
build.gradle
común con el
apply plugin: ''io.fabric''
.
Moverlo al proyecto de aplicación resolvió el problema.
Compruebe si crashlytics está deshabilitado en el archivo build.gradle
debug {
ext.enableCrashlytics = false
}
En lugar de usar
debug {
ext.enableCrashlytics = true
}
El problema también ocurre si incluye accidentalmente el Crashlytics BuildConfig, muy fácil de hacer con las importaciones automáticas de Android Studio / IntelliJ.
Había importado
import com.crashlytics.android.core.BuildConfig;
En lugar de la mía
import <package_name>.BuildConfig;
En caso de que esto ayude a alguien más, tuve un problema similar al actualizar Crashlytics a Fabric. En mi caso, el complemento dejó 2 líneas de Crashlytics que necesitaba eliminar manualmente antes de que funcionara.
En el archivo gradle, bajo las dependencias de buildscript, tuve que eliminar manualmente:
classpath ''com.crashlytics.tools.gradle:crashlytics-gradle:1.16.0''
Además, bajo dependencias, tuve que eliminar manualmente:
compile ''com.crashlytics.android:crashlytics:1.1.13''
En mi caso, estaba usando fabric en un módulo "CommonLib" que se agregó como dependencia en todos los demás módulos (incluida la aplicación).
Entonces, agregué el
apply plugin: ''io.fabric''
después del bloque
buildscript {}
.
Entonces, coloqué dos complementos juntos:
apply plugin: ''com.android.library''
apply plugin: ''io.fabric''
¡Y el problema se resolvió!
He agregado los siguientes códigos antes de instalar Fabric / Crashlytics:
debug {
ext.enableCrashlytics = false
}
Eliminarlo antes de la primera ejecución con Crashlytics resolvió el problema. El problema ya no se produce después de la primera ejecución.
He comentado esto en gradle
apply plugin: ''io.fabric''
necesitaba descomentarlo
O si no lo tiene, ¡agréguelo!
La única solución por ahora, si realmente necesita publicar su aplicación (como yo), es cambiar los números de versión dinámica a estáticos:
[...]
classpath ''io.fabric.tools:gradle:1.14.4''
[...]
compile(''com.crashlytics.sdk.android:crashlytics:2.2.0@aar'') {
transitive = true
}
[...]
EDITAR:
se ha publicado una versión actualizada de Fabric SDK; puedes obtenerlo cambiando la línea a esto:
classpath ''io.fabric.tools:gradle:1.26.1''
Mike de Crashlytics aquí. Enviamos una versión actualizada - 1.15.2 - más temprano hoy que incluye una solución para este comportamiento. Si tu corres:
./gradlew assemble --refresh-dependencies
eso atraerá la última versión. También puede ver más detalles sobre la solución aquí.
Para mí fue por
dataBinding = true
.
La actualización del complemento de gradle de tela a 1.21.0 solucionó el problema:
twittercommunity.com/t/…
Parece que especifica la versión del complemento como:
classpath ''io.fabric.tools:gradle:1.+''
recoge 1.15.1, que tiene el problema.
Especificar mayor y menor a
1.14
anterior parece ser estable:
classpath ''io.fabric.tools:gradle:1.14.+''
Puede ser que llegue tarde a responder. Pero esto puede suceder por una razón más, aparte de todas las respuestas anteriores.
Si te falta agregar
apply plugin:''io.fabric''
Esto puede parecer extraño, pero dará como resultado el mismo problema.
Esto se agrega de manera predeterminada por fabric cuando nos registramos y agregamos código desde la ventana de Fabric mediante IDE, pero accidentalmente se puede eliminar.
Si está utilizando la función de desactivación durante la depuración como se muestra
Crashlytics crashlyticsKit = new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build();
Fabric.with(this, crashlyticsKit);
Lo que sucede cuando actualiza la versión de crashlytics es que
Fabric.with(this, crashlyticsKit);
se vuelve a
Fabric.with(this,new Crashlytics());
Así que asegúrese de volver a cambiarlo a crashlyticskit. Si está haciendo esto correctamente y el error sigue apareciendo, asegúrese de tener
debug {
ext.enableCrashlytics = false
}
bajo android {buildtypes {}}
Tuve el mismo problema después del complemento de actualización. para resolver necesita eliminar de AndroidManifest.xml:
<meta-data
android:name="com.crashlytics.ApiKey"
android:value="API_SECRET_KEY" />
y agregar a fabric.properties:
apiSecret=API_SECRET_KEY
apiKey=YOUR_SECRET_KEY
ACTUALIZAR:
Ahora, tienes que usar:
<meta-data
android:name="io.fabric.ApiKey"
android:value="API_KEY" />
La eliminación del icono de la aplicación solucionó Crashylitics, ¿qué?
Hice todo basado en el tutorial de incorporación, utilizando las últimas versiones, etc.
Solo desperdicié una hora tratando de resolver esto.
Resulta que alguien pensó que era una buena idea leer el nombre del paquete del icono de la aplicación en lugar de
context.packageName
para obtener un
context.packageName
para los recursos de la aplicación.
Se realiza en este método:
io.fabric.sdk.android.services.common.CommonUtils#getResourcePackageName
Obviamente, esto explota si utiliza un icono que no está dentro del APK, por ejemplo:
android:icon="@android:drawable/sym_def_app_icon"
.
Probablemente fue una buena idea en ese momento, ¿se preguntan qué error extraño estaban tratando de solucionar?
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
Agregue eso en
AndroidManifest.xml
.