このCrashlyticsMissingDependencyExceptionを修正するにはどうすればよいですか?


104

しばらくの間、最新のCrashlytics(Fabric統合)を使用しています。しかし、Crashlyticsの構成については何も変更していませんが、最近、依存関係がないために次のクラッシュエラーが発生しました。

何か案が?

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)

以下の回答で述べたように、現在修正に取り組んでいますが、1.14.4を使用しても問題は解決します。
マイクボンネル、2015

私は、Android Studioカップルのファブリックの時間をアンインストールしてインストールしようとしています。ASは、正気を取り戻すために数回再起動する必要があります。
ロバート

回答:


22

(私のように)アプリを本当に公開する必要がある場合、現時点での唯一の回避策は、動的バージョン番号を静的バージョン番号に変更することです。

[...]

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

[...]

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

[...]

編集:

Fabric SDKの更新バージョンが公開されました。この行を次のように変更すると、取得できます。

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

1
どういう意味かhttps://maven.fabric.io/repohttps://maven.fabric.io/public
わかり


96

Fabric / Crashlyticsを実際にインストールする前に、次のコードを追加しました。

debug {
    ext.enableCrashlytics = false
}

Crashlyticsで最初に実行する前にこれを削除すると、問題が解決しました。最初の実行後、問題は発生しなくなりました。


2
1.20.1と2.5.2@aarで同じ問題が発生します。しかし、ビルドごとにビルドワークスペースがリセットされるため、CIでこの回避策を使用することはできません:(
Hieu Rocker

1
私はファブリックのエンジニアと協力しています。さまざまなタイムゾーンが原因で、すでに2週間近くかかりました。まだ解決策はまだありません。しかし、CIで回避策を試すことができます:./gradlew clean Assemble、次に./gradlew Assemble、2番目のコマンドで生成されたapkは通常どおり機能します。
Hieu Rocker

3
@ThuyTrinhは、dataBinding = trueが原因であることがわかりました。Crashlyticsはそれのために修正をロールアウトしました:twittercommunity.com/t/...
ヒエウロッカー

1
今日ファブリックプラグインを更新し、このエラーが発生しました。回避策は役立ちますが、その後の実行では機能しません。だから私は実行のためにこの行をコメントする必要があります。
Ernest

1
それは私のために働いていませんcom.crashlytics.sdk.android:crashlytics:2.6.8@aar
Tas

27

これをgradleでコメントアウトさせました

apply plugin: 'io.fabric'

コメントを外す必要がありました

または、それがない場合は追加してください!


14

プラグインのバージョンを次のように指定するようです:

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

問題のある1.15.1をピックアップします。

以前のメジャーとマイナーを指定1.14すると、安定しているようです:

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

13

プラグインを更新した後、同じ問題が発生しました。AndroidManifest.xmlから削除する必要性を解決するには:

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

そして、fabric.propertiesに追加します。

apiSecret=API_SECRET_KEY
apiKey=YOUR_SECRET_KEY

更新:

今、あなたは使用する必要があります:

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

1
彼らの統合ガイドラインは時代遅れのようです。どうやら、fabric.propertiesはもう必要ないようですが<meta-data android:name="io.fabric.ApiKey" android:value="YOUR_API_KEY"/>、AMファイルには必要です。名前が「com.crashlytics.ApiKey」から「io.fabric.ApiKey」に変更されました。
Thuy Trinh、2015

1
はい、その通りです。それは重要です。投稿を更新しました。ありがとうございました。
Sergei K

13

次のようにデバッグ中に無効化機能を使用している場合

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

crashlyticsのバージョンを更新するとどうなりますか。

Fabric.with(this, crashlyticsKit); 

になっています

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

そのため、必ずcrashlyticskitに戻してください。これを正しく行ってもエラーが表示される場合は、

debug {

      ext.enableCrashlytics = false
 }

Androidの{buildtypes {}}の下


11

Crashlyticsのマイクはこちら。本日以前に、この動作の修正を含む更新バージョン1.15.2を出荷しました。実行すると:

./gradlew assemble --refresh-dependencies

それは最新バージョンを取り込みます。修正の詳細については、こちらもご覧ください


1
CrashlyticsだけでFabric統合を使用しておらず、CrashlyticsMissingDependencyExceptionも発生しています。どうすれば対処できますか?
ボグミル2015

@bogumilはbuild.gradleの一部を含めることができますか?
マイクボンネル、2015

2
@MikeBしばらくすると、再びCrashlyticsMissingDependencyExceptionが発生します。私が使用しています:dependency {classpath 'com.android.tools.build:gradle:1.2.3' classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.16.0'}および 'com.crashlytics.androidをコンパイルします:crashlytics:1.1.13 '
ボグミル

うーん、非常に奇妙な@bogumil。更新依存関係の実行は役立ちますか?
Mike Bonnell、2015年

@MikeBそれは助けにはなりません。また、support @にメールを送信しました。必要に応じて、詳細を送信できます。
ボグミル

5

公式ソースからの修正

デバッグビルドのCrashlyticsを無効にする

デバッグビルドにCrashlyticsクラッシュレポートやベータ版の配布が必要ない場合は、次の2つの手順でプラグインを完全に無効にすることで、デバッグビルドを安全にスピードアップできます。

まず、これをアプリのbuild.gradleに追加します。

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

次に、実行時にCrashlyticsキットを無効にします。それ以外の場合、Crashlyticsキットは次のエラーをスローします。

com.crashlytics.android.core.CrashlyticsMissingDependencyException:

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

次のコードを使用する場合のみ、デバッグビルドの実行時にキットを無効にできます。

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

この問題は、誤ってCrashlytics BuildConfigを含めた場合にも発生します-Android Studio / IntelliJ自動インポートを使用すると非常に簡単です。

輸入した

import com.crashlytics.android.core.BuildConfig;

私の代わりに

import <package_name>.BuildConfig;


4

私にとってはそれが理由でしたdataBinding = true。ファブリックグラドルプラグインを1.21.0にアップグレードすると、問題が修正されました:https ://twittercommunity.com/t/fabric-gradle-plugin-1-21-0-add-support-for-android-databinding-true/57474


素晴らしい点-これはそのエラーのより新しいバージョンです。1.21.0または1.21.1を使用すると役立ちます。
Mike Bonnell

3

私の場合、他のすべてのモジュール(アプリを含む)の依存関係として追加された「CommonLib」モジュールでファブリックを使用していました。なので、ブロックapply plugin: 'io.fabric'後に追加しましたbuildscript {}。そこで、2つのプラグインを一緒に配置しました。

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

そして問題が解決しました!


1

必ずapply plugin: 'io.fabric'アプリケーションプロジェクトに追加してくださいbuild.gradle。私の場合、と共通点build.gradleがありましたapply plugin: 'io.fabric'。アプリケーションプロジェクトに移動すると、問題は解決しました。


0

これが他の誰かを助ける場合、Crashlyticsをファブリックにアップグレードするときに同様の問題がありました。私の場合、プラグインはCrashlyticsから2行残しましたが、機能する前に手動で削除する必要がありました。

Gradleファイルで、buildscriptの依存関係の下で、手動で削除する必要がありました。

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

また、依存関係の下で、私は手動で削除する必要がありました:

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

0

build.gradleファイルでcrashlyticsが無効になっているかどうかを確認する

    debug {
        ext.enableCrashlytics = false
    }

代わりに

    debug {
        ext.enableCrashlytics = true
    }

0

返事が遅くなるかもしれません。しかし、これは上記のすべての回答とは別に、もう1つの理由で発生する可能性があります

追加に失敗した場合

apply plugin:'io.fabric'

これは奇妙に見えるかもしれませんが、同じ問題が発生します

これは、デフォルトで、サインアップしてIDEを使用して[Fabric]ウィンドウからコードを追加したときにファブリックによって追加されますが、誤って削除される可能性があります。


0

アプリケーションアイコンを削除すると、Crashyliticsは修正されました。

オンボーディングチュートリアルに基づいて、最新バージョンを使用して、すべてを実行しました。

これを理解しようとするだけで1時間無駄になりました。context.packageNameコンテキストを指定してアプリケーションのリソースを取得するのではなく、アプリケーションアイコンのパッケージ名を読むことをお勧めします。このメソッドで行われます:

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

たとえば、APK内にないアイコンを使用すると、これは明らかに失敗しますandroid:icon="@android:drawable/sym_def_app_icon"。おそらく、彼らが回避しようとした奇妙なバグは何だったのだろうと思いました。


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

それをに追加しAndroidManifest.xmlます。


問題を解決するためのあなたの解決策はCrashlyticsを完全に無効にすることですか?
JJJ 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.