我有一个android库gradle项目。我需要将一些文件复制到资源文件夹以进行robolectric单元测试。
要做到这一点,我已经定义了一个复制任务:
task copyDebugAssets(type: Copy) {
from "${projectDir}/somewhere"
into "${buildDir}/intermediates/bundles/debug/assets"
}
但我无法将此任务添加为processDebugResources
任务的依赖项:
processDebugResources.dependsOn copyDebugAssets
因为这个错误:
无法获取未知属性' processDebugResources'对于com.android.build.gradle.LibraryExtension类型的对象。
现在我必须在单元测试之前手动执行此任务:
./gradlew clean copyDebugAssets test
我该如何解决?
答案 0 :(得分:3)
android插件动态添加了几个任务。您的.dependsOn
行无效,因为在Gradle尝试处理此行时,processDebugResources
任务尚未可用。一旦上游任务可用,您应该告诉gradle添加依赖项:
tasks.whenTaskAdded { task ->
if (task.name == 'processDebugResources') {
task.dependsOn copyDebugAssets
}
}
答案 1 :(得分:3)
为什么要复制?配置应从哪里提取资产:
android {
// other cool stuff here
sourceSets {
androidTest {
assets.srcDirs = ['../testAssets']
}
}
}
(将../testAssets
替换为资产来源的路径)
我已成功使用androidTest
进行仪器测试。 AFAIK,它应该适用于test
或任何其他来源集。