¿Cómo puedo solucionar esta excepción CrashlyticsMissingDependencyException?

104

He estado usando la última Crashlytics (integración de Fabric) durante 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)
xialina
fuente
Como se menciona en las respuestas a continuación, estamos trabajando en una solución, pero el uso de 1.14.4 funcionará mientras seguimos llegando al fondo de esto.
Mike Bonnell
Solo intento desinstalar e instalar Fabrics para el tiempo de parejas de Android Studio. AS necesita reiniciar un par de tiempo para recuperar la cordura.
Robert
use este enlace docs.fabric.io/android/crashlytics/…
Shervin Gharib

Respuestas:

22

La única solución alternativa por ahora, si realmente necesita publicar su aplicación (como yo), es cambiar los números de versión dinámica a estática:

[...]

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 del Fabric SDK; puede obtenerlo cambiando la línea a esto:

classpath 'io.fabric.tools:gradle:1.26.1'
gw0
fuente
1
No estoy seguro de a qué te refieres, pero son dos https://maven.fabric.io/repohttps://maven.fabric.io/public
repositorios de Maven
1
Aquí están las versiones disponibles: s3.amazonaws.com/fabric-artifacts/public/io/fabric/tools/gradle/…
José Antonio Postigo
96

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 ocurre después de la primera ejecución.

i906
fuente
2
Tengo el mismo problema con 1.20.1 y 2.5.2@aar. Pero no puedo usar esta solución en CI ya que el espacio de trabajo de compilación se restablece para cada compilación :(
Hieu Rocker
1
Estoy trabajando con los ingenieros de Fabric. Las diferentes zonas horarias apestan y ya nos llevó casi 2 semanas. Todavía no hay solución todavía. Pero puede probar una solución alternativa en el CI: ./gradlew clean ensamblar, luego ./gradlew ensamblar, el apk generado por el segundo comando funcionará normalmente.
Hieu Rocker
3
@ThuyTrinh resultó que se debe a dataBinding = true. Crashlytics ha lanzado una solución: twittercommunity.com/t/…
Hieu Rocker
1
Se actualizó el complemento de tela hoy y obtuve este error. La solución alternativa ayuda, pero no funciona en ejecuciones posteriores. Entonces tengo que comentar esta línea para correr.
Ernest
1
No me está funcionando encom.crashlytics.sdk.android:crashlytics:2.6.8@aar
Tas
27

Tenía esto comentado en gradle

apply plugin: 'io.fabric'

necesitaba descomentarlo

O si no lo tienes, ¡agrégalo!

MobileMon
fuente
14

Parece especificar la versión del complemento como:

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

recoge 1.15.1, que tiene el problema.

La especificación de mayor y menor a anterior 1.14parece ser estable:

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

Tuve el mismo problema después de actualizar el complemento. para resolver es necesario 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" />
Sergei K
fuente
1
Sus pautas de integración parecían obsoletas. Aparentemente ya no se necesita fabric.properties sino un <meta-data android:name="io.fabric.ApiKey" android:value="YOUR_API_KEY"/>archivo AM. El nombre se cambió de "com.crashlytics.ApiKey" a "io.fabric.ApiKey".
Thuy Trinh
1
Si, tienes razón. Es importante. Actualicé mi publicación. Gracias.
Sergei K
13

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 convierte en

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

Así que asegúrese de volver a cambiarlo a crashlyticskit. Si está haciendo esto correctamente y el error aún aparece, asegúrese de haber

debug {

      ext.enableCrashlytics = false
 }

en android {buildtypes {}}

Sidhanth Sur
fuente
11

Mike de Crashlytics aquí. Hoy enviamos una versión actualizada, 1.15.2, que incluye una solución para este comportamiento. Si tu corres:

./gradlew assemble --refresh-dependencies

que traerá la última versión. También puede ver más detalles sobre la solución aquí.

Mike Bonnell
fuente
1
No estoy usando la integración de Fabric solo con Crashlytics y también obtengo CrashlyticsMissingDependencyException. ¿Cómo podría lidiar con eso?
bogumil
@bogumil, ¿puedes incluir parte de tu build.gradle?
Mike Bonnell
2
@MikeB Después de un tiempo, nuevamente obtengo CrashlyticsMissingDependencyException. Estoy usando: dependencias {classpath 'com.android.tools.build:gradle:1.2.3' classpath 'com.crashlytics.tools.gradle: crashlytics-gradle: 1.16.0'} y compilar 'com.crashlytics.android : crashlytics: 1.1.13 '
bogumil
Hmm, muy extraño @bogumil. ¿Ayuda la ejecución de las dependencias de actualización?
Mike Bonnell
@MikeB No ayuda. También envié un correo electrónico a support @ y puedo entregar más detalles si es necesario.
bogumil
5

Arreglar para mí De fuente oficial

Deshabilitar Crashlytics para compilaciones de depuración

Si no necesita los informes de fallas de Crashlytics o la distribución beta para las compilaciones de depuración, puede acelerar de manera segura sus compilaciones de depuración desactivando 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, desactive el kit de Crashlytics en tiempo de ejecución. De lo contrario, el kit de 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);
Damir Mailybayev
fuente
5

El problema también ocurre si incluye accidentalmente Crashlytics BuildConfig, muy fácil de hacer con las importaciones automáticas de Android Studio / IntelliJ.

Yo había importado

import com.crashlytics.android.core.BuildConfig;

En lugar del mío

import <package_name>.BuildConfig;

nmw
fuente
3

En mi caso, estaba usando fabric en un módulo "CommonLib" que se agregó como una dependencia en todos los demás módulos (incluida la aplicación). Entonces, había agregado apply plugin: 'io.fabric'después de buildscript {}bloque. Entonces, coloqué dos complementos juntos:

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

¡Y el problema se resolvió!

Rahul Rastogi
fuente
1

Asegúrese de agregarlo apply plugin: 'io.fabric'a su proyecto de aplicación build.gradle. En mi caso, tenía algo en común build.gradlecon apply plugin: 'io.fabric'. Moverlo al proyecto de aplicación resolvió el problema.

Yuriy Yunikov
fuente
0

En caso de que esto ayude a otra persona, 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, en las dependencias de buildscript, tuve que eliminar manualmente:

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

Además, en dependencias, tuve que eliminar manualmente:

compile 'com.crashlytics.android:crashlytics:1.1.13'
David M
fuente
0

Compruebe si crashlytics está deshabilitado en el archivo build.gradle

    debug {
        ext.enableCrashlytics = false
    }

En su lugar use

    debug {
        ext.enableCrashlytics = true
    }
Sagar
fuente
0

Puede que llegue tarde para responder. Pero esto puede suceder por una razón más aparte de todas las respuestas anteriores.

Si se olvida de agregar

apply plugin:'io.fabric'

Esto puede parecer extraño pero resultará en el mismo problema

Esto es agregado por defecto por fabric cuando nos registramos y agregamos código desde la ventana de Fabric usando IDE, pero accidentalmente se puede eliminar.

Kumar Utkarsh
fuente
0

La eliminación del icono de la aplicación solucionó Crashylitics, ¿qué?

Hice todo basado en el tutorial de incorporación, usando las últimas versiones, etc.

Perdí 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.packageNameobtener los recursos de la aplicación en un contexto. Se hace con este método:

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

Obviamente, esto hace saltar si quieres pasar a utilizar un icono que no está dentro de la APK, por ejemplo: android:icon="@android:drawable/sym_def_app_icon". Probablemente fue una buena idea en ese momento, ¡me pregunto qué error extraño estaban tratando de solucionar!

TWiStErRob
fuente
-1
<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="false" /> 

Agregue eso a en AndroidManifest.xml.

Dholakiya Madhuri
fuente
Entonces, ¿su solución para solucionar el problema es desactivar Crashlytics por completo?
JJJ