亚马逊应用商店支持的清单筛选条件

亚马逊应用商店支持的清单筛选条件

您可以在AndroidManifest.xml文件中使用以下元素,来控制在亚马逊应用商店中对Fire设备和非亚马逊设备的筛选。您可以使用可用筛选条件的任意组合。有关适用于Fire设备的清单元素的详细信息,请参阅设备筛选和兼容性

安卓API级别的uses-sdk

应用商店使用此元素来根据minSdkVersionmaxSdkVersion值筛选设备。可以在安卓文档的<uses-sdk>中找到有关<uses-sdk>的更多文档。

硬件权限uses-permission

清单权限通常用于授予或限制对特定API和服务的访问权限。<uses-permission>中提供了完整的清单权限列表。清单权限还可用于定义硬件要求。如果您在清单中指定硬件权限,亚马逊应用商店会假定您的应用程序需要底层硬件并筛选掉任何不符合要求的设备。

例如,值为android.permission.ACCESS_FINE_LOCATION<uses-permission>意味着存在硬件要求android.hardware.location.gps,并且应用商店将筛选掉任何不具备GPS硬件的设备。为android.hardware.location.gps添加<uses-feature>元素并将android:require设置为false时,会覆盖GPS的隐式要求。

隐含功能要求的权限中提供了导致隐含功能的完整权限列表。

类别 硬件权限 描述
蓝牙 android.permission.BLUETOOTH 允许应用程序连接到配对的蓝牙设备。
相机 android.permission.CAMERA 对于访问相机设备是必需的。
位置 android.permission.ALLOW_MOCK_LOCATION 允许将模拟位置和位置提供商状态注入LocationManager以便进行测试。位置和状态值会覆盖网络、GPS或其他位置提供商生成的实际位置和状态信息。
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS 允许应用程序访问额外的位置提供商命令
android.permission.INSTALL_LOCATION_PROVIDER 允许应用程序在位置管理器中安装位置提供商。
android.permission.ACCESS_COARSE_LOCATION 允许应用程序访问大概位置。 
android.permission.ACCESS_FINE_LOCATION 允许应用程序访问精确位置。 
麦克风 android.permission.RECORD_AUDIO 允许应用程序录音。 
Wi-Fi android.permission.ACCESS_WIFI_STATE 允许应用程序访问有关Wi-Fi网络的信息。 
android.permission.CHANGE_WIFI_STATE 允许应用程序更改Wi-Fi连接状态。 
android.permission.CHANGE_WIFI_MULTICAST_STATE 允许应用程序更改Wi-Fi多播状态。

硬件和软件功能uses-feature

下面列出了应用商店支持的硬件和软件功能。有关属性、描述和筛选规则,请参阅本页面

如上所述,子功能默认情况下设置为必需(这被称为隐式权限)。要覆盖这些权限,请为每个子权限添加一个<uses-feature>元素,并将required设置为false

例如,如果您的清单包含以下条目:

<uses-permission android:name="android.permission.CAMERA" />

您还应添加以下两个条目:

<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
类别 功能 描述
音频 android.hardware.audio.low_latency 该应用程序使用设备上的低延迟音频管道,对于声音输入或输出的任何延迟或落后非常敏感。
蓝牙 android.hardware.bluetooth 该应用程序使用设备中的蓝牙无线功能。
android.hardware.bluetooth_le 该应用程序使用设备中的蓝牙低功耗无线功能。
相机 android.hardware.camera 该应用程序使用设备摄像头。如果设备支持多个摄像头,则应用程序使用后置摄像头。
android.hardware.camera.any 该应用程序使用至少一个朝向任何方向的摄像头,或者使用外部摄像头设备(如果已连接)。如果后置摄像头不是必需的,则优先使用此项而不是“android.hardware.camera”。 
android.camera.external 该应用程序使用外部摄像头设备(如果已连接)。
android.hardware.camera.autofocus 子功能。该应用程序使用设备摄像头的自动对焦功能。注意:除非使用android:required="false"声明,否则此子功能隐式声明android.hardware.camera父功能。此外,如果您将父功能设置为必需功能,则此子功能默认情况下是必需的。
android.hardware.camera.flash 子功能。该应用程序使用设备摄像头的闪光灯。注意:除非使用android:required="false"声明,否则此子功能隐式声明android.hardware.camera父功能。此外,如果您将父功能设置为必需功能,则此子功能默认情况下是必需的。
android.hardware.camera.front 子功能。该应用程序使用设备上的前置摄像头。注意:除非使用 android:required="false"声明,否则此子功能隐式声明 android.hardware.camera 父功能。此外,如果您将父功能设置为必需功能,则此子功能默认情况下是必需的。
动态墙纸 android.software.live_wallpaper 该应用程序使用或提供动态墙纸,应仅安装在支持动态墙纸的设备上。
位置 android.hardware.location 该应用程序使用设备上的一个或多个功能来确定位置,如GPS位置、网络位置或蜂窝定位。
android.hardware.location.network 子功能。该应用程序使用从设备上支持的基于网络的地理位置系统获取的粗糙位置坐标。注意:除非使用android:required="false"声明,否则此子功能隐式声明android.hardware.location父功能。
android.hardware.location.gps 子功能。该应用程序使用从设备上的全球定位系统接收器获取的精确位置坐标。注意:除非使用android:required="false"声明,否则此子功能隐式声明android.hardware.location父功能。
麦克风 android.hardware.microphone 该应用程序使用设备上的麦克风。 
NFC android.hardware.nfc 该应用程序使用设备上的近场通信无线电功能。
android.hardware.nfc.hce 该应用程序使用设备上的 NFC 卡模拟功能。
传感器 android.hardware.sensor.accelerometer 该应用程序使用设备上的加速度计的运动读数。
android.hardware.sensor.barometer 该应用程序使用设备上的气压计。
android.hardware.sensor.compass 该应用程序使用设备上的磁力计(指南针)的方向读数。
android.hardware.sensor.gyroscope 该应用程序使用设备的陀螺仪传感器。
android.hardware.sensor.light 该应用程序使用设备的光线传感器。
android.hardware.sensor.proximity 该应用程序使用设备的邻近传感器。
android.hardware.sensor.stepcounter 该应用程序使用设备的计步器
android.hardware.sensor.stepdetector 该应用程序使用设备的步骤检测器
SIP/VOIP android.software.sip 应用程序使用设备上的SIP服务,并且只应安装在支持SIP的设备上。
android.software.sip.voip 子功能。该应用程序使用设备上的基于SIP的VOIP服务。注意:除非使用android:required="false"声明,否则此子功能隐式声明android.software.sip父功能。
电视 android.hardware.type.television 该应用程序旨在提供电视机用户体验。
触摸屏 android.hardware.faketouch 当声明“根据需要”时,这表示只有在设备提供模拟触摸屏(“伪触摸”界面)时,该应用程序才与该设备兼容。注意:由于应用程序在默认情况下需要android.hardware.touchscreen功能,如果您希望您的应用程序对提供伪触摸界面的设备可用,则还必须通过声明<uses-feature android:name="android.hardware.touchscreen" android:required="false" />来明确声明触摸屏不是必需的。
android.hardware.faketouch.multitouch.distinct 该应用程序在伪触摸界面上对两个或更多“手指”执行不同的跟踪。这是伪触摸功能的超集。当声明“根据需要”时,这表示只有在设备对采用不同的跟踪方式跟踪两个或更多手指的事件支持触摸模拟,或者支持更好的功能时,该应用程序才与该设备兼容。 
android.hardware.faketouch.multitouch.jazzhand 该应用程序在伪触摸界面上对五个或更多“手指”执行不同的跟踪。这是伪触摸功能的超集。当声明“根据需要”时,这表示只有在设备对采用不同的跟踪方式跟踪五个或更多手指的事件支持触摸模拟时,该应用程序才与该设备兼容。
android.hardware.touchscreen 该应用程序对相比基本的触摸事件更具互动性的手势(如快掷)使用触摸屏功能。这是基本伪触摸功能的超集。
android.hardware.touchscreen.multitouch 该应用程序在设备屏幕上使用基本的两点触摸功能(例如捏手势),但不需要独立跟踪触摸。这是触摸屏功能的超集。注意:除非使用android:required="false"声明,否则这会隐式声明android.hardware.touchscreen父功能。
android.hardware.touchscreen.multitouch.distinct 该应用程序在设备屏幕上使用先进的多点触控功能,例如用于对两个点或多个点完全独立地追踪。这是多点触摸功能的超集。注意:除非使用android:required="false"声明,否则这会隐式声明android.hardware.touchscreen.multitouch父功能。
android.hardware.touchscreen.multitouch.jazzhand 该应用程序在设备屏幕上使用先进的多点触控功能,例如用于对最多五个点完全独立地追踪。这是不同多点触控功能的超集。
USB android.hardware.usb.host 该应用程序使用USB主机模式功能(表现为主机并连接到USB设备)。
android.hardware.usb.accessory 该应用程序使用USB附件功能(表现为USB设备并连接到USB主机)。
WiFi android.hardware.wifi 该应用程序使用设备上的802.11联网(Wi-Fi)功能。
android.hardware.wifi.direct 该应用程序使用设备上的Wi-Fi Direct联网功能

OpenGL版本(<uses-feature>)

<uses-feature>元素中,可以使用glEsVersion属性指定OpenGL版本。

<uses-feature> android:glEsVersion="<hexadecimal integer>" />

如果定义的OpenGL版本低于版本1.1(以“0x00002101”的形式写入清单),应用商店不会应用该筛选条件。如果定义了多个OpenGL版本,应用商店在筛选时将使用最高版本。

OpenGL纹理(<supports-gl-texture>)

每个<supports-gl-texture>元素声明应用程序支持的单独纹理压缩格式。如果您的应用程序支持多种纹理压缩格式,可以声明多个<supports-gl-texture>元素。如果清单中定义的OpenGL纹理至少有一个在设备上可用,则应用商店会将该设备视为兼容。可以在此页面上找到支持的纹理压缩格式的详细信息。

支持屏幕(<supports-screens>)

此元素用于指定您的应用程序支持的屏幕大小。如果您的应用程序在调整以适应不同屏幕大小时无法正常工作,您可以使用<supports-screens>的属性来控制您的应用程序应分发到较小屏幕的设备,或者使用屏幕兼容模式让其UI扩展(“放大”)以适应较大的屏幕。应用商店会应用安卓规范中所述的设备筛选条件,可以在此页面上找到该规范。

属性 描述
android:smallScreens 指示应用程序是否支持较小的屏幕尺寸。小屏幕被定义为纵横比小于“普通”HVGA中密度屏幕的屏幕。默认情况下,此项为"true"
android:normalScreens 指示应用程序是否支持“普通”屏幕尺寸。这通常是一个HVGA中密度屏幕。不过,WQVGA低密度和WVGA高密度也视为“普通”屏幕尺寸。默认情况下,此属性为"true"
android:largeScreens 指示应用程序是否支持较大的屏幕尺寸。大屏幕被定义为比“普通”屏幕大得多的屏幕。此属性的默认值实际上在一些安卓版本中有所不同,因此建议您明确声明该属性。注意:将<android.largeScreens>设置为"false"通常会启用屏幕兼容模式
android:xlargeScreens 指示应用程序是否支持超大屏幕尺寸。超大屏幕被定义为相比“大”屏幕要大得多的屏幕,例如平板电脑(或更大的设备)。此属性的默认值实际上在一些安卓版本中有所不同,因此建议您明确声明该属性。注意:将<android.xlargeScreens>设置为"false"通常会启用屏幕兼容模式
android:requiresSmallestWidthDp 指定需要的最小smallestWidth。smallestWidth是必须对您的应用程序UI可用的最短的屏幕空间尺寸(以dp为单位)。这是可用屏幕的两个尺寸中最短的那个。因此,为了使设备与您的应用程序兼容,设备的smallestWidth必须等于或大于此值。通常,您为此属性提供的值是布局支持的“最小宽度”,而不管屏幕的当前方向如何。

兼容屏幕(<compatible-screens>)

此元素用于指定与应用程序兼容的特定屏幕尺寸密度组合。在清单中只允许<compatible-screens>元素的一个实例。应用商店会应用安卓规范中所述的设备筛选条件,可以在<supports-gl-texture>中找到该规范。

如果您只希望为您的应用程序设置最小屏幕尺寸,则应使用<supports-screens>元素。例如,如果您希望您的应用程序仅适用于超大屏幕设备,<supports-screens>元素允许您声明您的应用程序不支持普通屏幕尺寸。

属性 描述
android:screenSize=["small" | "normal" | "large" | "xlarge"] 必需。为此屏幕配置指定屏幕尺寸
android:screenDensity=["ldpi" | "mdpi" | "hdpi" | "xhdpi" | "480"] 必需。为此屏幕配置指定屏幕密度。注意:应用商店会将480映射到xxhdpi