Come posso risolvere questa CrashlyticsMissingDependencyException?


104

Utilizzo l'ultima versione di Crashlytics (integrazione di Fabric) da un po 'di tempo. Ma di recente ho riscontrato il seguente errore di arresto anomalo a causa della mancanza di dipendenza anche se non ho modificato nulla sulle configurazioni di Crashlytics.

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

Come accennato nelle risposte seguenti, stiamo lavorando a una correzione, ma l'uso di 1.14.4 funzionerà mentre continuiamo ad arrivare alla fine di questo.
Mike Bonnell

Provo solo a disinstallare e installare Fabrics per Android Studio coppie tempo. AS bisogno di ricominciare un paio di volte per recuperare la sua sanità mentale.
Robert

Risposte:


22

L'unica soluzione alternativa per ora, se hai davvero bisogno di pubblicare la tua app (come me), è cambiare i numeri di versione dinamica in quelli statici:

[...]

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

[...]

compile('com.crashlytics.sdk.android:crashlytics:2.2.0@aar') {
        transitive = true
}

[...]

MODIFICARE:

è stata pubblicata una versione aggiornata di Fabric SDK; puoi ottenerlo cambiando la linea in questo:

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

1
Non sono sicuro di cosa intendi, ma sono due identici https://maven.fabric.io/repohttps://maven.fabric.io/public
repository esperti


96

Ho aggiunto i seguenti codici prima di installare effettivamente Fabric / Crashlytics:

debug {
    ext.enableCrashlytics = false
}

Rimuoverlo prima della prima esecuzione con Crashlytics ha risolto il problema. Il problema non si verifica più dopo la prima esecuzione.


2
Ho lo stesso problema con 1.20.1 e 2.5.2@aar. Ma non posso utilizzare questa soluzione alternativa su CI poiché l'area di lavoro della build viene reimpostata per ogni build :(
Hieu Rocker

1
Sto lavorando con gli ingegneri di Fabric. Fusi orari diversi fanno schifo e ci sono volute già quasi 2 settimane. Ancora nessuna soluzione. Ma puoi provare una soluzione alternativa su CI: ./gradlew clean assemblaggio, quindi ./gradlew assemblaggio, l'apk generato dal secondo comando funzionerà normalmente.
Hieu Rocker

3
@ThuyTrinh si è scoperto che è a causa di dataBinding = true. Crashlytics ha implementato una correzione per questo: twittercommunity.com/t/…
Hieu Rocker

1
Aggiornato il plug-in di tessuto oggi e ha ricevuto questo errore. La soluzione alternativa aiuta, ma non funziona nelle esecuzioni successive. Quindi devo commentare questa riga per correre.
Ernest

1
Non funziona per me incom.crashlytics.sdk.android:crashlytics:2.6.8@aar
Tas

27

L'ho fatto commentare in gradle

apply plugin: 'io.fabric'

necessario per rimuoverlo

O se non ce l'hai, aggiungilo!


14

Sembra che tu specifichi la versione del plugin come:

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

riprende 1.15.1, che presenta il problema.

Specificare maggiore e minore rispetto al precedente 1.14sembra essere stabile:

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

13

Ho avuto lo stesso problema dopo l'aggiornamento del plugin. per risolvere è necessario rimuovere da AndroidManifest.xml:

<meta-data
    android:name="com.crashlytics.ApiKey"
    android:value="API_SECRET_KEY" />

e aggiungi a fabric.properties:

apiSecret=API_SECRET_KEY
apiKey=YOUR_SECRET_KEY

AGGIORNARE:

Ora devi usare:

  <meta-data
      android:name="io.fabric.ApiKey"
      android:value="API_KEY" />

1
Le loro linee guida per l'integrazione sembravano obsolete. Apparentemente non serve più fabric.properties ma un <meta-data android:name="io.fabric.ApiKey" android:value="YOUR_API_KEY"/>file AM. Il nome è stato modificato da "com.crashlytics.ApiKey" a "io.fabric.ApiKey".
Thuy Trinh

1
Si hai ragione. È importante. Ho aggiornato il mio post. Grazie.
Sergei K

13

Se stai usando la funzione di disabilitazione durante il debug come mostrato

 Crashlytics crashlyticsKit = new Crashlytics.Builder()
            .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
            .build();
    Fabric.with(this, crashlyticsKit);

Quello che succede quando aggiorni la versione di crashlytics è questo

Fabric.with(this, crashlyticsKit); 

è rivolto a

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

Quindi assicurati di cambiarlo di nuovo in crashlyticskit. Se lo stai facendo correttamente e l'errore appare ancora, assicurati di averlo fatto

debug {

      ext.enableCrashlytics = false
 }

sotto Android {buildtypes {}}


11

Mike di Crashlytics qui. Oggi abbiamo distribuito una versione aggiornata - 1.15.2 - che include una correzione per questo comportamento. Se corri:

./gradlew assemble --refresh-dependencies

che attiverà l'ultima versione. Puoi anche vedere ulteriori dettagli sulla correzione qui.


1
Non sto usando l'integrazione di Fabric solo da Crashlytics stesso e ricevo anche CrashlyticsMissingDependencyException. Come potrei affrontarlo?
bogumil

@bogumil puoi includere parte del tuo build.gradle?
Mike Bonnell

2
@MikeB Dopo un po 'di tempo, ricevo ancora CrashlyticsMissingDependencyException. Sto usando: dependencies {classpath 'com.android.tools.build:gradle:1.2.3' classpath 'com.crashlytics.tools.gradle: crashlytics-gradle: 1.16.0'} e compilare 'com.crashlytics.android : crashlytics: 1.1.13 '
bogumil

Hmm, molto strano @bogumil. L'esecuzione delle dipendenze di aggiornamento aiuta?
Mike Bonnell

@ MikeB Non aiuta. Ho anche inviato un'e-mail a support @ e posso fornire maggiori dettagli se necessario.
bogumil

5

Risolvi per me Dalla fonte ufficiale

Disabilita Crashlytics per build di debug

Se non hai bisogno del rapporto sugli arresti anomali di Crashlytics o della distribuzione beta per le build di debug, puoi accelerare in modo sicuro le build di debug disabilitando completamente il plugin con questi due passaggi:

Innanzitutto, aggiungilo al file build.gradle della tua app:

android {
    buildTypes {
        debug {
          // Disable fabric build ID generation for debug builds
          ext.enableCrashlytics = false
          ...

Quindi, disabilita il kit Crashlytics in fase di esecuzione. In caso contrario, il kit Crashlytics genererà il seguente errore:

com.crashlytics.android.core.CrashlyticsMissingDependencyException:

This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up`

È possibile disabilitare il kit in fase di esecuzione per le build di debug solo con il codice seguente:

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

5

Il problema si verifica anche se includi accidentalmente Crashlytics BuildConfig, molto facile da fare con le importazioni automatiche di Android Studio / IntelliJ.

Io avevo importato

import com.crashlytics.android.core.BuildConfig;

Invece del mio

import <package_name>.BuildConfig;



3

Nel mio caso, stavo usando fabric in un modulo "CommonLib" che è stato aggiunto come dipendenza in tutti gli altri moduli (app inclusa). Quindi, avevo aggiunto apply plugin: 'io.fabric'dopo il buildscript {}blocco. Quindi, ho messo insieme due plugin:

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

E il problema è stato risolto!


1

Assicurati di aggiungere apply plugin: 'io.fabric'nel progetto della tua applicazione build.gradle. Nel mio caso, ho avuto un comune build.gradlecon apply plugin: 'io.fabric'. Spostarlo nel progetto dell'applicazione ha risolto il problema.


0

Nel caso in cui questo aiuti qualcun altro, ho avuto un problema simile durante l'aggiornamento di Crashlytics a Fabric. Nel mio caso, il plug-in ha lasciato 2 righe da Crashlytics che dovevo rimuovere manualmente prima che funzionasse.

Nel file gradle, sotto le dipendenze buildscript, ho dovuto rimuovere manualmente:

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

Inoltre, sotto le dipendenze, ho dovuto rimuovere manualmente:

compile 'com.crashlytics.android:crashlytics:1.1.13'

0

Controlla se crashlytics è disabilitato nel file build.gradle

    debug {
        ext.enableCrashlytics = false
    }

Invece usa

    debug {
        ext.enableCrashlytics = true
    }

0

Forse sono in ritardo per rispondere. Ma questo può accadere per un motivo in più oltre a tutte le risposte di cui sopra

Se ti manca aggiungere

apply plugin:'io.fabric'

Può sembrare strano, ma risulterà nello stesso problema

Questo è per impostazione predefinita aggiunto da fabric quando ci registriamo e aggiungiamo codice dalla finestra Fabric utilizzando IDE, ma accidentalmente può essere eliminato.


0

La rimozione dell'icona dell'applicazione ha risolto il problema con Crashylitics, che ne dici?

Ho fatto tutto in base al tutorial di onboarding, utilizzando le ultime versioni, ecc.

Ho solo sprecato un'ora cercando di capirlo. Si scopre che qualcuno ha pensato che fosse una buona idea leggere il nome del pacchetto dell'icona dell'applicazione invece di context.packageNameottenere le risorse dell'applicazione dato un contesto. È fatto in questo metodo:

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

Questo, ovviamente, soffia su se vi capita di usare un'icona che non è all'interno della APK, ad esempio: android:icon="@android:drawable/sym_def_app_icon". Probabilmente era una buona idea in quel momento, chiediti quale strano bug stessero cercando di aggirare ?!


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

Aggiungilo a in AndroidManifest.xml.


Quindi la tua soluzione per risolvere il problema è disabilitare completamente Crashlytics?
JJJ
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.