Android清单和设备筛选故障排除
亚马逊应用商店使用您的应用清单来确定应用与Fire设备之间的兼容性。在开发者控制台中上传Android二进制文件时,“确定您应用的支持目标”屏幕会突出显示您的清单与所支持设备功能之间的不兼容情况。请参考此处的故障排除信息,深入了解与设备支持相关的任何错误消息。
如果计划更新二进制文件,则必须修复清单中的兼容性问题,才能保持当前的设备支持。如果不解决兼容性问题,就无法在标记的设备上使用您的应用。
本文介绍了常见的不兼容消息和可能的解决方案。 有关亚马逊应用商店清单筛选的更多信息,请参阅以下主题:
另请参阅上传应用二进制文件说明中的常见错误故障排除部分。
- 错误消息的显示位置
- APK不符合目标API要求
- android.hardware.touchscreen
- android.hardware.location
- android.hardware和android.software
- android.minSdkVersion和android.maxSdkVersion
- supports-screens
- screenSize和screenDensity
- android.glEsVersion
- supports-gl-texture
- CPU架构
错误消息的显示位置
您可以在“上传您的应用文件”屏幕上传Android二进制文件。在确定您应用的支持目标屏幕上的“支持的设备”部分,可以单击编辑支持的设备以查看特定设备是否支持您的二进制文件。如果不支持,它将呈灰色,无法选择。可以将鼠标悬停在信息工具提示上查看原因。示例如下:
上图示例显示的错误消息为“android:minSdkVersion = '25'; 设备需要'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._feature
或android.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”的说明增加屏幕支持,并相应地更新清单。
<compatible-screens>
。此元素可能会显著减少可供应用使用的设备数量,即亚马逊应用商店会筛选掉具有您未列出的屏幕配置的所有设备。只有在应用绝对不适用特定的屏幕尺寸/像素密度配置时,才建议使用此元素。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纹理格式的大小写和拼写与设备规范是否相符。
CPU架构
错误: CPU Architecture = '64-bit'; device requires '32-bit'
此消息表示您的二进制文件不包含目标设备支持的CPU架构。要以此32位设备为目标,请在来自armeabi-v7a和x86的二进制文件中加入必要的受支持CPU架构。
Last updated: 2024年7月15日