我正在尝试使用Android Build系统中的resConfig和resConfigs。
- Android Studio版本为1.2.2
- Gradle构建版本为1.2.3
- OSX 10.10.3
我的项目在使用这两个选项时遇到了问题,所以我在Android Studio中新建了一个空白项目。我在build.gradle文件中添加了resConfigs "en"、"fr"。
android {
defaultConfig {
...
resConfigs "en", "fr"
...
}
}
并定义了两种基本口味
productFlavors {
fr {
resConfig "fr"
}
en {
resConfig "en"
}
}
我随后创建了2个strings.xml文件并翻译了hello_world默认标签。
/src/main/res/values/strings.xml(默认)
/src/main/res/values-en/strings.xml
/src/main/res/values-fr/strings.xml
这样,我希望在MyApplication/app/builds/intermediates/res/en/debug中只看到3个值文件夹,因为我已经在resConfigs中定义了仅使用“en”和“fr”并过滤其他任何内容。
/values/
/values-en/
/values-fr/
虽然所有语言的values文件夹仍然在那里,所以resConfigs显然没有过滤任何内容。
当我运行enDebug flavor变体时,我还期望从values-en中看到hello_world标签,因为我指定了flavor en将使用resConfig“en”,但是当我运行测试应用程序时,我看到的标签来自于/values-fr/strings.xml而不是/values-en/strings.xml,因为平板电脑的语言设置为法语加拿大。
我是否误解了resConfig的目的?如果是这样,我该如何强制一个flavor仅在一种语言中运行并且不依赖于操作系统的区域设置?此解决方案必须与flavorDimensions兼容,因为我在尝试配置的实际应用程序中使用它们。
注意:因为我认为这个resConfig行为确实存在问题,所以我也提交了一个bug报告https://code.google.com/p/android/issues/detail?id=180694
谢谢
Activity
的构造函数中设置值,这在Android组件初始化中有点反模式。您是否曾经遇到过使用此方法时出现崩溃或错误的情况? - patrickjason91