Android be-BY 语言的资源解析策略失败

Android Resource Resolution Strategy fails for be-BY language

我遇到过无法使用 android 资源解析策略的官方参考来解释的行为。我正在使用 Android 7.1.1.


我的应用有以下资源:

  1. 值-ru
  2. 值-ru-rBY
  3. 值-ru-rKZ

系统语言列表如下:

  1. be_BY
  2. kk_KZ

问题:根据Resource Resolution example,我预计应用程序配置区域设置 (Resources.Configuration.Locale) 将是 en - 默认区域设置。但令人惊讶的是 Android 保持 be_BY。 当这两种语言的顺序被恢复时(1. kk_KZ,2. be_BY),Android 将配置区域设置更改为 be_BY,尽管我的应用程序没有既没有 be_BY 也没有 kk_KZ 资源。在该应用程序引用 en 资源之后。

我将 values-be-rBY 和 values-kk-rKZ 文件夹添加到我的应用程序项目后,Android 已正确设置语言环境 - be_BY 语言列表

  1. be_BY
  2. kk_KZ

和 kk_KZ 语言列表

  1. kk_KZ
  2. be_BY

基于这个事实,我假设 Android 根据其指定资源设置应用程序语言环境,但这与描述的 问题

相矛盾

那么,我的问题是:我的理解正确吗?为什么会这样?

我终于明白了。我的应用使用 Google 具有 be_BY 本地化但没有 kk_KZ 本地化的 Play 服务。并且资源也被放入resources.arsc文件中。因此,在 Android 找不到 kk_KZ 资源之后,它会尝试下一种语言 - 在我的例子中是 be_BY 并在 be_BY 语言环境停止搜索。 我也在 Android Studio 演示应用程序中检查过这个,发现它的行为是一样的。所以,这似乎是一种本机行为。