web-dev-qa-db-ja.com

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

私はしばらくの間、最新の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)
101
xialin

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

[...]

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'
22
gw0

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

debug {
    ext.enableCrashlytics = false
}

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

96
i906

私はこれをgradleでコメントアウトしました

apply plugin: 'io.fabric'

コメントを外すために必要

または、お持ちでない場合は追加してください!

27
MobileMon

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

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

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

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

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

示されているように、デバッグ中に無効化機能を使用している場合

 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 {}}の下

13
Sidhanth Sur

プラグインの更新後も同じ問題が発生しました。 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" />
13
Sergei K

Crashlyticsのマイクはこちら。この動作の修正を含むアップデートバージョン1.15.2を本日出荷しました。実行する場合:

./gradlew assemble --refresh-dependencies

最新バージョンが取り込まれます。また、詳細を参照することもできます 修正の詳細はこちら

11
Mike Bonnell

修正-公式 ソース から

デバッグビルドの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 St​​udio/IntelliJ自動インポートを使用すると非常に簡単です。

インポートしました

import com.crashlytics.Android.core.BuildConfig;

自分の代わりに

import <package_name>.BuildConfig;

4
nmw

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

4
Hieu Rocker

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

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

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

3
Rahul Rastogi

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

1
Yuriy Yunikov

Crashyliticsを修正したアプリケーションアイコンの削除、なんてこと?

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

これを理解しようとして1時間も無駄にしました。コンテキストを与えられたアプリケーションのリソースを取得するために、context.packageNameの代わりにアプリケーションアイコンのパッケージ名を読むことは良い考えだと誰かが思ったことがわかりました。このメソッドで行われます:

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

APK内にないアイコンを使用した場合、これは明らかに爆発します(例:Android:icon="@Android:drawable/sym_def_app_icon")。おそらく当時は良いアイデアだったでしょう、彼らはどの奇妙なバグを回避しようとしていたのでしょうか?!

0
TWiStErRob

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

    debug {
        ext.enableCrashlytics = false
    }

代わりに使用

    debug {
        ext.enableCrashlytics = true
    }
0
Sagar

返信が遅れているかもしれません。しかし、これは上記のすべての答えとは別のもう一つの理由から起こる可能性があります

追加し忘れた場合

apply plugin:'io.fabric'

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

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

0
Kumar Utkarsh

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

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

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

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

compile 'com.crashlytics.Android:crashlytics:1.1.13'
0
David M