June 18th 2017
These are my experiences on a rooted Acer E39 (a.k.a liquid E700) with Android 4.4.2 (kitkat).
I hope they apply to other models & Android versions, too.
Most of the work (except where indicated otherwise) was done on an Arch Linux desktop computer.
First of all you should have an idea what sort of animation you want.
Let's assume you have downloaded, created or modified a GIF animation. However, the bootanimation needs to consist of separate images - they can be PNG or JPG (maybe other formats, too).
Explode GIF animation to individual images (but make sure each image is a complete image)
We need to explode the GIF in a way that every resulting image looks like what one would see when looking at the animation (usually each new layer does not contain the whole image, but only the bits that change).
We also (most probably) need to resize the images to fit our phone's resolution.
This is possible to achieve with gimp.
- Open the gif animation in gimp
- To resize the canvas, use Image => Canvas Size...
- From the menu, choose Filter => Animation => Unoptimize
- This should create a new layered image
- From the menu, choose File => Export Layers...
That's it really.
Unfortunately gimp seems to insist on giving overly complicated names to the resulting files, but a batch renaming tool like gprename can be applied afterwards.
Putting it all together
So you have an idea of what the animation will look like (e.g. a non-looped intro part, and a continuously looped ending) - all you need now is to create a folder structure, add a simple text file, and zip it all together.
There's a very good description of the whole process here - it doesn't seem to have changed at all in the last 6 years.
Zip the files, and push bootanimation.zip
desc.txtmust be in the root of the zip file! no subfolders!
the file must be zipped without compression. An appropriate command, executed from inside the folder that contains
desc.txtand image folders:
zip -r -0 bootanimation.zip .
Pushing the file to the phone should be trivial, but getting it copied to /system/media might pose a riddle, because
- one needs to be root for that (and /system needs to be remounted rw)
- external storage isn't accessible while being root
- adb cannot push with root privileges
For me, the solution was to a) ... (lost in the mists of time, but I do remember that the trusty Ghost Commander was involved)
- File permissions must be
-rw-r--r--and the file owner must be root (group root)
Optional & much harder: Change First Boot Logo
1st Try: Get boot.img from device - (Didn't work)
After reading this article...
In my case, this amounted to:
su cat /dev/block/platform/mtk-msdc.0/mmcblk0boot0 > /storage/sdcard1/boot0.img cat /dev/block/platform/mtk-msdc.0/mmcblk0boot1 > /storage/sdcard1/boot1.img
... I managed to extract something but couldn't do anything with it.
But I still got good & important information from that article, so I am including it here.
2nd Try: Get logo.bin, modify it, create an update.zip (under Windows)
I extracted the file in a Windows 7 virtual machine, there's an executable inside it.
The example logo.bin is of no use, since it is for a different device.
So, how to get my phone's original logo.bin? After some searching I found the original firmware image (of the whole operating system) here.
Download the zip, open it, extract logo.bin, and proceed as outlined in the previously mentioned article. The software complains about files being of wrong size, but I just pressed "Ignore". Edited the .png images to my liking, created ("Make") an update.zip, moved it to the root of my phone's external storage, rebooted into recovery, chose "Apply update.zip"... Voilá. Worked on the first try, phone is not bricked (I admit I was anticipating the worst).