As of Cordova 3.5.0-0.2.6 the <icon />
element in config.xml works with the following caveats:
The src
attribute is a path relative to your project root folder. The issue tracker about this issue reason why the change.
The <icon src="..." />
element without resolution/dpi is documented as the icon used by all platforms as the default icon. However, on android builds, the default icon is only copied to the android drawable folder, without specific resolutions set. This makes you custom icon appear in the /res/drawable
folder, and the cordova default icon with specific resolutions exists in the other folders inside the final apk (i.e. /res/drawable-ldpi
). You must add one icon element in config.xml
for each resolution on the android platform.
For instance, if your icon image is in the path www/res/img/icon.png
relative to your root project, this lines in config.xml
makes your app icon in android works:
<!-- Default application icon -->
<icon src="www/res/img/icon.png" />
<!--
Default icon should work, but cordova don't overwrite
the default on all densities
-->
<icon src="www/res/img/icon.png" platform="android" density="ldpi" />
<icon src="www/res/img/icon.png" platform="android" density="mdpi" />
<icon src="www/res/img/icon.png" platform="android" density="hdpi" />
<icon src="www/res/img/icon.png" platform="android" density="xhdpi" />
With that configuration in place, you can have a single image icon for all resolutions overwriting the default cordova icon, and without custom hoooks. Simply building with cordova build android
should do the trick.