Developer Console

Troubleshooting Android Manifest and Device Filtering

The Amazon Appstore uses your app manifest to determine an app's compatibility with Fire devices. When you upload your Android binary file in the Developer Console, the Target Your App screen highlights incompatibilities between your manifest and the capabilities of devices you are targeting. Use the troubleshooting information here to better understand any error messages related to device support.

If you are planning to update your binary file , you must fix compatibility issues in your manifest in order to maintain your current device support. If you do not fix compatibility issues, your app will not be available on devices that have been flagged.

This article describes common incompatibility messages and potential resolutions. For more information about the Amazon Appstore’s manifest filtering, see these topics:

Also see the Troubleshoot common errors section in the instructions for uploading your app's binary file.

Where error messages appear

You upload your Android binary file on the Upload Your App File screen. On the Target Your App screen, in the Supported devices section, you can click Edit supported devices to see whether your binary file is supported by a particular device. If it isn't supported, it will be dimmed and unable to be selected. You can move your mouse over the info tooltip and see the reason. Here's an example:

The Supported devices screen with a mouse pointer over the help icon of a device. The mouse-over message says 'Your APK manifest requires capabilities not present on this device. android:minSdkVersion='25'; device requires '22''.

In this case, the error message is android:minSdkVersion='25'; device requires '22'. This means this APK requires at minimum API level 25, but the device only supports up to API level 22. Therefore, this APK can't be installed on the device.

The following sections indicate common errors and their resolutions.

APK does not meet target API requirements

This error indicates that your APK does not meet the target API requirements. You need to update the targetSdkVersion attribute in your app's APK to meet the minimum Android API level requirements.

See Device Filtering and Compatibility for more information.

android.hardware.touchscreen

Error: android.hardware.touchscreen

To make your application available only to devices with touchscreen support, you must declare it in the manifest. By default, an app is assumed to be compatible with non-touchscreen devices (like Fire TV) and will be available to devices based on your selection when submitting the app in the Developer Console. To declare that a touchscreen is required, use one of the following element definitions in your manifest:

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

android.hardware.location

Error: android.hardware.location

If your manifest includes permission for ACCESS_FINE_LOCATION, this capability adds two implied features to the manifest:

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

Because the implied features are required, the binary file is deemed not compatible with any device that does not provide those features. To allow these devices, you need to explicitly include the implied features in your manifest, with the android:required attribute set to false:

<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />

Refer to Common Hardware and Software Capabilities for additional information.

android.hardware and android.software

Error: android.hardware._feature or android.software._feature

These messages indicate your manifest contains either a <uses-feature> or <uses-permission> element for a capability not supported by the target device.  

If you want your application to be available on a device that has this warning, do one of the following:  

  • If your binary does not actually use the feature in question, remove the offending <uses-feature> or <uses-permission> element from the manifest.
  • If your binary uses the feature in question, but does not strictly require it (i.e. your app tests for the capability and disables related functions if not present), add or adjust the <uses-feature> element to include the attribute android:required="false".
  • If your app strictly requires the feature in question, to safely target the device, you should make code changes so the app gracefully disables functionality on devices without the feature. After testing your changes, modify the manifest to include android:required="false" in the appropriate <uses-feature> element.  For more on detecting capabilities, refer to getSystemAvailableFeatures in the Android documentation.

android.minSdkVersion and android.maxSdkVersion

Error: android.minSdkVersion = "X"; device requires "Y"
Error: android.maxSdkVersion = "X"; device requires "Y"

These messages indicate that the range of Android API levels specified in the <uses-sdk> element exclude the Android API level currently supported by the target device ("Y").  If you intended to target the device, adjust the Android API range to include level ("Y"). See the Tablet Specifications and Fire TV Specifications for the Android and Amazon API levels for various Amazon Fire devices.

supports-screens

Error: supports-screens = "X"; device requires "size" (and/or "width")

This message indicates there is no overlap between the screen sizes and/or smallest width defined in the <supported-screens> element and those supported by the device. The Amazon Appstore applies device filters as described in <compatible-screens>. To target the device, add support for the screen as described by "size" and "width", and update the manifest accordingly.

screenSize and screenDensity

Error: No supported screenSize and screenDensity pair in manifest; device requires "size" and "density"

This message indicates there is no overlap between the <screen> elements specified in the <compatible-screens> element and those supported by the device. The Amazon Appstore applies device filters as described in the Android spec which can be found in <compatible-screens>. To target the device, add support for the screen as described by "size" and "density", and update the manifest appropriately.

android.glEsVersion

Error: android.glEsVersion = "X"; device requires "Y"

This messages indicates your binary file specifies an OpenGL ES version that is not supported by the target device. To target this device, consult its reference documentation for the proper OpenGL ES version, and update the manifest appropriately.

supports-gl-texture

Error: No supported supports-gl-texture formats in manifest

This message indicates there is no overlap between the OpenGL texture compression formats specified in the manifest and those supported by the target device. Details for supported texture compression formats can be found in <supports-gl-texture>. To target the device, add support for a compatible texture format, and update the manifest appropriately. Also, check the capitalization and spelling of the OpenGL texture format in the manifest vs. the device specification.

CPU Architecture

Error: CPU Architecture = '64-bit'; device requires '32-bit'

This message indicates your binary file does not include CPU architecture that is supported by the target device. To target this 32-bit device, include the necessary supported CPU architectures in the binary from armeabi-v7a and x86.


Last updated: Jul 15, 2024