自从升级到Gradle 3.3后,由于缺少翻译错误,我无法构建代码:
错误:xxx未翻译成“af”(南非荷兰语),“am”(阿姆哈拉语),“ar”(阿拉伯语),“az”(阿塞拜疆语),“az-AZ”(阿塞拜疆语:阿塞拜疆语),是“(白俄罗斯语),”bg“(保加利亚语),”ca“(加泰罗尼亚语),[...],”zh-TW“(中文:台湾),”zu“(祖鲁语)[MissingTranslation]
大多数报告的语言都是我的项目中包含的第三方模块支持的语言,现在它似乎定义了整个项目支持的语言,给出了所有未翻译的字符串的这种错误进入上述语言。在升级到Gradle 3.3之前,这没有造成任何问题。
我考虑了以下解决方案:
translatable = false
的字符串的翻译错误。目前,我正在降级到之前的Gradle版本。但修复这些构建错误的最佳方法是什么?
答案 0 :(得分:1)
希望自几个月前我发布这个问题以来可能有更正,我检查了情况。
似乎问题是Gradle插件2.3.0引入的,而不是我在问题中建议的Gradle 3.3本身。降级插件避免了错误,但很难成为长期解决方案。
我发现问题中的选项3是处理它的最佳方法:将其添加到应用程序的build.gradle:
android {
defaultConfig {
...
resConfigs "en", "fr"
}
}
这在[{3}}中有描述,如上所述,也在Googles documentation中。它会删除所有不必要的资源 - 以及警告/错误。
引用文档:
Gradle资源缩减器仅删除应用程序代码未引用的资源,这意味着它不会删除不同设备配置的备用资源。如有必要,您可以使用Android Gradle插件的resConfigs属性删除您的应用不需要的备用资源文件。
例如,如果您使用的是包含语言的库 资源(如AppCompat或Google Play服务),然后是您的APK 包括那些中的消息的所有翻译语言字符串 库是否将您应用的其余部分翻译为相同的 语言与否。如果您只想保留您的语言 app正式支持,你可以使用指定那些语言 resConfig属性。未指定语言的任何资源都是 除去。
我得到的“误报”(缺少不可翻译字符串的翻译错误)是针对在多个模块中定义的字符串。重命名字符串或为它们提供翻译解决了这个问题。这也似乎是Gradle插件2.3.0引入的。
答案 1 :(得分:0)
In build.gradle add below code
lintOptions {
disable 'MissingTranslation'
}