1. ホーム
  2. android

[解決済み] com.android.supportのライブラリは全て全く同じバージョン表記である必要があります。

2022-01-26 03:58:08

質問事項

android studio 2.3にアップデートしたら、このエラーメッセージが表示されました。 アプリは正常に動作しているので、単なるヒントだとは思うのですが、本当に不思議です。

com.android.support ライブラリは、すべて完全に同じバージョン仕様を使用する必要があります(バージョンが混在するとランタイムクラッシュにつながる可能性があります)。例えば、com.android.support:animate-vector-drawable:25.1.1 や com.android.support:mediarouter-v7:24.0.0 があります。

私のgradleです。

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'
}

解決方法は?

以下のいずれかの方法で解決することができます。

更新する。

Android Studio 3.0では、より親切なヒントが表示されるようになったので、このヒントに従うだけで、より簡単にできるようになりました。
例えば

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つは Androidサポートライブラリのバージョンと異なるバージョンでコンパイルした場合 最新バージョンよりも低いバージョン(特に targetSdkVersion)

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

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

ie: 2番目の項目からライブラリを取り出し、1番目の項目からバージョン番号を指定して実装します。

注意: 今すぐsyncを押して、gradleが依存関係グラフを再構築し、さらに競合があるかどうかを確認することを忘れないでください。

説明します。
を使用しないため、エラーメッセージに戸惑うかもしれません。 customtabs というわけで、どうやったらコンフリクトするんだ!
直接は使っていませんが、ライブラリのひとつが古いバージョンの customtabs を内部で使っているので、直接お願いする必要があります。

もし、どのライブラリが古いバージョンに対応しているかを知り、作者にライブラリの更新を依頼したい場合は、Gradleの依存性レポートを実行する必要があります。

注意事項


古い回答です。

インスパイアード コモンズウェアの回答 :

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

そこから、どのライブラリが異なるバージョンのAndroid Supportライブラリを要求しているかがわかります。 要求しているものが何であれ、あなたはそれを直接 25.2.0 バージョン、または Gradle の他の競合解決アプローチを使って、同じバージョンを取得します。


更新してください。

gradleプラグインバージョン:3.0現在 compile に置き換えられました。 implementation または api 見る この回答 は、その違いについて。

ということで、代わりに使ってください。

./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.0com.google.android.gms:play-services-maps:10.2.0 というのも、私が使っているのはこの2つのプレイサービスだけだからです。

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


AS 3.0より古いバージョンの場合。

実行します。

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

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


新しいgradleプラグインでより良い方法を知っている人がいたら教えてください。