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

Fif*_*eep 7 android gradle android-gradle-plugin

说我有这个目录结构:

app
--src
   |--main
   |   |--java
   |   |--res
   |       |--drawable
   |       |--values
   |       |--values-fr
   |       |--values-de
   |
   |--flavor1
   |   |--res
   |       |--drawable
   |
   |--flavor2
   |   |--res
   |       |--drawable
   |
   |--flavor3
       |--res
           |--drawable
Run Code Online (Sandbox Code Playgroud)

values-fr是两个常见的flavor1flavor2,等等values,values-frvalues-de应该得到打包

flavor3应该只打包valuesvalues-de.所以我需要values-frflavor3唯一的资源文件夹中排除.

我尝试了很多组合,如下面的那些,但无法弄明白,或者即使它是可能的.

sourceSets {
    flavor3 {
        res.exclude 'values-fr/**'
        res.exclude 'values-fr/'
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑

我发现这个工作解决方案只包含德语用于上面的例子:

productFlavors {
    flavour3 {
        resConfigs 'de' // include '-de' resources, along with default 'values'
    }
}
Run Code Online (Sandbox Code Playgroud)

您还可以在此处查看 ICU的国家/地区代码列表.

Fif*_*eep 3

最终的工作解决方案是包含一种语言 - 在本例中,仅包含德语 (de):

productFlavors {
    flavour3 {
        resConfigs 'de' // include '-de' resources, along with default 'values'
    }
}
Run Code Online (Sandbox Code Playgroud)

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