Google Play Error Upload Error: You Need To Add An Icon To Your Apk.

Is anyone else having this problem when trying to upload an APK to google play?  I have all the icons in my Corona folder:

Icon-hdpi.png

Icon-mdpi.png

Icon-ldpi.png

Icon.png

Also, i saw in forums that this error can be thrown if you have a \n character in your app name.  I do not have this.

Is there something specific I need in my Android manifest to get it to recognize these icons?

@wminkstein, it could be that missing xhdpi is causing this?  I don’t know but it might be worth adding it.  Also, you might want to take a quick look at this blog post that just came out for reference:

http://coronalabs.com/blog/2013/03/26/androidizing-your-mobile-app/

Naomi

Hi Naomi,

Thanks for the response. I noticed this after I posted.  I added that icon as well as double checked all the sizes against that link you sent.  I uploaded a new apk and I’m still having the same issue.  I imagine this is a setting I am missing while compiling with Enterprise.

Ok I fixed it.  Apparently for enterprise you need to manually copy all of your Icon-{res} assets into their respective directories.  So ldpi goes into res/drawable-ldpi, etc.

The files all need to be renamed to icon.png <- lowercase is important b/c uppercase characters are not allowed.  

Then you need to add the following attribute to your <application> tag in your manifest:

android:icon="@drawable/icon"

This is basically documented deep in this forum post:

https://developer.coronalabs.com/forum/2013/01/16/custom-android-push-notification-status-bar-icon

Is there a more official place this is documented?  I couldn’t find anything.  It would be nice to have deployment docs for both iOS and all the Android stores to deal with these quirks.  The sample project (App) does not include any help on how to do this.

The “Icon-ldpi.png”, “Icon-mdpi.png”, and “Icon-hdpi.png” application icon images are a Corona Simulator feature only.  This is not how native Android developers add icons to an Android application project.  Since you are doing native Android development, you need to follow Google’s documentation when setting up an Android application project.  This is because Corona is just a library that you reference in your Android application, just like how it is done with 3rd party Android libraries.

Google’s official Android developer guides can be found here…

http://developer.android.com/training/basics/firstapp/creating-project.html

Google’s documentation for how to set up application icons can be found here…

http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

In this case, you need to set up a “Launcher” icon.  Those icons, just like all icons, are expected to be placed in your Android project’s “res” directory… and you are expected to create different resolutions of them and putting them under the appropriate “res” subdirectory.  Libraries never provide launcher icons, so this is a task for you.  Afterwards, you are expected to reference that launcher icon in your AndroidManifest.xml file as documented by Google here…

http://developer.android.com/guide/topics/manifest/manifest-intro.html#iconlabel

http://developer.android.com/guide/topics/manifest/application-element.html#icon

I also suggest that you play with Google’s sample projects that are included with the Android SDK in order to learn the core fundamentals of native Android development.  There’s a lot to learn and it would be easier to start with simpler Android projects first.

Anyways, I hope this helps!

@Josh

This helps a lot actually.  I guess the difficult part (since I was unfamiliar with native Android programming until now) was determining where the line is drawn between what Corona handles and what you have to setup manually.  This icon process is a good example as it was necessary to set this up in the Android project manually.  However, in the case of iOS, simply having the icons present in the Corona project was enough and it was not necessary to set these up manually inside of XCode IDE.

It would overall be nice to have official documentation on these kinds of things.  It will help developers transition from Corona Pro to Enterprise a lot more effectively.

@wminkstein, it could be that missing xhdpi is causing this?  I don’t know but it might be worth adding it.  Also, you might want to take a quick look at this blog post that just came out for reference:

http://coronalabs.com/blog/2013/03/26/androidizing-your-mobile-app/

Naomi

Hi Naomi,

Thanks for the response. I noticed this after I posted.  I added that icon as well as double checked all the sizes against that link you sent.  I uploaded a new apk and I’m still having the same issue.  I imagine this is a setting I am missing while compiling with Enterprise.

Ok I fixed it.  Apparently for enterprise you need to manually copy all of your Icon-{res} assets into their respective directories.  So ldpi goes into res/drawable-ldpi, etc.

The files all need to be renamed to icon.png <- lowercase is important b/c uppercase characters are not allowed.  

Then you need to add the following attribute to your <application> tag in your manifest:

android:icon="@drawable/icon"

This is basically documented deep in this forum post:

https://developer.coronalabs.com/forum/2013/01/16/custom-android-push-notification-status-bar-icon

Is there a more official place this is documented?  I couldn’t find anything.  It would be nice to have deployment docs for both iOS and all the Android stores to deal with these quirks.  The sample project (App) does not include any help on how to do this.

The “Icon-ldpi.png”, “Icon-mdpi.png”, and “Icon-hdpi.png” application icon images are a Corona Simulator feature only.  This is not how native Android developers add icons to an Android application project.  Since you are doing native Android development, you need to follow Google’s documentation when setting up an Android application project.  This is because Corona is just a library that you reference in your Android application, just like how it is done with 3rd party Android libraries.

Google’s official Android developer guides can be found here…

http://developer.android.com/training/basics/firstapp/creating-project.html

Google’s documentation for how to set up application icons can be found here…

http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

In this case, you need to set up a “Launcher” icon.  Those icons, just like all icons, are expected to be placed in your Android project’s “res” directory… and you are expected to create different resolutions of them and putting them under the appropriate “res” subdirectory.  Libraries never provide launcher icons, so this is a task for you.  Afterwards, you are expected to reference that launcher icon in your AndroidManifest.xml file as documented by Google here…

http://developer.android.com/guide/topics/manifest/manifest-intro.html#iconlabel

http://developer.android.com/guide/topics/manifest/application-element.html#icon

I also suggest that you play with Google’s sample projects that are included with the Android SDK in order to learn the core fundamentals of native Android development.  There’s a lot to learn and it would be easier to start with simpler Android projects first.

Anyways, I hope this helps!

@Josh

This helps a lot actually.  I guess the difficult part (since I was unfamiliar with native Android programming until now) was determining where the line is drawn between what Corona handles and what you have to setup manually.  This icon process is a good example as it was necessary to set this up in the Android project manually.  However, in the case of iOS, simply having the icons present in the Corona project was enough and it was not necessary to set these up manually inside of XCode IDE.

It would overall be nice to have official documentation on these kinds of things.  It will help developers transition from Corona Pro to Enterprise a lot more effectively.