开机动画严格意义上可以分为三个步骤:
1.开机第一屏
2.开机第二屏
3.开机动画
Boot logo:
1. 开机显示的顺序如下:
boot logo(开机第一屏) (logo.bin 中)
Kernel logo(开机第二屏) (system/media/images/boot_logo 文件)
Boot animation(开机动画)(system/media/bootanimation.zip 文件)
2. boot logo和kernel log所用的图片资源在 mediatek/custom/common/lk/logo 目录下。
在ProjectConfig.mk中指定具体目录,比如BOOT_LOGO=hvga,表示用hvga目录下的资源,该目录下的资源都是bmp文件。
hvga_uboot.bmp是第一屏,hvga_kernel.bmp是第二屏。(替换重新编译这部分重新下载即可)
在logo/update 文件中会调用tool/bmp_to_raw将bmp文件转换成raw文件,并且在make uboot时会将这些资源文件放到logo.bin 中。
Logo/update 针对hvga_XXX_kernel.bmp有特殊处理,将其转成raw文件并命名为/logo/boot_logo
在mediatek/source/external/boot_logo_upater/Android.mk中会将boot_logo 文件放到out/target/product/system/media/images/boot_logo. 这样就放到了system.img中.
3. boot logo的显示: boot.img中加载logo.img中的boot 图片显示;
Kernel logo的显示: init.rc 启动 service bootlogoupdater /system/bin/boot_logo_updater .
boot_logo_updater这个可执行程序由boot_logo_updater.c 编译而成,其功能是从/system/media/images/boot_logo 中读出kernel_boot资源,并通过framebuffer直接显示到LCD上。
注:可以根据logo/update中的脚本单独生成boot_logo文件(修改第二屏),然后用adb remount/adb push的方法直接放到手机里面观察效果。
下面依次来修改三个屏幕。
1.开机第一屏
这一屏的修改主要是制作一个update.zip的升级包,用recovery刷上去就看到效果了。
但对于山寨机来说,就比较麻烦了(木有第三方recovery,官方的recovery战斗力就是个渣渣(原因可自行百度))。
(1)adb pull 导出logo文件(是的,木有后缀,我手边的机子是在/dev/目录下)
(2)将logo文件加个后缀.bin
(3)下载开机第一屏制作软件LogoBuilder
(4)如图,替换img1图片(也就是开机第一屏),点击“开始生成”,导出update.zip的刷机包
(5)将生成的卡刷包 update.zip 拷到sd卡根目录下,手机进入 recovery ,进行卡刷(特别提醒:不要双清),刷完后重启手机就会看到新的第一屏。
注:悲剧的是,自己不会做第三方recovery,而这破机子也没有第三方recovery!
2.开机第二屏
(1)使用 bmp_to_raw 将bmp图片转换为raw格式并 命名为 boot_logo
(2)使用adb 命令将boot_logo文件push到 /system/media/images目录下,重启即可。
3.开机动画
(1)导出bootanimation.zip 文件至PC
(2)解压缩,发现2个目录和一个desc.txt的"脚本文件"
bootanimation.zip里面一般有两个文件夹part0,part1,一个文本文件desc.txt
dest.txt里面的参数是用来控制播放的,
比如:
第一行 320 480 24 540*960是手机的分辨率,而接着的一秒播放多少帧,这里是24
第二行 p 1 0 part0 这里第一个数字1表示播放1遍,第二个数字表示不停顿,而part0表示播放用的图片文件夹
第三行 p 0 0 part1 这里第一个数字0表示循环播放,第二个数字若不为0,则表示每播放到当前这个数字的帧停顿一下,(以10为例,就是每播放10帧停一下)而part1表示播放用的图片文件夹
更换两个文件夹的文件为自己的逐帧动画图片素材,重新打包为zip文件。
注意:要存为zip格式,并且只能是存储,否则开机动画是播放不出来的
制作好之后进行替换就可以了需要注意的是文件容量不能太大尽量不要高于原开机动画大多否则会造成读取慢卡失效