我最近更新了现有的Android项目以使用Android Studio,并且无法让它构建:
Execution failed for task ':mergeDebugResources'.
> Index: 0
经过一些实验后,我发现它在我们的源代码控制的隐藏目录,.arch-id中出现了窒息,这些目录存在于每个文件夹中。
我尝试使用exclude关键字操作build.gradle,但无济于事:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java {
srcDirs = ['src']
exclude '**/.arch-ids/*'
}
resources {
srcDirs 'src'
exclude '**/.arch-ids/*'
}
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res {
srcDirs = ['res']
}
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
'res'部分目前似乎是罪魁祸首,但它不支持'exclude'关键字。
答案 0 :(得分:4)
您可以尝试以下方式:
android {
...
sourceSets {
main {
...
res.srcDirs = ['build/filtered_resources']
...
}
...
}
然后使用过滤资源复制任务依赖:
task __filteredResources(type:Copy) {
from('res/') {
exclude '**/.arch-ids/*'
}
into 'build/filtered_resources'
includeEmptyDirs = true
}
tasks.whenTaskAdded { task ->
if (task.name == 'generateBuildConfig') {
task.dependsOn __filteredResources
}
}