“资源因配置而异”错误是什么意思?

时间:2016-11-21 17:59:48

标签: android android-studio

在Android Studio 2.2.2中,AndroidManifest.xml文件中有错误

  

Resources referenced from the manifest cannot vary by configuration

此消息上有其他人StackOverflow question,但答案仅描述了如何忽略它。我想知道的是这是什么意思?

与错误相关联的行

android:versionName="@string/appvername"

错误是什么意思,我该如何防止(不仅仅是忽略)它?在这种情况下,什么是“配置”?

1 个答案:

答案 0 :(得分:5)

  

什么是"配置"在这种情况下?

引用the documentation

  

您应该始终从应用程序代码中外部化图像和字符串等资源,以便您可以独立维护它们。外部化资源还允许您提供支持特定设备配置(如不同语言或屏幕大小)的备用资源,随着更多Android设备可用于不同配置,这些资源变得越来越重要。为了提供与不同配置的兼容性,您必须使用按类型和配置对资源进行分组的各种子目录来组织项目的res /目录中的资源。

因此,配置是设备功能和状态的混合,可控制加载的资源。例如,设备区域设置确定从可用字符串资源中使用哪些字符串。

  

我想知道的是什么意思?

并非清单中的每个属性都可以由资源填充,因为系统无法根据配置处理不同的值。

例如,您无法使用<activity>中的字符串资源更改android:name的Java类名称,并着眼于使用具有不同屏幕大小的不同Java类。虽然这是一个有趣的概念,但Android并未设置为支持它。

  

如何防止(不仅仅是忽略)它?

在这种情况下,我认为您遇到了IDE错误。 android:versionName应该支持字符串资源,因为这是面向用户的值,因此您可能希望翻译字符串。因此,将tools:ignore="ManifestResource"添加到<manifest>元素,直到the bug gets fixed