我可以帮您翻译为中文:在使用Gradle构建特定的Android产品口味时,我可以排除区域资源(例如values-fr)吗?

7
说我有这个目录结构:
app
--src
   |--main
   |   |--java
   |   |--res
   |       |--drawable
   |       |--values
   |       |--values-fr
   |       |--values-de
   |
   |--flavor1
   |   |--res
   |       |--drawable
   |
   |--flavor2
   |   |--res
   |       |--drawable
   |
   |--flavor3
       |--res
           |--drawable

“values-fr”是“flavor1”和“flavor2”共用的,因此应打包“values”、“values-fr”和“values-de”。
“flavor3”只需要打包“values”和“values-de”。因此,我需要仅在“flavor3”中排除“values-fr”资源文件夹。
我已尝试了许多组合,例如下面这些,但无法弄清楚是否可能。
sourceSets {
    flavor3 {
        res.exclude 'values-fr/**'
        res.exclude 'values-fr/'
    }
}

编辑

我找到了一个可行的解决方案,仅在上述示例中包含德语,使用以下方法:

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

您也可以从ICU的这里检查国家代码列表。
2个回答

3
最终的解决方案是包含一种语言 - 在这种情况下,只有德语(de):
productFlavors {
    flavour3 {
        resConfigs 'de' // include '-de' resources, along with default 'values'
    }
}

作为参考,您还可以从ICU 这里 检查国家代码列表。

0

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

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

很抱歉,即使使用res也似乎不起作用。 - Fifer Sheep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接