我最近更新了一个现有的 Android 项目以使用 Android Studio,但无法构建它:
Execution failed for task ':mergeDebugResources'.
> Index: 0
经过一些实验,我发现它被我们的源代码管理的隐藏目录 .arch-ids 阻塞了,这些目录存在于每个文件夹中。
我尝试使用排除关键字操作 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”关键字。
最佳答案
您可以尝试以下操作:
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
}
}
关于android - 如何忽略Android build.gradle中的隐藏目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17454346/