在AndroidManifest.xml中出现了"错误:不允许使用字符串类型(在'value'为'keyboard | keyboardHidden | orien...'的'configChanges'处)"。

7

首先声明,我是一个Android开发的新手,并且正在使用API 10(Gingerbread)。

我正在使用libgdx开发一款简单的游戏。但是在开始工作之前,我需要安装所有必要的软件包。而在AndroidManifest.xml文件中,有一行代码:

android:configChanges="keyboard|keyboardHidden|orientation|screenSize"

控制台中出现了以下错误:

error: Error: String types not allowed (at 'configChanges' with value 'keyboard|keyboardHidden|orientation|screenSize').

我在Stackoverflow上找到了这个答案,我将API更改为13,它可以工作...但我认为应该有比仅仅因为一行代码而使应用程序变得不兼容的更好的解决方案(仍有许多人在使用Gingerbread)。还有其他方法可以修复这个问题吗?

3个回答

5

按照以下方式配置您的libgdx Android清单,并指定最低目标sdk版本:

<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="19" />

您可以使用API 5作为最低Android版本,因为这是libgdx仍然支持的版本。不要困惑目标SDK版本的含义:这基本上意味着您已经针对最新的Android版本进行了测试,它并不意味着它不会在以前的版本上运行,因为您已经指定了一个较低的最小SDK版本。一般准则是将最小SDK尽可能设置得低,并将目标SDK设置得尽可能高。
以这种方式配置,您的游戏应该仍然可以在旧设备上运行,并且使用像这样的configChanges也可以运行。
 android:configChanges="keyboard|keyboardHidden|orientation|screenSize"

我最近刚刚推出了一个游戏,配置如此,即使在Gingerbread上也运行得很好 ;-)



1
我明白了,但是Eclipse仍然显示该行代码有错误,如果检测到任何错误,Eclipse将不允许我在API低于13的Android模拟器上运行游戏 :-( 不管怎样,这样可以吗? - yukatta
2
可能有点奇怪。也许在Eclipse中尝试清理和构建项目。 - donfuxx
抱歉耽搁了一下...那个完美地解决了问题!接受答案!谢谢 :-) - yukatta
1
也适用于Unity3D。将目标API级别设置为最大值解决了问题。 - user7436930

5
我花了三天时间(几乎破坏了我的婚姻),但我有一个不同的答案。它是隐藏的。我已经正确设置了minsdk和目标,那么为什么?因为有 | 。我把configChanges元素用 / 分隔开来,但这是不正确的。你必须用 | 分隔它们。但在手写中很难意识到这一点。所以,小心使用 |。
希望这个答案能帮到你!

3

刚刚浪费了很多时间,原因是:

问题来自于 - AAPT工具不允许在API级别低于24的情况下为configChanges设置密度值。

修复版本 - 2017.3.0b8、2018.1.0a1,并将被回溯到2017.2、2017.1和5.6的补丁版本中。

链接到Unity论坛

显然,这是在撰写本文时最新版本的Unity编辑器中的一个错误(2017.2.0f3)。它在AndroidManifest.xml中添加了“density”到configChanges,而这在Android 7.0以下的版本中是不支持的(API级别24)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接