美文网首页
Android 7.0 以上字符串资源匹配策略

Android 7.0 以上字符串资源匹配策略

作者: Vic_wkx | 来源:发表于2021-12-01 11:29 被阅读0次

    关于 Android 7.0 以上的字符串资源匹配,官方文档 介绍如下:

    Android 7.0 以上资源匹配策略官方介绍

    笔者实测结果与官方介绍却有些出入。

    笔者定义了一个字符串,在 valuesvalues-envalues-en-rUSvalues-en-rCAvalues-ja 文件夹中均做了翻译:

    国际化

    Android 9.0 的设备上测试,设备的语言是 en-US,项目的设置是 minSdkVersion 26 + targetSdkVersion 30

    • 使用此字符串时,正确显示了 values-en-rUS 中的内容 English-US
    • 删掉 values-en-rUS 中的翻译后,正确显示了 values-en 中的内容 English
    • 删掉 values-en 中的翻译后,按照官方介绍,应该显示 values-en-rCA 中的内容,但实际显示了 values 中的内容 Default
    • 删掉 values 中的内容后,编译期直接报错: AAPT: error: resource string/test (aka com.example.myapplication:string/test) not found (在 xml 中使用时报的错)或Unresolved reference: test(在代码中使用时报的错)。

    根据实测结果,Android 9.0 上感觉还是采用的官方文档中介绍的 Android 7.0 以前的字符串匹配策略:

    Android 7.0 以前资源匹配策略官方介绍

    但我注意到官方文档中有这样一段话:

    Android 7.0(API 级别 24)可提供更稳健的资源解析,并自动查找更好的备用方法。不过,为了加速解析和提升可维护性,您应以最常用的母语存储资源。例如,如果您之前将西班牙语资源存储在 values-es-rUS 目录中,请将其移至包含拉丁美洲西班牙语的 values-b+es+419 目录中。同样,如果您在名为 values-en-rGB 的目录中存储有资源字符串,请将此目录重命名为 values-b+en+001(国际英语),因为 en-GB 字符串的最常用母语为 en-001。

    这让我不确定是否是文件夹命名问题导致的,但我暂不太理解 values-b+es+419values-b+en+001 这样的命名规则和含义在哪里有介绍,如果读者知晓,望不吝赐教。

    目前找到的资料是 419 来自于 维基百科-UN M49,代表 Americas

    相关文章

      网友评论

          本文标题:Android 7.0 以上字符串资源匹配策略

          本文链接:https://www.haomeiwen.com/subject/vlksxrtx.html