任务'app:prepareDebugAndroidTestDependencies'的执行失败

alm*_*inh 4 android ui-testing android-studio build.gradle android-gradle-plugin

我正在尝试在Android Studio中为我的Android应用程序构建UI测试.问题是我无法运行它们.我收到消息:任务'app:prepareDebugAndroidTestDependencies'的执行失败,我无法找到它的内容.当我运行我的应用程序时,它启动完美,但当我尝试运行测试时,它会显示上述消息.我的build.gradle在下面是lsited:

    apply plugin: 'com.android.application'
    android {
compileSdkVersion 22
buildToolsVersion "22.0.0"

defaultConfig {
    applicationId "ba.etf.pkks.eldaralmin.libraryapp"
    minSdkVersion 15
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

repositories {
mavenCentral()

maven {
    url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/"
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.android.support:support-v4:22.0.0'
compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+'
// Supports Android 4.0.3 and later (API level 15)
compile 'com.embarkmobile:zxing-android-minimal:2.0.0@aar'

// Supports Android 2.1 and later (API level 7), but not optimal for later Android versions.
// If you only plan on supporting Android 4.0.3 and up, you don't need to include this.
compile 'com.embarkmobile:zxing-android-legacy:2.0.0@aar'

// Convenience library to launch the scanning and encoding Activities.
// It automatically picks the best scanning library from the above two, depending on the
// Android version and what is available.
compile 'com.embarkmobile:zxing-android-integration:2.0.0@aar'

// Version 3.0.x of zxing core contains some code that is not compatible on Android 2.2 and earlier.
// This mostly affects encoding, but you should test if you plan to support these versions.
// Older versions e.g. 2.2 may also work if you need support for older Android versions.
compile 'com.google.zxing:core:3.0.1'
compile 'com.nononsenseapps:filepicker:2.1'
compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
compile 'com.google.code.gson:gson:1.7.2'
androidTestCompile 'com.android.support.test:runner:0.2'
androidTestCompile 'com.android.support.test:rules:0.2'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.1'

}
Run Code Online (Sandbox Code Playgroud)

我的测试运行/调试配置如下图所示:

http://pokit.org/get/?5b2509c64e5049b1b168c99b95313d5e.jpg

任何人都可以帮我找出问题所在?

小智 7

在您的应用中build.gradle添加以下内容android { }:

  configurations.all {
    resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.1'
}
Run Code Online (Sandbox Code Playgroud)

但为什么会导致这样的?

运行检测测试时,主APK和测试APK共享相同的类路径.如果主APK和测试APK使用相同的库(例如Guava)但是在不同版本中,Gradle构建将失败.如果gradle没有捕获到,那么您的应用程序在测试期间和正常运行期间可能会有不同的行为(包括其中一个案例中的崩溃).

要使构建成功,只需确保两个APK使用相同的版本.如果错误是关于间接依赖项(您在build.gradle中未提及的库),则只需将新版本的依赖项添加到需要它的配置("compile"或"androidTestCompile")中.您还可以使用Gradle的解决策略机制.您可以通过运行./gradlew:app:dependencies和./gradlew:app:androidDependencies来检查依赖关系树.