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

如何忽略Android build.gradle中的隐藏目录,android,gradle,build.gradle,Android,Gradle,Build.gradle,我最近更新了一个现有的Android项目,以使用Android Studio,但未能将其构建: Execution failed for task ':mergeDebugResources'. > Index: 0 经过一些实验,我发现它阻塞了源代码管理的隐藏目录,.arch id,它们存在于每个文件夹中 我尝试使用exclude关键字操纵build.gradle,但没有成功: sourceSets { main { manifest.srcFile 'Andr

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

您可以尝试以下方法:

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 {
    ...
    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
    }
}