Amazon Submission Problem -> Not all devices (Including a Nexus 7) are displaying as compatable.

Out of the past 5 apps I’ve submitted, 3 of them have indicated that they are not compatable with the Nexus 7 (a device I have and have associate with my Amazon account).  Im wondering if I am missing something as when you submit an APK, it indicates to include all non Kindle devices listed in the manifest.  Is there something I need to put in my build settings to insure that Amazon sells to all devices that are truely compatable?

Thanks,
Scott

If your app is set up to use an Android permission, such as to use the GPS or CAMERA, then the app store will assume that the permission’s feature is “required”.  The app store will prevent devices that do not have a required feature from purchasing your app, which is a good thing if that feature really is required.

If your app is using a permission for a feature this is *not* required, then you have to flag it as not required in your “build.settings” file… which gets turned into <uses-feature> tags within your APK’s AndroidManifest.xml file.  Have a look at the following documentation for more details…

   http://docs.coronalabs.com/daily/guide/distribution/buildSettings/index.html#features

Also have a look at the “build.settings” files for sample apps “Media/Camera”, “Hardware/GPS”, and “Analytics/FlurrySample”.  They show examples of this as well.

Hey Joshua,

Thanks for the reply.  I’ve looked at the examples and believe what you are talking about to be unrelated. 

My latest does have the camera permission, but the Nexus 7 does have a camera.

On Google Play the Nexus 7 is compatable as well with the same build.settings.

Finally one of my earlier apps - Animal Games for Kids: Puzzles - required no permissions and was still listed as not compatable with the Nexus 7 on Amazon (again on Google Play it is).

I beleive this is specifically related to Amazon or something that occurs in the Amazon build process.  Let me know if you have any further thoughts.

Scott

Okay, I got a replay in regards to my question to the apps.  The Animal Games App was an overlook on my part, but I got this response in regards to my latest app:

In regard to “Puzzle Maker for Kids: Create Your Own Jigsaw Puzzles from
Pictures - A Puzzle Game for Toddlers, Preschoolers, and Young
Children.” :

The manifest file calls for capabilities that the Nexus 7 does not have
physically, so it was filtered as incompatible because of that.If you
fix the AndroidManifest.xml file to match what the Nexus 7 can do, then
submit it as an upgrade, then it should pass testing and be listed as
compatible.

Here is what I have in my manifest:

usesPermissions =
        {
            “android.permission.CAMERA”,
            
            --“com.android.vending.BILLING”,
        },
        usesFeatures =
        {
            { name = “android.hardware.camera”, required = false },
            { name = “android.hardware.camera.front”, required = false },
        },
 

So my app does require a camera; however, the camera can be front or rear facing.  On Google Play, when I set: “name = “android.hardware.camera”, required = false” to true then the Nexus 7 was no longer compatible.  When I have the current setup on Google Play, Nexus 7 is compatable.  It; however, still is not compatable on Amazon. 

What am I doing wrong here?

Thanks,
Scott

I found the issue.  Amazon support wrote back and indicate that the manifest included camera.autofocus for whatever reason.  For some reason it was automatically set to true.  I’m not sure why it was for the Amazon build and not the Google build, but I will try setting this feature manually to false.  Hopefully this will resolve the issue.

Okay one last note in case any one comes accross this issue.

The main issue is with the Nexus 7 itself.  There is no way to set:

{ name = “android.hardware.camera”, required = false },

to true and keep the Nexus 7 on your list of compatable devices.  On top of that, you need to set:

{ name = “android.hardware.camera.autofocus”, required = false },

to false for some reason some times.  Safest to just set it to false all the time.

Finally:

{ name = “android.hardware.camera.any”, required = true },

This is supposed to make it so that the app requires either a camera on the front or a camera on the back.  Unfortunitely it does not work correctly as you can see that less than 100 devices get selected for use on the Google Play store.  DON’T USE IT!

The unfortunite thing is that my app DOES require a camera; however, there is no way Im going to exclude one of the most popular devices out there…

If your app is set up to use an Android permission, such as to use the GPS or CAMERA, then the app store will assume that the permission’s feature is “required”.  The app store will prevent devices that do not have a required feature from purchasing your app, which is a good thing if that feature really is required.

If your app is using a permission for a feature this is *not* required, then you have to flag it as not required in your “build.settings” file… which gets turned into <uses-feature> tags within your APK’s AndroidManifest.xml file.  Have a look at the following documentation for more details…

   http://docs.coronalabs.com/daily/guide/distribution/buildSettings/index.html#features

Also have a look at the “build.settings” files for sample apps “Media/Camera”, “Hardware/GPS”, and “Analytics/FlurrySample”.  They show examples of this as well.

Hey Joshua,

Thanks for the reply.  I’ve looked at the examples and believe what you are talking about to be unrelated. 

My latest does have the camera permission, but the Nexus 7 does have a camera.

On Google Play the Nexus 7 is compatable as well with the same build.settings.

Finally one of my earlier apps - Animal Games for Kids: Puzzles - required no permissions and was still listed as not compatable with the Nexus 7 on Amazon (again on Google Play it is).

I beleive this is specifically related to Amazon or something that occurs in the Amazon build process.  Let me know if you have any further thoughts.

Scott

Okay, I got a replay in regards to my question to the apps.  The Animal Games App was an overlook on my part, but I got this response in regards to my latest app:

In regard to “Puzzle Maker for Kids: Create Your Own Jigsaw Puzzles from
Pictures - A Puzzle Game for Toddlers, Preschoolers, and Young
Children.” :

The manifest file calls for capabilities that the Nexus 7 does not have
physically, so it was filtered as incompatible because of that.If you
fix the AndroidManifest.xml file to match what the Nexus 7 can do, then
submit it as an upgrade, then it should pass testing and be listed as
compatible.

Here is what I have in my manifest:

usesPermissions =
        {
            “android.permission.CAMERA”,
            
            --“com.android.vending.BILLING”,
        },
        usesFeatures =
        {
            { name = “android.hardware.camera”, required = false },
            { name = “android.hardware.camera.front”, required = false },
        },
 

So my app does require a camera; however, the camera can be front or rear facing.  On Google Play, when I set: “name = “android.hardware.camera”, required = false” to true then the Nexus 7 was no longer compatible.  When I have the current setup on Google Play, Nexus 7 is compatable.  It; however, still is not compatable on Amazon. 

What am I doing wrong here?

Thanks,
Scott

I found the issue.  Amazon support wrote back and indicate that the manifest included camera.autofocus for whatever reason.  For some reason it was automatically set to true.  I’m not sure why it was for the Amazon build and not the Google build, but I will try setting this feature manually to false.  Hopefully this will resolve the issue.

Okay one last note in case any one comes accross this issue.

The main issue is with the Nexus 7 itself.  There is no way to set:

{ name = “android.hardware.camera”, required = false },

to true and keep the Nexus 7 on your list of compatable devices.  On top of that, you need to set:

{ name = “android.hardware.camera.autofocus”, required = false },

to false for some reason some times.  Safest to just set it to false all the time.

Finally:

{ name = “android.hardware.camera.any”, required = true },

This is supposed to make it so that the app requires either a camera on the front or a camera on the back.  Unfortunitely it does not work correctly as you can see that less than 100 devices get selected for use on the Google Play store.  DON’T USE IT!

The unfortunite thing is that my app DOES require a camera; however, there is no way Im going to exclude one of the most popular devices out there…