私は本のほとんどすべてのトリックを試しました。
しかし、何もうまくいかないようです。以下は私の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'
}
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'
Update3: CommonsWareによる別の良い応答 。
以下を使用して、特定のバージョン/競合/解像度を確認します。
./gradlew -q yourmodule:dependencies
Appcompatは22.1.1ですが、22.1.0を強制しています。
Update4:The Android Build System(Android Dev Summit 2015) で説明されている依存関係の競合。
インストルメンテーションテストを実行すると、メインAPKとテストAPKの両方が同じクラスパスを共有します。メインAPKとテストAPKが同じライブラリ(例:Guava)を使用しているが、バージョンが異なる場合、Gradleビルドは失敗します。 gradleがそれをキャッチしなかった場合、テスト中と通常の実行中にアプリの動作が異なる可能性があります(いずれかのケースでのクラッシュを含む)。
ビルドを成功させるには、両方のAPKが同じバージョンを使用していることを確認してください。 エラーが間接的な依存関係に関するものである場合(build.gradleで言及していないライブラリ)、新しいバージョンの依存関係を追加するだけです( "compile"または "androidTestCompile")が必要です。Gradleの解決戦略メカニズムを使用することもできます。 ./gradlew:app:dependenciesおよび./gradlew:app:androidDependenciesを実行して、依存関係ツリーを検査できます。
依存関係を追加して競合を解決しました。
androidTestCompile 'com.Android.support:support-annotations:23.2.0'
私はこれで解決した同じ問題を抱えていました:
// 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'
}
}
これは最近、uiautomatorを追加したときに起こりました。この問題を解決するには、古いモジュールを使用している依存関係を特定する必要があります。これを行うには、各androidTestCompile依存関係をブロックにラップします。
androidTestCompile ('com.Android.support.test.espresso:espresso-core:2.2') {
transitive = false;
}
これはmightでも他のことを壊すので、注意する必要があります。依存関係のうち2つがこの問題を引き起こしていることを正確に特定でき、それらにこのブロッキングメカニズムを追加するだけでした。
ランナーとエスプレッソコアの両方の依存関係からサポート注釈ライブラリを除外することで、競合を解決しました。
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'
}
...
}
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'
依存関係を追加して競合を解決しました。
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'
私にとってこれはうまくいきました
dependencies {
androidTestCompile 'com.Android.support:support-annotations:23.1.1'
}
androidTestCompileをtest Compileに変更します。コンパイルするように変更するのではなく、この依存関係をデバッグAPKまたはテストAPKにコンパイルする必要があることを思い出してください。
依存関係を追加して競合を解決しました。
androidTestCompile "com.Android.support:support-annotations:26.0.0-beta1"
と言って問題にもなった
解決できませんでした
com.Android.support:support-annotations:23.1.0
他のサーバーで見つけようとしました、
しかし、私の問題を解決したのは追加することです:
google-service.json
からのファイル
https://developers.google.com/mobile/add
コピーして貼り付けます
YourAndroidProject/app
それからそれを再コンパイルし、あなたのコードが飛ぶことを願っています
これを使用して競合を解決します
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.Android.support', module: 'support-annotations'
})