In some cases, you may notice that the app that you have submitted to Amazon Appstore, is not available on most Kindle Fire devices. The Device Support section might show a warning, like this one:
Your APK manifest requires capabilities not present on this device.
However, at the same time you know that there is no <uses-feature> entry in the app manifest that says GPS is required to run the app.
Your app might ask for the user location for example to tag photos taken within the app, but you have verified that if GPS location is not available, the app still works fine. The photos simply have no location info. You tested and ensured that you can run the app without problem on your own Kindle Fire.
So why does the Amazon Appstore think that "android.hardware.location.gps" is a requirement? How do you change this so that the app can be available on most Amazon devices?
To understand what’s going on, it’s important to know that even if you don't explicitly specify the <uses-feature> entry in your application's manifest, it can still be implied, just by using certain permissions, as per Android specs:
In the example with GPS above, to resolve this issue, please specify the <uses-feature> for the android.hardware.location.gps capability explicitly, however mark it as not required.
"When you declare android:required="false" for a feature, it means that the application prefers to use the feature if present on the device, but that it is designed to function without the specified feature, if necessary."
For this specific use case, you will get rid of the warning if you add the following line in your AndroidManifest.xml file:
<uses-feature android:name=" android.hardware.location.gps" android:required="false"/>
Do the same for other features that you know your app does not strictly require to function. Rebuild and resubmit, and hopefully that way you will make your app available on all or most Amazon Fire devices.
Keywords: reduced device support, manifest capabilities, manifest features