使用构建任务运行时,Android connectedCheck任务会失败,但单独运行时则不会

时间:2015-01-13 00:55:03

标签: android gradle

$ ./gradlew clean build connectedCheck

产量

Unable to find instrumentation target package: my.package

com.android.builder.testing.ConnectedDevice > hasTests FAILED
No tests found.
:app:connectedAndroidTest FAILED

,而

$ ./gradlew clean check connectedCheck

结果

...
:app:connectedAndroidTest

BUILD SUCCESSFUL

我的设置唯一独特之处在于我有一个纯java模块,它使用android构建工具Gradle插件在Android应用旁边使用'java' Gradle插件:

project
- core (pure java)
- app (com.android.application)

并且app项目对核心项目的工件具有编译时依赖性:

# app/build.gradle
depenedencies { 
    compile project(':core') 
}

我使用构建工具 21.1.2 和sdk工具 24.0.2

修改

我忘了提到我做了一个不那么普通的步骤,即重命名apk的输出文件:

android.applicationVariants.all { variant ->
    def apkVariant = variant.outputs[0]
    def outputFile = apkVariant.outputFile
    def versionName = android.defaultConfig.versionName
    def newName = outputFile.getName().replace(".apk", "-${versionName}.apk")
    apkVariant.outputFile = file("${outputFile.parentFile}/newName")
}

删除此代码可解决此问题。 但是,我想知道原因。

1 个答案:

答案 0 :(得分:0)

重命名逻辑中存在拼写错误。

def newName = outputFile.getName().replace(".apk", "-${versionName}.apk")
apkVariant.outputFile = file("${outputFile.parentFile}/newName")

我忘记了'$'。它应该是:

apkVariant.outputFile = file("${outputFile.parentFile}/$newName")

由于拼写错误,所有应用程序变体共享相同的输出文件,我的测试apk被构建中的下一个变体覆盖。