すべてのcom.android.supportライブラリは、まったく同じバージョン仕様を使用する必要があります。質問する

すべてのcom.android.supportライブラリは、まったく同じバージョン仕様を使用する必要があります。質問する

Android Studio 2.3 にアップデートした後、このエラー メッセージが表示されました。アプリは正常に動作しているので、これは単なるヒントだとはわかっていますが、本当に奇妙です。

すべての com.android.support ライブラリは、まったく同じバージョン仕様を使用する必要があります (バージョンを混在させると、ランタイム クラッシュが発生する可能性があります)。バージョン 25.1.1、24.0.0 が見つかりました。例としては、com.android.support:animated-vector-drawable:25.1.1 や com.android.support:mediarouter-v7:24.0.0 などがあります。

ここに画像の説明を入力してください

私のグレード:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'

    compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support:support-v4:25.1.1'
    compile 'com.android.support:design:25.1.1'
    compile 'com.android.support:recyclerview-v7:25.1.1'
    compile 'com.android.support:cardview-v7:25.1.1'
    compile 'com.google.android.gms:play-services-maps:10.2.0'
    compile 'com.google.android.gms:play-services:10.2.0'

    compile 'io.reactivex.rxjava2:rxjava:2.0.1'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.jakewharton:butterknife:8.4.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'com.blankj:utilcode:1.3.6'
    compile 'com.orhanobut:logger:1.15'
    compile 'com.facebook.stetho:stetho:1.4.2'

    provided 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.5'

    compile 'com.mikepenz:iconics-core:2.8.2@aar'
    compile('com.mikepenz:materialdrawer:5.8.1@aar') { transitive = true }
    compile 'com.mikepenz:google-material-typeface:2.2.0.3.original@aar'
    compile 'me.zhanghai.android.materialprogressbar:library:1.3.0'
    compile 'com.github.GrenderG:Toasty:1.1.1'
    compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.8.0'
    compile 'com.github.MAXDeliveryNG:slideview:1.0.0'

    compile 'com.facebook.fresco:fresco:1.0.1'
    compile 'com.github.bumptech.glide:glide:3.7.0'

    compile 'com.google.maps.android:android-maps-utils:0.4.4'
    compile 'com.github.jd-alexander:library:1.1.0'
}

ベストアンサー1

この問題は、次のいずれかの解決策で解決できます。

アップデート:

Android Studio 3.0 では、より役立つヒントが表示されるようになったため、このヒントに従うだけで済むようになり、作業がはるかに簡単になりました。
例: 1]1

すべての com.android.support ライブラリは、まったく同じバージョン仕様を使用する必要があります (バージョンを混在させると、実行時にクラッシュする可能性があります)。バージョン 27.0.2、26.1.0 が見つかりました。例としては、com.android.support:animated-vector-drawable:27.0.2 や com.android.support:customtabs:26.1.0 などがあります。

ライブラリ、またはツールとライブラリの組み合わせの中には、互換性がないものや、バグの原因になるものがあります。そのような非互換性の 1 つは、最新バージョンではない (具体的には、targetSdkVersion よりも低いバージョン) Android サポート ライブラリを使用してコンパイルすることです。

解決策:
古いバージョンだが新しいバージョン番号を持つライブラリを明示的に追加します。
私の場合はcom.android.support:customtabs:26.1.0、以下を追加する必要があります。

(Kotlin ビルド スクリプト)

implementation("com.android.support:customtabs:27.0.2")

(Groovy ビルド スクリプト)

implementation "com.android.support:customtabs:27.0.2"  

つまり、2 番目の項目からライブラリを取得し、最初の項目のバージョン番号を使用して実装します。

注: Gradle が依存関係グラフを再構築し、競合が他にないか確認できるように、今すぐ同期を押すことを忘れないでください。

説明: 「使用しないでください」というエラー メッセージが表示されて、どうして競合が発生するのかと
混乱されるかもしれません。直接使用していないのに、ライブラリの 1 つが内部で の古いバージョンを使用しているため、直接要求する必要があります。customtabs
customtabs

どのライブラリが古いバージョンの原因であるかを知りたい場合、作成者にライブラリを更新するように依頼するには、Gradle 依存関係レポートを実行し、方法については古い回答を参照してください。

これに注意してください


アップデート:

gradleプラグインバージョン3.0以降はcompileimplementationまたはapiを参照してください。この答え違いについては。

したがって、Mac、Linux、PowerShell では代わりに以下を使用します。

./gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

または Windows の場合、cmd:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

競合するバージョンを検索します。

私の場合、削除するとエラーは消えましたcom.google.android.gms:play-services:10.2.0

私が使用しているプレイサービスは と のみであるため、これらcom.google.android.gms:play-services-location:10.2.0を含めます。com.google.android.gms:play-services-maps:10.2.0

gms:play-servicesサポート ライブラリの古いコンポーネントに依存していると思われるため、自分で明示的に追加する必要があります。


AS 3.0 以前用。

走る:

./gradlew -q dependencies <module-name>:dependencies --configuration implementation

例:

./gradlew -q dependencies app:dependencies --configuration implementation

古い回答:

に触発されたCommonsWareの回答:

Gradle 依存関係レポートを実行して、依存関係の完全なツリーを確認します。

そこから、どのライブラリが Android サポート ライブラリの異なるバージョンを要求しているかがわかります。要求されているものが何であれ、25.2.0 バージョンで直接要求するか、Gradle の他の競合解決方法を使用して同じバージョンを取得できます。


新しい Gradle プラグインでもっと良い方法をご存知の方がいらっしゃいましたら、お知らせください。

おすすめ記事