Android / Gradle:包含从一种口味到另一种口味的几个文件?

时间:2015-09-06 06:24:48

标签: android android-gradle

我有三个BuildTypes发布,调试&定制。我想在自定义Build中保留少量文件。 buildTypes允许我使用'custom.initWith'保留发布中的所有内容。 sourceSets有类似的东西吗?

buildTypes {
        release { // release stuff}
        debug { // debug stuff}
        custom.initWith(buildTypes.release)
        custom { // custom stuff }
               }
sourceSets {
        main.setRoot('src/main')
        release.setRoot('build-types/release')
        debug.setRoot('build-types/debug')
        custom.setRoot( //Want to include some files from 'build-types/release' 
                          and all files from 'build-types/custom')

这可以通过Android中的Gradle实现吗?

setRoot允许我只包含'build-types / custom'。 可以将“build-types / release”文件夹中的所需文件添加到“build-types / custom”。这有一个缺点。

  1. 发布和自定义文件夹中的重复文件。
  2. 此外,如果我们修改版本中的内容需要在自定义中进行修改。
  3. 其他问题仅对Resources文件有特定需求。 Android Flavors : Multiple java and src directories for each flavor。我想共享其他文件夹中的文件,其中包含res,assets,java和&清单。

1 个答案:

答案 0 :(得分:1)

您可以通过

行中的脚本包含多个文件夹中的资源
sourceSets {
    custom.manifest.srcFile 'AndroidManifest.xml'
    custom.java.srcDirs = ['src/commonFiles/java']
    custom.resources.srcDirs = ['src/commonFiles/java']
    custom.aidl.srcDirs = ['src/commonFiles/java']
    custom.renderscript.srcDirs = ['src/commonFiles/java']
    custom.assets.srcDirs = ['assets']
    custom.res.srcDirs = ['src/custom/res', src/main/res']
}

或者将custom放在自己的块中:

sourceSets {
    custom {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src/commonFiles/java']
        resources.srcDirs = ['src/commonFiles/java']
        aidl.srcDirs = ['src/commonFiles/java']
        renderscript.srcDirs = ['src/commonFiles/java']
        assets.srcDirs = ['assets']
        res.srcDirs = ['src/custom/res', src/main/res']
    }
}

另见Resource Merging