web-dev-qa-db-ja.com

警告:依存関係 'com.Android.support:support-annotations'との競合

私は本のほとんどすべてのトリックを試しました。

  • ResolutionStrategy.force
  • モジュールを除外する

しかし、何もうまくいかないようです。以下は私のbuild.gradleです。 Gradleバージョン1.2.3を使用しています。誰かが私のコードで他に間違っている可能性があるものに光を当ててください。

私が試したことがないのは、Gradleのバージョンを変更することだけです。非常に基本的なエスプレッソテストケースです。ありがとう!

apply plugin: 'com.Android.application'
Android {
    configurations.all {
        resolutionStrategy.force 'com.Android.support:support-annotations:22.1.0'
    }
    compileSdkVersion 22
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.example.rasika.job"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}
repositories {
    mavenCentral()
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.Android.support:appcompat-v7:22.1.1'

    testCompile 'junit:junit:4.12'

    androidTestCompile 'com.Android.support.test:runner:0.3'
    androidTestCompile 'com.Android.support.test:rules:0.3'
    androidTestCompile 'com.Android.support.test.espresso:espresso-core:2.2'
    androidTestCompile 'com.Android.support.test.uiautomator:uiautomator-v18:2.1.1'
    androidTestCompile 'com.Android.support.test.espresso:espresso-contrib:2.0'
}
37
Mabad

Android-topeka google sample を分岐し、appcompatバージョンを23.1.0に更新しました。同じメッセージ:

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

追加した:

androidTestCompile 'com.Android.support:support-annotations:23.1.0'

両方とも23.1.0に解決され、警告はなくなり、アプリとテストは引き続き機能します。

私はそれがより良い解決策であるかどうか確信がないので、私は別のものを探していますが、あなたの質問を見つけました。

更新:読む PaulRによるこの良い説明

Update2:確認済み Android-testing google sample 確認済み.

// Testing-only dependencies
// Force usage of support annotations in the test app, since it is internally used by the runner module.
androidTestCompile 'com.Android.support:support-annotations:23.0.1'

Update3CommonsWareによる別の良い応答

以下を使用して、特定のバージョン/競合/解像度を確認します。

./gradlew -q yourmodule:dependencies

enter image description here

Appcompatは22.1.1ですが、22.1.0を強制しています。

Update4:The Android Build System(Android Dev Summit 2015) で説明されている依存関係の競合。

enter image description here

メインAPKとテストAPKの競合の解決

インストルメンテーションテストを実行すると、メインAPKとテストAPKの両方が同じクラスパスを共有します。メインAPKとテストAPKが同じライブラリ(例:Guava)を使用しているが、バージョンが異なる場合、Gradleビルドは失敗します。 gradleがそれをキャッチしなかった場合、テスト中と通常の実行中にアプリの動作が異なる可能性があります(いずれかのケースでのクラッシュを含む)。

ビルドを成功させるには、両方のAPKが同じバージョンを使用していることを確認してください。 エラーが間接的な依存関係に関するものである場合(build.gradleで言及していないライブラリ)、新しいバージョンの依存関係を追加するだけです( "compile"または "androidTestCompile")が必要です。Gradleの解決戦略メカニズムを使用することもできます。 ./gradlew:app:dependenciesおよび./gradlew:app:androidDependenciesを実行して、依存関係ツリーを検査できます。

52
albodelu

依存関係を追加して競合を解決しました。

androidTestCompile 'com.Android.support:support-annotations:23.2.0'
26
Andrey

私はこれで解決した同じ問題を抱えていました:

// build.gradle
...
Android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }
}

dependencies {
    ...
    androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2') {
        // Necessary if your app targets Marshmallow (since Espresso
        // hasn't moved to Marshmallow yet)
        exclude group: 'com.Android.support', module: 'support-annotations'
    }
    androidTestCompile('com.Android.support.test:runner:0.3') {
        // Necessary if your app targets Marshmallow (since the test runner
        // hasn't moved to Marshmallow yet)
        exclude group: 'com.Android.support', module: 'support-annotations'
    }
}

ここで解決策が見つかりました: https://github.com/codepath/Android_guides/wiki/UI-Testing-with-Espresso

更新:最終的に私のbuild.gradleの依存関係ブロックは次のようになります:

dependencies {
    ...        
    compile 'com.Android.support:appcompat-v7:23.2.1'
    compile 'com.Android.support:support-v4:23.2.1'
    compile 'com.Android.support:design:23.2.1'
    ...     

    // Necessary if your app targets Marshmallow (since Espresso
    // hasn't moved to Marshmallow yet)
    androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test.espresso:espresso-intents:2.2.2') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test:runner:0.5') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test:rules:0.5') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test.espresso:espresso-contrib:2.2.2') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support:support-annotations:23.2.1') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test.uiautomator:uiautomator-v18:2.1.2') {
        exclude group: 'com.Android.support'
    }
}
15
Dmitry

これは最近、uiautomatorを追加したときに起こりました。この問題を解決するには、古いモジュールを使用している依存関係を特定する必要があります。これを行うには、各androidTestCompile依存関係をブロックにラップします。

androidTestCompile ('com.Android.support.test.espresso:espresso-core:2.2') {
    transitive = false;
}

これはmightでも他のことを壊すので、注意する必要があります。依存関係のうち2つがこの問題を引き起こしていることを正確に特定でき、それらにこのブロッキングメカニズムを追加するだけでした。

7
Phil

ランナーとエスプレッソコアの両方の依存関係からサポート注釈ライブラリを除外することで、競合を解決しました。

androidTestCompile 'com.Android.support.test:runner:0.5',{
        exclude group: 'com.Android.support', module: 'support-annotations'
}
androidTestCompile ('com.Android.support.test.espresso:espresso-core:2.2.2'){
        exclude group: 'com.Android.support', module: 'support-annotations'
}

これをメインのbuild.gradleに追加します。

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

Build.gradleファイルの依存関係ブロックにフォローコードを追加します

compile 'com.Android.support:support-annotations:23.2.1'
testCompile 'com.Android.support:support-annotations:23.2.1'
androidTestCompile 'com.Android.support:support-annotations:23.2.1'
3
TeeTracker

依存関係を追加して競合を解決しました。

compile 'com.Android.support:appcompat-v7:23.2.1'
 compile 'com.Android.support:design:23.2.1'
...
 androidTestCompile 'com.Android.support:support-annotations:23.2.1'
1
ayac3j

私にとってこれはうまくいきました

dependencies {

    androidTestCompile 'com.Android.support:support-annotations:23.1.1'
}
1
erluxman

androidTestCompileをtest Compileに変更します。コンパイルするように変更するのではなく、この依存関係をデバッグAPKまたはテストAPKにコンパイルする必要があることを思い出してください。

1
Rocko

依存関係を追加して競合を解決しました。

androidTestCompile "com.Android.support:support-annotations:26.0.0-beta1"
0
Devix

と言って問題にもなった

解決できませんでした

com.Android.support:support-annotations:23.1.0

他のサーバーで見つけようとしました、

しかし、私の問題を解決したのは追加することです:

google-service.json 

からのファイル

https://developers.google.com/mobile/add

コピーして貼り付けます

YourAndroidProject/app 

それからそれを再コンパイルし、あなたのコードが飛ぶことを願っています

0
erluxman

これを使用して競合を解決します

androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.Android.support', module: 'support-annotations'
})
0
Rahul Yadav