排除Android清单和设备筛选故障
亚马逊应用商店使用您的应用清单来确定应用与Fire设备之间的兼容性。当您在亚马逊应用商店中上传APK时,“APK文件”选项卡突出显示清单与您所针对设备功能之间的不兼容情况。使用此处的故障排除信息更好地了解与设备支持相关的任何错误消息。
如果您计划更新APK,则必须修复清单中的兼容性问题以便维护当前的设备支持。如果未解决兼容性问题,则无法在标记的设备中使用您的应用。
本文介绍了常见的不兼容消息和可能的解决方案。 有关应用商店清单筛选的更多信息,请参阅以下主题:
另请参阅上传APK说明中的故障排除部分。
- 出现错误消息时
- android.hardware.touchscreen
- android.hardware.location
- android.hardware和android.software
- android.minSdkVersion和android.maxSdkVersion
- supports-screens
- screenSize和screenDensity
- android.glEsVersion
- supports-gl-texture
出现错误消息时
使用“上传APK文件”选项卡将APK上传到应用商店。如果您在“设备支持”部分单击查看设备支持或修改设备支持链接,则会看到特定设备是否支持您的APK。如果不支持,您会看到设备旁边有个X或者设备灰显。您可以将鼠标悬停在信息工具提示上查看原因。示例如下:

在这种情况下,错误消息为android:minSdkVersion = '22'; device requires '15'
。这意味着您的APK要求API级别至少为22,但设备最高只支持API级别15。因此,设备上无法安装或支持您的APK。
以下各节介绍常见错误及其解决方案。
android.hardware.touchscreen
错误:android.hardware.touchscreen
除非另外明确定义,否则认为所有Android APK均支持触摸屏。此消息表明您的清单仅针对具有触摸屏的设备,因此与非触摸屏设备(例如Fire TV)不兼容。如果您希望在没有触摸屏的设备中可以使用您的应用,则必须在您的清单中添加以下元素,以明确声明不需要触摸屏:
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
android.hardware.location
错误:android.hardware.location
如果您的清单包含ACCESS_FINE_LOCATION
的权限,则此功能向清单中增加了两个隐含功能:
android.hardware.location
android.hardware.location.gps
隐含功能是必需的,因此,APK被视为与未提供这些功能的所有设备都不兼容。要允许这些设备,您需要在清单中明确包含隐含功能,并将android:required
属性设置为false
:
<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
有关更多信息,请参阅隐含功能。
android.hardware和android.software
错误:android.hardware._feature
或android.software._feature
这些消息表明您的清单包含<uses-feature>
或<uses-permission>
元素,用于目标设备不支持的功能。
如果您希望您的应用在出现此警告的设备上可用,请执行以下操作之一:
- 如果您的APK实际上并不会使用相关功能,请从清单中移除违规的
<uses-feature>
或<uses-permission>
元素。 - 如果您的APK会使用相关功能,但并不严格要求使用这些功能(即您的应用测试了这些功能,但在没有这些功能时会禁用这些功能),则添加或调整
<uses-feature>
元素,以便包含属性android:required="false"
。 - 如果您的应用严格要求使用这些功能,以便顺利定向设备,您应更改代码,以禁止该应用在不具备该功能的设备上运行。在测试您的更改后,修改清单以在适当的
<uses-feature>
元素中添加android: required = false
。 有关检测功能的更多信息,请参阅Android文档中的getSystemAvailableFeatures。
android.minSdkVersion和android.maxSdkVersion
错误:android.minSdkVersion = "X"; device requires "Y"
错误:android.maxSdkVersion = "X"; device requires "Y"
这些消息表明,在<uses-sdk>
元素中指定的一系列Android API级别不包括目标设备当前支持的Android API级别 ("Y")。 如果您打算定向到该设备,请调整Android API范围以包括相应的级别(“Y”)。有关各种亚马逊Fire设备的Android和亚马逊API级别,请参阅平板电脑设备规格和Fire TV设备规格。
supports-screens
错误:supports-screens = "X"; device requires "size" (and/or "width")
该消息表明,在<supported-screens>
元素中定义的屏幕尺寸和/或最小宽度与设备支持的值之间没有任何重叠。应用商店会应用<compatible-screens>
中所述的设备筛选条件。若要定向到该设备,请按照“size”和“width”的说明增加屏幕支持,并相应地更新清单。
screenSize和screenDensity
错误: No supported screenSize and screenDensity pair in manifest; device requires "size" and "density"
该消息表明,在<compatible-screens>
元素中指定的<screen>
元素与设备支持的元素之间没有任何重叠。应用商店会应用[<compatible-screens>
] (http://developer.android.com/guide/topics/manifest/supports-screens-element.html)中的Android规范所述的设备筛选条件。若要定向到该设备,请按照“size”和“density”的说明增加屏幕支持,并相应地更新清单。
<compatible-screens>
。使用此元素会显著减少可供您的应用使用的设备数量,即应用商店会筛选掉具有您未列出屏幕配置的所有设备。只有在应用绝对不适用特定的屏幕尺寸/像素密度配置时,才建议使用此元素。android.glEsVersion
错误:android.glEsVersion = "X"; device requires "Y"
该消息表明,您的APK指定了目标设备不支持的OpenGL ES版本。若要定向到该设备,请参考正确OpenGL ES版本的适当参考文档,并相应地更新清单。
supports-gl-texture
错误: No supported supports-gl-texture formats in manifest
该消息表明,在清单中指定的OpenGL纹理压缩格式与目标设备支持的格式之间没有重叠。支持的纹理压缩格式的详细信息可以在<supports-gl-texture>
中找到。 若要定向到该设备,请添加对兼容纹理格式的支持,然后相应地更新清单。此外,检查清单中OpenGL纹理格式的大小写和拼写与设备规范是否相符。