ionic-cli: Icons and splash screens generated from `ionic resources` ignored on Android
Short description of the problem:
Even in a freshly generated project, icon and splash screens generated from ionic resources
are being ignored in Android, where the default Cordova images are instead used. This problem does not exist on iOS.
What behaviour are you expecting?
Icons and splash screens generated by ionic resources
(which comes up with the Ionic logos if no other icon or splash screen is provided) to be used in the Android app.
Steps to reproduce:
ionic start x
cd x
ionic platform add android
ionic resources
ionic build android
ionic run android
Other information: (e.g. stacktraces, related issues, suggestions how to fix, stackoverflow links, forum links, etc)
The res
directory created in the root of the project (following the ionic resources
command) contains the expected Ionic logo images (which are created by the ionic resources
command as an example) in the many different sizes required by Android.
The platform/android/res
directory, however, contains all of the default Cordova images, which appear to be the ones actually being used.
platform/res/android/xml/config.xml
perfectly matches the expected config.xml
, so it is copying that across as expected, but not the generated images.
Which Ionic Version? 1.7.14
Run ionic info
from terminal/cmd prompt: (paste output below)
Your system information:
Cordova CLI: 6.4.0
Gulp version: CLI version 3.9.1
Gulp local:
Ionic Version: 1.3.2
Ionic CLI Version: 1.7.14
Ionic App Lib Version: 0.7.0
ios-deploy version: 1.9.0
ios-sim version: 5.0.10
OS: Mac OS X El Capitan
Node Version: v6.6.0
Xcode version: Xcode 8.1 Build version 8B62
About this issue
- Original URL
- State: closed
- Created 8 years ago
- Reactions: 39
- Comments: 51 (1 by maintainers)
Commits related to this issue
- Use latest cordova android to fix icon/splash bug https://github.com/driftyco/ionic-cli/issues/1608#issuecomment-275393559 — committed to longzheng/mypal-ionic by longzheng 7 years ago
- fixed icons according https://github.com/ionic-team/ionic-cli/issues/1608#issuecomment-257206216 — committed to gurix/familie_persoenlichkeitsDiagnostik by gurix 7 years ago
I found my problem. I created a new ionic test project and the splashscreen is working. So I made a diff between the two config.xml files.
I was using
<preference name="SplashScreen" value="splash"/>
instead of<preference name="SplashScreen" value="screen"/>
.Thus, I can tell this configuration is working:
ionic lib: 2.0.0-rc2
ionic cli: 2.1.8
cordova: 6.4.0
cordova-android: 6.1.0
cordova-plugin-splashscreen: 4.0.0
All you have to do is:
ionic platform remove android
ionic platform add android@6.1.0
ionic resources
A valid Android splashcreen config line should look like:
<splash src="resources/android/splash/drawable-port-ldpi-screen.png" density="port-ldpi"/>
Hope this helps! 😃
Note that my current workaround to get it built with the icons is to simply move them into the correct position. I do that like so:
However I suspect if I generate a new set of icons or prepare the Android platform again, these steps would be reversed.
If you’re splashscreens and icons are not getting used/copied, run
Android 6.0 (which cordova currently has pinned as the default version) had a bug with resources not being used.
I had the same issue with the following system information:
and my cordova-android version is 6.0.0
I tried the solutions above but none of them worked for me.
Finally I managed to make it work by downgrading Cordova CLI from 6.4.0 to 6.3.1 by running the following command:
npm install -g cordova@6.3.1
and removing & adding android platform then re-building for android:
Note: In this solution, instead of
qualifier
I keep usingdensity
attribute in config.xml. For example,<icon src="resources/android/icon/drawable-ldpi-icon.png" density="ldpi"/>
or<splash src="resources/android/splash/drawable-port-xxxhdpi-screen.png" density="port-xxxhdpi"/>
Thanks @florentsuc, your tips helped me a lot.
Add
<engine name="android" spec="~6.1.0" />
to the config.xml file to makeionic platform add android
always resolve to 6.1.0.@EmreErdogan your solution solved my problem. Downgrading cordova solves all problems!
For the people reading this, just uninstall the current cordova before installing the older version.
@florentsuc I’ve been reading your comment multiple times and just realized I’m using
cordova-android@6.0
. Upgrade tocordova-android@6.1
solved the issue. The icon & splash works great now. Thanks! 😃+1
Hi folks, I have this pb also. I think I know the reason (don’t worry it has nothing to do with Illuminatis 😉. The command “ionic resources” updates config.xml. The code written is partly bad code. Instead of “density” inside:<splash src="resources/android/splash/drawable-land-ldpi-screen.png" density="land-ldpi"/> It should be “qualifier” as here: <splash src="resources/android/splash/drawable-port-hdpi-screen.png" qualifier="port-hdpi"/> Then magically the build process creates the right folders and copy the right files for every screens. So basically the CLI has to be patched (PLZ supa Ionic Team). But for know let’s house party: https://www.youtube.com/watch?v=tGJEe-yGLos
@herkulano Sorry, i have a problem with tha Node 6.9.X, say
sys is deprecated. Use util instead
. I wanna to know this hide using Node 7.0 or above.@florentsuc - Thanks for the instructions. I can now see my custom icon on my Android device.
Hope this issue gets a good resolution: an app distributed with a default cordova icon gives a bad impression, even if distributed only for testing purposes.
Yes, having the same issue just after updating Ionic and Cordova NPM libraries.
Using Ionic 1.3.2 app
Update:
Hmm, mine appears to be a bigger issue than that, none of my Plugins (using the Ionic Native library) are no longer loading/found (all is fine for iOS), installed/reinstalled all plugins/platforms etc, strange because I have managed to upgrade fine in the past…
Also to note: Upgraded all Android SDK tools… Uninstalled and Reinstalled Cordova/Ionic
will investigate further…
** Lastest Update **
So after the various CLI updates. It appears if I use an explicit older android cli platform:
cordova platform add android@5.2.2
Fixed the issues with plugins, icons ect, and runs fine.I have noticed the ‘res’ folder was appearing (cordova 6) (with the correct iocns) in the root folder of my inital app files, NOT the platform generated folder
So, this should be considered a Cordova issue?
@mhartington Upgrading to latest android worked for me.
@almothafar thanks.
It was working already with @florentsuc post. My splash problem was the previous value of:
<preference name="SplashScreenDelay" value="10000"/>
was set at0
. Changed it and it’s now working correctly.@florentsuc thanks!
It worked for the icon but I still have the splash screen blank issue.
My
config.xml
My info
Platforms
@camexapps , your solution to do
cordova platform add android@5.2.2
worked. NOTE: This is for a cordova backbone app - thought i’d post here since this seems to be more a cordova issue than an ionic issue.Thanks a lot @florentsuc. I updated android platform to 6.1.3 but seems like only 6.1.0 works well.
I too have the issue. I just did
because I was on android@6.0.0 and it seems it is the cause of the problem.
But then I go through a lot of errors on compilation, plugins errors like:
I tried
ionic plugin rm
andionic plugin add
all the plugins, but I still see these errors.Can you help ?
@EmreErdogan solution doesn’t seem to work.
Thank you both! @felippepuhle @florentsuc
But why isn’t the 6.1 engine set as default if it contains bugs like this?
Thanks to @florentsuc to get past that frustrating issue!
Now, in my case, my app is saved on device with the correct icon. And also getting the splash screen shown with correct image. However, after the splash display, the screen goes all white. Nothing happens! 😦
Any suggestions or pointers?
Your help is highly appreciated!
Thanks @florentsuc !!
@florentsuc and @felippepuhle Thank you, the workaround worked, but bad news I have a new issue, the splash screen shown as a blank, not image one, if I use
<preference name="SplashScreen" value="screen" />
it works.Gracias @florentsuc y @felippepuhle, the workarround worked for me!
Upgrade to 6.1 worked. Many thanks to @florentsuc and @felippepuhle!
@florentsuc Thanks!
GET IT. GOTTCHA YOU BUGGY BUG! My solution with a config like: Cordova CLI: 6.4.0 + Ionic Framework Version: 2.0.0-rc.2 + Ionic CLI Version: 2.1.4; is basically: after the Command $ionic resource, in config.xml for all the <splash src="resources/android/splash/drawable-land-ldpi-screen.png" density="land-ldpi"/> REPLACE “density” by “qualifier” AND in <preference name="SplashScreen" value="screen"/> REPLACE value=“screen” by value=“splash”