开发者控制台

Android清单和设备筛选故障排除

Android清单和设备筛选故障排除

亚马逊应用商店使用您的应用清单来确定应用与Fire设备之间的兼容性。在开发者控制台中上传Android二进制文件时,Target Your App(确定您应用的支持目标)屏幕会突出显示您的清单与所支持设备功能之间的不兼容情况。请参考此处的故障排除信息,深入了解与设备支持相关的任何错误消息。

如果计划更新二进制文件,则必须修复清单中的兼容性问题,才能保持当前的设备支持。如果不解决兼容性问题,就无法在标记的设备上使用您的应用。

本文介绍了常见的不兼容消息和可能的解决方案。 有关亚马逊应用商店清单筛选的更多信息,请参阅以下主题:

另请参阅上传应用二进制文件说明中的常见错误故障排除部分。

错误消息的显示位置

您可以在上传您的应用文件屏幕上传Android二进制文件。在Target Your App屏幕上的支持的设备部分,可以单击编辑支持的设备以查看特定设备是否支持您的二进制文件。如果不支持,它将呈灰色,无法选择。可以将鼠标悬停在信息工具提示上查看原因。示例如下:

“支持的设备”屏幕,其中鼠标指针位于设备的帮助图标上。鼠标悬停消息显示“Your APK manifest requires capabilities not present on this device”(您的APK清单需要此设备上不存在的功能)。android:minSdkVersion='25'; device requires '22'(android:minSdkVersion='25';设备需要'22')。

在此情况下,错误消息为android:minSdkVersion = '25'; device requires '22'。这意味着该APK要求API级别至少为25,但设备最高只支持API级别22。因此,设备上无法安装该APK。

以下各节介绍常见错误及其解决方案。

APK不符合目标API要求

此错误表示APK不符合目标API要求。您需要更新应用APK中的targetSdkVersion属性,以达到最低Android API级别要求。

有关更多信息,请参阅设备筛选和兼容性

android.hardware.touchscreen

错误:android.hardware.touchscreen

要让您的应用仅可供支持触摸屏的设备使用,则必须在清单中声明这一点。默认情况下,假定应用与非触摸屏设备(如Fire TV)兼容,并且应用可供您在开发者控制台中提交应用时选择的设备使用。要声明触摸屏为必需功能,请在清单中使用以下元素定义之一:

<uses-feature android:name="android.hardware.touchscreen" android:required="true" />
<uses-feature android:name="android.hardware.touchscreen" />

android.hardware.location

错误:android.hardware.location

如果清单包含ACCESS_FINE_LOCATION的权限,则此功能向清单中增加了两个隐含功能:

android.hardware.location  
android.hardware.location.gps

隐含功能是必需的,因此,二进制文件被视为与未提供这些功能的所有设备都不兼容。要允许这些设备,您需要在清单中明确包含隐含功能,并将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._featureandroid.software._feature

这些消息表明清单包含<uses-feature><uses-permission>元素,用于目标设备不支持的功能。 

如果希望您的应用可在出现此警告的设备上使用,请执行以下操作之一:  

  • 如果二进制文件实际上并不会使用相关功能,请从清单中移除违规的<uses-feature><uses-permission>元素。
  • 如果二进制文件会使用相关功能,但并不严格要求使用这些功能(即您的应用测试了这些功能,但在没有这些功能时会禁用这些功能),则添加或调整<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>元素与设备支持的元素之间没有任何重叠。亚马逊应用商店会应用Android规范中所述的设备筛选条件,您可以在 <compatible-screens>中找到相应的Android规范。要支持该设备,请按照“size”和“density”的说明增加屏幕支持,并相应地更新清单。

android.glEsVersion

错误:android.glEsVersion = "X"; device requires "Y"

该消息表明,二进制文件指定了目标设备不支持的OpenGL ES版本。若要支持该设备,请参考正确OpenGL ES版本的参考文档,并相应地更新清单。

supports-gl-texture

错误: No supported supports-gl-texture formats in manifest

该消息表明,在清单中指定的OpenGL纹理压缩格式与目标设备支持的格式之间没有重叠。支持的纹理压缩格式的详细信息可以在<supports-gl-texture>中找到。 要支持该设备,请添加对兼容纹理格式的支持,然后相应地更新清单。此外,检查清单中OpenGL纹理格式的大小写和拼写与设备规范是否相符。


Last updated: 2023年10月2日