Amazon Kindle Fire - Warning

Just wanted to share…

I got an email from Amazon Developer services yesterday stating they are in the process of testing all apps in their appstore for the Fire.

It indicated one of our apps was “incompatible” as it would not install. The email text stated this:

“Your app does not install on Kindle Fire. Please consult the Kindle Fire FAQ for a listing of incompatible permissions called in your Android Manifest file, as these may be causing problems with your app’s installation on Kindle Fire. If your app currently lists a permission that is not critical to the functionality or user experience of the application, we recommend that you remove it from your manifest file.”

Now, we have several apps on Amazon and only received this about one of them. Not sure if the others passed (same corona build was used for all)…or if Amazon has not tested the others yet.

Wanted to give folks a heads up…and also reach out if anyone has some suggestions. Funny thing is, the email mentions reviewing permissions and comparing to the Fire FAQ…which is missing that section.

Maybe someone has more info…

Paul [import]uid: 39506 topic_id: 16102 reply_id: 316102[/import]

Maybe now will Corona SDK give us full control over the used permissions… will see [import]uid: 70114 topic_id: 16102 reply_id: 59898[/import]

When you build an app for Android, Corona adds 3 Android permissions (INTERNET, ACCESS_NETWORK_STATE and READ_PHONE_STATE) by default.

My app does not need any special permission so I tried to remove the permissions from Androidmanifest.xml. You can use apktool to do this.

It’s possible to remove INTERNET and ACCESS_NETWORK_STATE permissions. But when I removed READ_PHONE_STATE permission, the app always crashed(black screen, vibrates 3 times and exits).

I think that many apps actually do not need READ_PHONE_STATE permission and it can scare the users so they do not install the app.
But it’s not possible to remove it because Corona apps always crash without this permission.

I tested it on more Corona versions (last stable version 2011.591 and various new daily builds). I also reported this as a bug. [import]uid: 7038 topic_id: 16102 reply_id: 59967[/import]

Same email and same issue here. Corona people, please address this issue! [import]uid: 8780 topic_id: 16102 reply_id: 60667[/import]

Thank from the https://developer.amazon.com/help/faq.html#KindleFire

At a high level, it must be optimized for non-Google Mobile Services (GMS) Android 2.3.4 (Gingerbread) and a 7" screen with a resolution of 1024 x 600. Your manifest should specify support for large screens. Your app cannot require a gyroscope, camera, WAN module, Bluetooth, microphone, GPS, or micro-SD to function. In addition, your app must not be a theme or wallpaper that manipulates the user interface of the device.

To ensure your app is compatible with Kindle Fire, specify supports-screen android:largeScreens=“true” in your manifest file.

Does your apps broke any of those rules somehow?

[import]uid: 10478 topic_id: 16102 reply_id: 60672[/import]

Thanks for the link PixelEnvision.

Nothing is popping out as an issue with my app regarding those specifications from Amazon.

Here are the details of my APK (currently on Android/Amazon markets with no issues)…

Permissions:
android.permission.INTERNET, android.permission.ACCESS_NETWORK_STATE, android.permission.READ_PHONE_STATE

API level: 8-12+
Supported screens: small-xlarge
OpenGL textures: all

[import]uid: 39506 topic_id: 16102 reply_id: 60679[/import]

You’re welcome…

Is your app designed for tablets only?

If so, as far as I know Amazon might have a problem with “android.permission.READ_PHONE_STATE” if the app is not designed to work with phones… [import]uid: 10478 topic_id: 16102 reply_id: 60680[/import]

Corona will continue to prioritize iOS over Android. For the Fire, Corona is not the way to go IMO. With each passing day, what would used to look like a good option brings more reasons why Corona is a bad choice for (non-iPad) Tablet development. If you merely want to make phone apps for both OSes, it’s a good tool though.

They’ve gotten behind the curve on Honeycomb and will further fall behind on when ICS drops. I decided the only way to have full control over my app unfortunately was to develop using the free Google SDK despite whatever advantages Corona provides. The short term gains just weren’t worth the long-term issues like this. [import]uid: 41892 topic_id: 16102 reply_id: 60699[/import]

How do we get Anscamobile’s attention to fix the android.permission.READ_PHONE_STATE issue so that we can submit our apps for the Amazon Kindle before October 31? HELP!! [import]uid: 8780 topic_id: 16102 reply_id: 61030[/import]

Hey everyone, I got the same e-mail from Amazon ~ I’m assuming it’s because I didn’t specify supports-screen android:largeScreens=“true” in my manifest file. Like PixelEnvision quoted.

android.permission.READ_PHONE_STATE is required because Corona Analytics needs it to grab the device ID. Not sure the kindle fire has any problem with that though.

-Angelo [import]uid: 12822 topic_id: 16102 reply_id: 61032[/import]

@Yobonja,

I think if you try to re-built using the latest daily, it might fix the problem.

The problem is with the manifest file, now it comes in binary format (not sure when that first changed but thats how it works for few latest daily builds) and it’s no longer editable (or at least I couldn’t find any tools for that). So, you may not be able to tamper with it to add screen support or other stuff…

On the other hand, there were lots of Android fixes recently and I think large screens supported by default now…

I’ve just uploaded my first app to Amazon (built with daily 638) yesterday and it’s under review now. I’ll let you know hot it goes…

FYI, it’s supporting phone + tablets, has 3 default permissions set by Corona + I have added vibration permission as it needed to for system.vibrate. [import]uid: 10478 topic_id: 16102 reply_id: 61041[/import]

android.permission.READ_PHONE_STATE is required because Corona Analytics needs it to grab the device ID. Not sure the kindle fire has any problem with that though.

I heard “Papaya need it”. What exactly needs Papaya?

Strange feelings…

I can grab the device ID in a PhoneGap based Android app without any permissions. That can’t be the reason. Maybe anyone want more than the device ID…

There are a lot of Androids without any “PHONE” module in it. I guess all of them crash with standard Corona builds and the READ_PHONE_STATE permission. I’ve seen it with a wifi only Galaxy Tab. It couldn’t start all the “un-apk-modified” Corona apps from Android Market. It can also run other non Corona based apps with this READ_PHONE_STATE permission. And it runs the permission stripped Corona apps.

So I’d rather have control over permissions and stable runtime than having no control over any analytics by forced permissions. [import]uid: 70114 topic_id: 16102 reply_id: 61055[/import]

How do we go about adding: supports-screen android:largeScreens=“true”? Where and how would this be entered? Thanks! [import]uid: 8780 topic_id: 16102 reply_id: 61089[/import]

@Sven.Lua
I’m not sure that papaya needs it if you don’t use papaya.

PhoneGap actually returns the ANDROID_ID, not the udid so it doesn’t need READ_PHONE_STATE.

CoronaSDK returns the udid if it exists, the ANDROID_ID after that, and it generates an ID and returns that in other cases. (I think I read this in a daily build log) So it does require the permission if used, and Corona Analytics uses it.

If you want you can just use an old build like 540.

@staytoooned
You can use apktool to modify the manifest.

-Angelo

[import]uid: 12822 topic_id: 16102 reply_id: 61112[/import]

Just got this followup from Amazon:

“Could you please change your permission read_phone_state to optional if it’s not required for your app? When that is done, I will notify our testing team.”

Guess I am going to try this using apktool…not sure if/how it will work just yet though.

Just wanted to share. [import]uid: 39506 topic_id: 16102 reply_id: 61282[/import]

Just looked at my manifest file. Here are some observations:

  1. the large screens = true is not there, seems easy enough to add
  2. phone state does not say optional, per the amazon note above
  3. there are lots of “activities”, most of which for papaya, superrewards, etc. What I am worried about is some say “camera activity”. The amazon docs specifically say using the camera not supported…wonder about even referencing camera activities. Not sure.

Wonder if we can just remove all this papaya stuff…of if that means we also need to remove the files from the apk folders. Changing the manifest seems ok…but removing folders/files from the apk seems a little higher risk.

Anyone else have thoughts? [import]uid: 39506 topic_id: 16102 reply_id: 61283[/import]

@gibsonpa,

Regarding the READ_PHONE_STATE problem, is your app for tablets only or supports phone + tablets?

Btw, I’ve also tested the apk/manifest using the latest daily, here is what I found…

Native platform: armeabi-v7a
Localized to: default
API level: 8-14+
Supported screens: small-xlarge
OpenGL textures: all

3 Permissions requested
android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE
android.permission.READ_PHONE_STATE

2 hardware features
android.hardware.screen.portrait
android.hardware.touchscreen

There were nice fixes recently… As you might now, we can control version name & number and add permissions on top of those default three…
[lua]android =
{
versionCode = “1”,
versionName = “1.0”,
},
androidPermissions =
{
“android.permission.VIBRATE”,
},[/lua]

But I think we should have more control over manifest to be able to target devices as we need…

Fx, I wanted to add “android.hardware.sensor.accelerometer” as our game is accelerometer controlled, but I couldn’t find a way to do it…

Also, when using most recent daily builds, manifest file uses binary xml format. So ,editing it is not an option (If I am not mistaken) anymore… [import]uid: 10478 topic_id: 16102 reply_id: 61306[/import]

Here it is explained - but I don’t know if it works.

http://developer.anscamobile.com/forum/2011/10/12/suggested-settings-permissions-submitting-amazon-app-store [import]uid: 70114 topic_id: 16102 reply_id: 61321[/import]

I just got a response from Amazon that states:

“Could you please change your permission read_phone_state to optional if it’s not required for your app?”.

I did some searching…but am not finding how to make a permission optional…anyone know if this is possible and/or what the manifest entry would look like?

Also, I opened a bug ticket with Ansca on this. [import]uid: 39506 topic_id: 16102 reply_id: 61737[/import]

Everyone,

I’m looking into making the READ_PHONE_STATE permission optional now. Hopefully, this will be the last barrier that is blocking Amazon submissions. [import]uid: 32256 topic_id: 16102 reply_id: 62209[/import]