EspressoをUIテスト用のアプリケーションに統合しようとしています。ここにGradleの私の依存関係があります
_dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.Android.support:appcompat-v7:22.2.0'
compile 'com.Android.support:design:22.2.1'
compile 'com.github.bumptech.glide:okhttp-integration:1.3.1@aar'
compile 'com.squareup.okhttp:okhttp:2.0.0'
compile 'de.hdodenhof:circleimageview:1.3.0'
compile 'com.Android.support:cardview-v7:21.+'
compile 'com.Android.support:recyclerview-v7:21.+'
androidTestCompile 'com.Android.support.test.espresso:espresso-core:2.2'
androidTestCompile 'com.Android.support.test.espresso:espresso-contrib:2.2'
compile 'com.Android.support:support-annotations:22.2.0'
androidTestCompile 'com.Android.support.test:runner:0.3'
compile project(':common')
compile project(':service')
}
_
つまり、すべてのエスプレッソ依存関係が含まれています。しかし、ビルドしようとすると、次のエラーが発生します。
Warning:Conflict with dependency 'com.Android.support:support-annotations'. Resolved versions for app (22.2.1) and test app (22.2.0) differ.
誰かがこれに遭遇しましたか?私はそれが here を報告しているのを見つけましたが、解決策はありません。誰かがこれを修正していますか?
何度も調べたところ、サポートアノテーションの依存関係を変更する必要があることがわかりました。
だから私は変更する必要がありましたcompile 'com.Android.support:support-annotations:22.2.0'
からandroidTestCompile 'com.Android.support:support-annotations:22.+'
新しいバージョンのespresso-contrib 2.2.2
ライブラリがcom.Android.support:appcompat-v7:23.1.1
に依存するようになり、異なるバージョンのappcompat-v7
を使用すると競合が発生する以下のようなcompile
時間依存性:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.Android.support:appcompat-v7:23.4.0'
androidTestCompile 'com.Android.support.test.espresso:espresso-contrib:2.2.2'
}
以下のようにappcompat-v7
からespresso-contrib
依存関係を除外する場合の競合を回避するために、design support
libに対するいくつかの値の依存関係により、再度依存します。
androidTestCompile ('com.Android.support.test.espresso:espresso-contrib:2.2.2'){
exclude module: 'support-annotations'
exclude module: 'support-v4'
exclude module: 'support-v13'
exclude module: 'recyclerview-v7'
exclude module: 'appcompat-v7'
}
エラー:
エラー:(69)アイテムの親の取得中にエラーが発生しました:指定された名前「TextAppearance.AppCompat.Display1」に一致するリソースが見つかりませんでした。
したがって、上記の問題の解決策は、以下のようにespresso-contrib
から 'design-support' lib依存性を除外することです:
androidTestCompile ('com.Android.support.test.espresso:espresso-contrib:2.2.2'){
exclude module: 'support-annotations'
exclude module: 'support-v4'
exclude module: 'support-v13'
exclude module: 'recyclerview-v7'
exclude module: 'design'
}
これで競合の問題が解決します!
答えのより詳細なバージョンについては、私の他の answer を確認できます
androidTest
依存関係の最新バージョンは、support-annotations
libの適切なバージョンによって異なります。私の場合は:
androidTestCompile 'com.Android.support.test:runner:0.4'
androidTestCompile 'com.Android.support.test:rules:0.4'
androidTestCompile 'com.Android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.Android.support.test.espresso:espresso-intents:2.2.1'
androidTestCompile 'org.mockito:mockito-core:2.0.31-beta'
また、回避策として、次のコードをbuild.gradle
、Android{}
セクションに追加できます。
configurations.all {
resolutionStrategy {
force 'com.Android.support:support-annotations:23.0.1'
}
}
Jake Wharton U2020アプリケーション では、次の方法で解決されます
あなたに追加gradle.build
ファイル
configurations.all {
resolutionStrategy {
force 'com.Android.support:support-annotations:23.0.1'
}
}
プロジェクトとテストアプリの間で同様の依存関係の競合が発生した後、Lリリース用に次のバージョンを組み合わせる必要がありました。
Android {
useLibrary 'org.Apache.http.legacy'
compileSdkVersion 23
buildToolsVersion '23.0.1'
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
}
}
dependencies {
compile 'com.Android.support:appcompat-v7:23.0.1'
compile 'com.Android.support:support-v4:23.0.1'
androidTestCompile 'com.Android.support.test:runner:0.4'
androidTestCompile 'com.Android.support.test:rules:0.4'
androidTestCompile 'com.Android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.Android.support.test.espresso:espresso-intents:2.2.1'
}
org.Apache.httpインポートを使用しているため、useLibraryが必要でした。参照 https://github.com/bitstadium/HockeySDK-Android/issues/8
問題は次のファイルにあります:Android-sdk\extras\Android\m2repository\com\Android\support\test\runner\0.3\runner-0.3.pom
ここに:
<dependency>
<groupId>com.Android.support</groupId>
<artifactId>support-annotations</artifactId>
<version>22.2.0</version>
<scope>compile</scope>
</dependency>
22.2.0の代わりに22.2.1を設定すると機能します
Googleのドキュメントに記載されているとおり: https://sites.google.com/a/Android.com/tools/tech-docs/new-build-system/user-guide#TOC-Resolving-conflicts-between -main-and-test-APK
解決する方法は、androidTestCompile
のサポートライブラリをプロジェクトで使用しているバージョンに明示的に設定することです。
たとえば、サポートライブラリバージョン25.0.1
を使用している場合は、
androidTestCompile 'com.Android.support:support-annotations:25.0.1'
build.gradle
構成
コンパイルを変更するだけですcom.Android.support:support-annotations:22.2.0
から23.0.1
2.2.1バージョンを使用する場合