can't replace default icon on Android

I hooked up a 512x512 png in the player settings as an icon, but when I push my apk to the phone, it still shows the default unity icon.

I also tried overriding the android settings, tried 72x72 png and 48x48 png, but the icon is always the unity icon.

Do I need to supply the icon as a different format? Or is there some other trick?

Update: I unzipped the apk, and the only image in res/drawable is the default unity icon. So it's definitely some issue with the icon not being added to the apk.

Update2: apparently this is a bug in non-pro unity 3.3. See my answer below for a workaround.

This is a bug in non-pro unity 3.3. According to unity support it will be fixed in 3.4.

Until then, here’s a workaround to manually replace the icon (on windows):

  • rename .apk to .zip
  • open .zip with 7zip
  • replace icon under res/drawable
  • delete manifest folder to remove signature
  • close 7zip and rename file to .apk
  • sign the application manually (see android documentation):
  • keytool -genkey -v -keystore [my-release-key.keystore] -alias [alias_name] -keyalg RSA -keysize 2048 -validity 10000
  • jarsigner -verbose -keystore [my-release-key.keystore] abc.apk [alias_name]

What are the settings on the imported texture itself? Is it power-of-2 or GUI or other? I'd try setting it to GUI texture so it doesn't get stretched to a power of 2 just in case. I use PNGs ok, but you could try jpg or other in case your paint program is producing some off-spec PNG files.