Android studio 升级到Gradle 3.3后缺少翻译错误

Android studio 升级到Gradle 3.3后缺少翻译错误,android-studio,build,localization,android-gradle-plugin,lint,Android Studio,Build,Localization,Android Gradle Plugin,Lint,升级到Gradle 3.3后,由于缺少翻译错误,我在构建代码时遇到了问题: 错误:xxx没有翻译成“af”(南非荷兰语)、“am”(阿姆哈拉语)、“ar”(阿拉伯语)、“az”(阿塞拜疆语)、“az-az”(阿塞拜疆语)、“be”(白俄罗斯语)、“bg”(保加利亚语)、“ca”(加泰罗尼亚语)、[…]、“zh-TW”(中文:台湾)、“zu”(祖鲁语)[漏译] 报告的大多数语言都是我的项目中包含的第三方模块支持的语言,现在它似乎为整个项目定义了支持的语言,这给了我一个没有翻译成上述语言的所有字符串

升级到Gradle 3.3后,由于缺少翻译错误,我在构建代码时遇到了问题:

错误:xxx没有翻译成“af”(南非荷兰语)、“am”(阿姆哈拉语)、“ar”(阿拉伯语)、“az”(阿塞拜疆语)、“az-az”(阿塞拜疆语)、“be”(白俄罗斯语)、“bg”(保加利亚语)、“ca”(加泰罗尼亚语)、[…]、“zh-TW”(中文:台湾)、“zu”(祖鲁语)[漏译]

报告的大多数语言都是我的项目中包含的第三方模块支持的语言,现在它似乎为整个项目定义了支持的语言,这给了我一个没有翻译成上述语言的所有字符串的错误。在升级到Gradle 3.3之前,这不会导致任何问题

我考虑了以下解决办法:

  • 从其他模块中删除多余的翻译。我希望避免这种情况,因为这些模块是外部的,不必要地修改它们会真正损害我的项目的可维护性
  • 禁用“不完整翻译”皮棉检查-这是针对类似问题的最常见建议。这是次优的,因为我想知道代码中缺少的翻译(目前正在工作)。除此之外,禁用检查并不能消除错误
  • 在build.gradle中定义受支持的配置,如中所述。我喜欢这个选项(指定语言而不是依赖模块中可用的翻译),但它也会产生一些奇怪的现象:对于标记为
    translateable=false
    的字符串,我发现缺少翻译错误

  • 现在,我再次降级到以前的Gradle版本。但修复这些生成错误的最佳方法是什么?

    在build.gradle中添加以下代码

    lintOptions {
        disable 'MissingTranslation'
    }
    

    我检查了一下情况,希望在几个月前我发布这个问题后,可能会有一些更正

    这些问题似乎是在Gradle插件2.3.0中引入的,而不是我在问题中提出的Gradle 3.3本身。降级插件可以避免错误,但很难成为长期解决方案

    我发现问题中的选项3是处理它的最佳方式:将此添加到应用程序的build.gradle:

    android {
        defaultConfig {
            ...
            resConfigs "en", "fr"
        }
    }
    
    这在中进行了描述,如前所述,也在中进行了描述。它将删除所有不必要的资源以及警告/错误

    引用文件:

    Gradle资源收缩器仅删除应用程序代码未引用的资源,这意味着它不会删除不同设备配置的替代资源。如有必要,您可以使用Android Gradle插件的重新配置属性删除应用程序不需要的替代资源文件

    例如,如果您正在使用包含语言的库 资源(如AppCompat或Google Play服务),然后是您的APK 包括这些文件中消息的所有翻译语言字符串 库是否将应用程序的其余部分转换为相同的 语言与否。如果你只想保留你的 应用程序正式支持,您可以使用 重新配置属性。未指定语言的任何资源都将被删除 删除


    我得到的“误报”(不可翻译字符串缺少翻译错误)是针对在多个模块中定义的字符串。重命名字符串或为其提供翻译解决了问题。这似乎也是Gradle插件2.3.0引入的。

    谢谢。但你不同意我的问题中提到的解决方案2,阻止所有(包括合法)警告吗?我同意。我只是发布了代码来禁用它,因为我遇到了同样的问题。