with new android crashlytics fabric-twitter twitter-fabric

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 .