如何忽略Android build.gradle中的隐藏目录

时间:2013-07-03 17:18:24

标签: android gradle build.gradle

我最近更新了现有的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'关键字。

1 个答案:

答案 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
    }
}