web-dev-qa-db-ja.com

アプリ(22.0.0)とテストアプリ(21.0.3)の解決経済バージョンが異なる

API 22にアップグレードしてlibリビジョン22をサポートすると、次のような警告が表示されます。

警告:依存関係 'com.Android.support:support-annotations'と競合しています。アプリ(22.0.0)とテストアプリ(21.0.3)の解決バージョンは異なります。

Gradle自体はもっと寛容ですが、Android Studioはそれほど多くありません。

21.0.3で宣言されている依存関係がありません... 21.0.3を使用している依存ライブラリの1つで、Googleが残りのバッチで更新するのを忘れていますか?

私のbuild.gradleとエキストラのカット

Android {
  compileSdkVersion 22
  buildToolsVersion '22'

  defaultConfig {
    applicationId "com.REDACTED.Android"
    minSdkVersion 14
    targetSdkVersion 22
    renderscriptSupportModeEnabled true
    versionName '1.0.0'
    versionCode 100
  }

  buildTypes {
    release {
      minifyEnabled true
      zipAlignEnabled true
      signingConfig signingConfigs.release
    }

    debug {
      minifyEnabled false
      zipAlignEnabled true
      signingConfig signingConfigs.debug
    }
  }

  dependencies {
    provided 'org.projectlombok:lombok:1.16.2'
    googleCompile 'com.google.Android.gms:play-services-base:6.5.87'
    compile 'com.Android.support:support-v4:22.0.0'
    compile 'com.Android.support:appcompat-v7:22.0.0'
    compile 'com.Android.support:support-v13:22.0.0'
    compile 'com.Android.support:cardview-v7:22.0.0'
    compile 'com.Android.support:palette-v7:22.0.0'
    compile 'com.Android.support:support-annotations:22.0.0'
    compile 'com.github.chrisbanes.photoview:library:1.2.3'
    compile 'org.Apache.commons:commons-lang3:3.3.2'
    compile 'commons-io:commons-io:2.4'
    compile 'commons-codec:commons-codec:1.10'
    compile 'com.jakewharton:butterknife:6.1.0'
    compile 'com.jakewharton:disklrucache:2.0.2'
    compile 'com.squareup:otto:1.3.6'
    compile 'com.squareup.picasso:picasso:2.5.0'
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.squareup.okhttp:okhttp:2.2.0'
    compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
    compile 'com.squareup.okio:okio:1.2.0'
    compile 'com.flaviofaria:kenburnsview:1.0.6'
    compile 'com.edmodo:cropper:1.0.1'
    compile 'com.getbase:floatingactionbutton:1.8.0'
    compile 'com.nispok:snackbar:2.10.2'
    compile 'com.github.ksoichiro:Android-observablescrollview:1.5.0'
    compile 'in.srain.cube:grid-view-with-header-footer:1.0.9'
    compile 'de.hdodenhof:circleimageview:1.2.2'
    compile fileTree(dir: 'libs', include: '*.jar')
    // Test Only Dependencies
    androidTestCompile 'com.Android.support.test.espresso:espresso-core:2.0'
    androidTestCompile 'com.Android.support.test:testing-support-lib:0.1'
    androidTestCompile 'com.Android.support.test.espresso:espresso-contrib:2.0'
  }

更新:(Thanks Mark)

Espresso-contribのようです

+--- com.Android.support.test:testing-support-lib:0.1 (*)
\--- com.Android.support.test.espresso:espresso-contrib:2.0
     +--- com.Android.support:recyclerview-v7:21.0.3
     |    +--- com.Android.support:support-annotations:21.0.3
     |    \--- com.Android.support:support-v4:21.0.3
     |         \--- com.Android.support:support-annotations:21.0.3
     +--- com.Android.support:support-v4:21.0.3 (*)
     \--- com.Android.support.test.espresso:espresso-core:2.0 (*)
178
copolii

この種のことを扱うときのステップ#1は、コマンドラインGradleに慣れることです。

ステップ#2は、 Gradle依存関係レポート を実行することです(たとえば、プロジェクトルートのgradle -q app:dependencies)。これにより、質問への更新に示されているようにASCIIツリーが提供され、競合する成果物バージョンを求めているものを特定するのに役立ちます。

ステップ#3は何を置き換える必要があるかを決定することです。あなたは矛盾だけを置き換えることを選択しました(support-annotations)。個人的には、私は間違ったバージョンのツリーのルート(recyclerview-v7)を使っていたでしょう。

ステップ#4では、ステップ#3で選択したものをブロックするためにexcludeディレクティブを追加します。

androidTestCompile ('com.Android.support.test.espresso:espresso-contrib:2.0') {
    exclude module: 'support-annotations'
}

ステップ#5では、この変更の影響をテストします。 espresso-contribsupport-annotationsの22.0.0エディションを扱うために持っていると言っています。それはうまくいくかもしれません。そうではないかもしれません。それは競合の後方互換性に依存します。この場合、support-annotationsはそれについてかなり良いはずです。

ステップ#6は、あなたの選択した飲み物をあなたの居場所と時間帯に適したものを消費することです。

286
CommonsWare

私がそれを解決するためにしたのは私のbuild.gradleスクリプトに以下の行を追加することでした

androidTestCompile 'com.Android.support:support-annotations:xx.x.x'

xx.x.xをあなたのアプリが使用しているサポートアノテーションのバージョンに置き換えてください - これはあなたの依存関係に現れるでしょう、あるいはGradle同期メッセージは次のようになります:Resolved version for app (xx.x.x)は問題の同期があるべきです。

146
Renan Nery

実際にはそれはEspresso Contribの新しいアップデート版のバグです、あなたはこの回避策を参照することができます: Android-testing/build.gradle

configurations.all {
    resolutionStrategy.force 'com.Android.support:support-annotations:22.1.0'
}
58
bony

https://github.com/JakeWharton/u2020/blob/05a57bf43b9b61f16d32cbe8717af77cd608b0fb/build.gradle#L136-L140 を参照してください

configurations.all {
  resolutionStrategy {
    force 'com.Android.support:support-annotations:23.1.1'
  }
}

これで私の問題は解決しました。

あるいは、windowsでgradlewを実行し、mac/linuxで./gradlewを実行すると、必要に応じて依存関係をダウンロードできます。

23
maruti060385

私はまたこの問題とappcompatを含む他の衝突にも遭遇しました、そして私が見つけた解決策はテストコンパイルを追加してあなたが現在使用しているsdkにそれらを設定することでした。私の場合は25ですので、次のようになります。

androidTestCompile 'com.Android.support:support-annotations:25.+'
androidTestCompile 'com.Android.support:appcompat-v7:25.+'
androidTestCompile 'com.Android.support:support-v4:25.+'
androidTestCompile 'com.Android.support:recyclerview-v7:25.+'
androidTestCompile 'com.Android.support:design:25.+'

さらに、ご覧のとおり、Android Material Designに関連するデザイン依存関係を追加しました。

それが役立つことを願っています=)

8
gmartinsnull

sDKバージョン25用

     androidTestCompile 'com.Android.support:support-annotations:25.2.0'
8
dc10

あなたはwindowsでgradlewを、mac/linuxで./gradlewを実行することができます。これは必要な時にあなたの依存関係をダウンロードします。

ライブラリの1つがサポートアノテーションに依存しているかどうか、または任意のライブラリが誤って命名されているかどうかを確認し、それを次のような段階で除外してみてください

compile( "org.Apache.maven:maven-ant-tasks:$ {mavenAntTaskVer}}"){グループを除外: 'junit'}

エラー:依存関係 'junit:junit'と競合しています。アプリ(3.8.1)とテストアプリ(4.12)の解決バージョンは異なります。詳細はg.co/androidstudio/app-test-app-conflictを参照してください。

これは私が得ていたエラーだったので、私は問題を解決するために上の行の行を使用しました

3
maruti060385

Build.gradleファイルのこれらの行を削除するだけです。

androidTestImplementation 'com.Android.support.test:runner:1.0.2'
androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.2'
2

私は26.0.0と27.1.1でも同じ問題を抱えていましたが、実際には前者を後者にアップグレードするだけで動作します。

0
Weapon X

これは ここ で説明されているようにインストルメンテーションテストの一般的な問題であり、build.gradle内にandroidTestCompileの依存関係を追加することで簡単に解決できます。私の場合、appcompat、recyclerview、および設計の依存関係で競合が発生しました。次の行を追加して解決

    androidTestCompile 'com.Android.support:appcompat-v7:23.4.0'
    androidTestCompile 'com.Android.support:recyclerview-v7:23.4.0'
    androidTestCompile 'com.Android.support:design:23.4.0'
0
cammando