在使用gradle构建特定的Android产品风味时,我可以排除区域资源(例如values-fr)

时间:2014-09-11 15:29:10

标签: android gradle android-gradle

说我有这个目录结构:

app
--src
   |--main
   |   |--java
   |   |--res
   |       |--drawable
   |       |--values
   |       |--values-fr
   |       |--values-de
   |
   |--flavor1
   |   |--res
   |       |--drawable
   |
   |--flavor2
   |   |--res
   |       |--drawable
   |
   |--flavor3
       |--res
           |--drawable

values-frflavor1flavor2都很常见,因此valuesvalues-frvalues-de应该打包

flavor3应该只打包valuesvalues-de。因此,我只需要从values-fr排除flavor3资源文件夹。

我已经尝试了很多组合,例如下面的组合,但无法弄明白,或者即使它可能。

sourceSets {
    flavor3 {
        res.exclude 'values-fr/**'
        res.exclude 'values-fr/'
    }
}

修改

我使用以下内容为包含以上示例找到了这个解决方案:

productFlavors {
    flavour3 {
        resConfigs 'de' // include '-de' resources, along with default 'values'
    }
}

您还可以查看ICU here的国家/地区代码列表。

2 个答案:

答案 0 :(得分:2)

最终的解决方案是包含一种语言 - 在这种情况下,只有德语(de):

productFlavors {
    flavour3 {
        resConfigs 'de' // include '-de' resources, along with default 'values'
    }
}

作为参考,您还可以查看ICU here的国家/地区代码列表。

答案 1 :(得分:0)

您可以使用此代码段排除这些文件夹:

sourceSets {
  flavor3 {
    main {
      resources {
        srcDir 'res'
        exclude '**/values-fr/**'
      }
    }
  }
}