android - 任务 'app:prepareDebugAndroidTestDependencies' 执行失败

标签 android android-studio android-gradle-plugin build.gradle ui-testing

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

    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'

}

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

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

谁能帮我找出问题所在?

最佳答案

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

  configurations.all {
    resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.1'
}

但是为什么会导致这样呢?

When instrumentation tests are run, both the main APK and test APK share the same classpath. Gradle build will fail if the main APK and the test APK use the same library (e.g. Guava) but in different versions. If gradle didn't catch that, your app could behave differently during tests and during normal run (including crashing in one of the cases).

To make the build succeed, just make sure both APKs use the same version. If the error is about an indirect dependency (a library you didn't mention in your build.gradle), just add a dependency for the newer version to the configuration ("compile" or "androidTestCompile") that needs it. You can also use Gradle's resolution strategy mechanism. You can inspect the dependency tree by running ./gradlew :app:dependencies and ./gradlew :app:androidDependencies.

关于android - 任务 'app:prepareDebugAndroidTestDependencies' 执行失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30558737/

相关文章:

android - 使用 Gradle 从 Artifactory 访问依赖项

android - 解决compileClasspath的依赖项时出错

java - 安卓工作室 : "Could not get unknown property ' VERSION_NAME' for project of type org. gradle.api.Project"

java - 通过传递 Activity 实例化自定义适配器

android - 在免提通话期间通过电话扬声器播放声音

android - Gradle 和 Android : obtain package ID from Android Library Project

android - 多个 Dex : in Build Config Files 的问题

android - 将lwjgl-opengles添加到Gradle时出错

java - 如何在 Android 中进行 UUEncode

android - `svn checkout` 失败,出现 “cannot run program” “cannot find the file specified” 错误