The Amazon Appstore uses industry-standard AndroidManifest.xml files to determine an app’s compatibility with Fire devices. The Binary Files tab highlights incompatibilities between your manifest and the capabilities of devices you are targeting.
If you are planning to update your APK, 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 Appstore’s manifest filtering, see Supported Manifest Filters and Targeting Amazon Devices with Your Android Manifest.
Touchscreen support is assumed for all Android APKs unless explicitly defined otherwise. This message indicates that your manifest will only target devices with a touchscreen, and is therefore incompatible with non-touchscreen devices (like Fire TV). If you want your application to be available to devices that do not have a touchscreen, you must explicitly declare that a touchscreen is not required by adding the following element to your manifest:
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
android.hardware and android.software
These messages indicate your manifest contains either a
<uses-permission> element for a capability not supported by the target device.
<uses-feature> reference may be implied by a
<uses-permission>element; refer to Permissions that Imply Feature Requirements for more information.
If you want your application to be available on a target device that has this warning, do one of the following:
- If your APK does not actually use the feature in question, remove the offending
<uses-permission>element from the manifest.
- If your APK 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
- 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 the Android getSystemAvailableFeatures API documentation.
android.minSdkVersion and android.maxSdkVersion
android.minSdkVersion = "X"; device requires "Y" 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”). The Manifest Filter Reference shows both the Android and Amazon API level for each Fire device on the market.
amzn.minSdkVersion and amzn.maxSdkVersion
amzn.minSdkVersion = "X"; device requires "Y" amzn.maxSdkVersion = "X"; device requires "Y"
These messages indicate that the range of Amazon API levels specified in the
<uses-amzn-sdk> element exclude the Amazon API level currently supported by the target device (“Y”). If you intended to target the Fire device, adjust the Amazon API range to include level (“Y”). The Manifest Filter Reference shows both the Android and Amazon API level for each Fire device on the market.
<uses-amzn-sdk>is not required to target Fire devices, but can be used to restrict a binary to certain Fire devices. It should not be used if you intend to target both Fire and non-Amazon devices from the same binary.
When this message is presented by itself (with no level information), it indicates that your APK manifest includes
<uses-amzn-sdk>, and therefore requires support from an Amazon SDK which is not present on the target device. This message should only be displayed for non-Amazon devices.</div>
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. Appstore applies device filters as described in the Android spec which can be found on this page. To target the device, add support for the screen as described by “size” and “width”, and update the manifest accordingly.</div>
screenSize and screenDensity
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. Appstore applies device filters as described in the Android spec which can be found on this page. To target the device, add support for the screen as described by “size” and “density”, and update the manifest appropriately.
<compatible-screens>is not recommended. This element can dramatically reduce the number of devices available to your application i.e. Appstore will filter-out all devices with a screen configuration that you have not listed. You should use it only as a last resort, when the application absolutely does not work with specific screen size-density configurations.
android.glEsVersion = "X"; device requires "Y"
This messages indicates your APK 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.</div>
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 on this page. 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.