Android系统之Mtk开机logo镜像单独制作(不用全编译代码)

一.问题背景

在我们客制系统版本时,经常有时候会有需求就是单独更新一个客制logo,如果每次仅仅就是更改一个开机logo,我们每次都需要有一个完整编译的out,也就意味着可能要全编,这想必是非常低效率的,
了解高通平台的人知道,高通的开机logo由单独的 splash.img 分区 包含,且高通有非常便利的python脚本可以直接将一张png格式的开机logo图片转换成splash.img,以达成不用编译代码,直接替换 splash.img 分区即可完成开机logo替换的客制版本,这可所谓真香,
但是MTK平台就没那么香了,他们没有专门的脚本去制作,每次都需要单独去替换开机logo图片,所以特别麻烦,低效率
那么对于MTK平台,是否也有办法,不进行全编,答案肯定是有滴,我们这篇文章的目的就是这个。

二.MTK 通过编译代码去定制客制开机logo版本

在讲解如何单独制作开机logo之前,我们有必要先简单了解一下如何通过编译代码的形式去定制客制logo,因为这有利于我们了解后续单独制作开机logo的分析和原理。

定位到 源码的如下目录:
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo
可以看到mtk开机logo都在这个目录,但是这个目录有太多文件夹,如何确定当前的代码是使用的哪个文件夹呢?
再次定位到:
vendor/mediatek/proprietary/bootable/bootloader/lk/project
打开对应的工程文件 makefile文件
在这里插入图片描述
可以看到有一个BOOT_LOGO 字段的定义,其值表示的就是当前版本的开机logo所存在的文件夹,然后我们在
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo
目录下找到该文件夹,
替换对应文件下
hd720_uboot.bmp
hd720_kernel.bmp
然后 make -j16 去编译代码即可。如果发现有时候编译不生效,可能是编译器未检测到修改等,可以尝试删除
out/target/product/*/obj/LK_OBJ/build-*/dev/logo
然后再次尝试重新编译即可。

三.MTK如何单独制作开机logo

上面我们已经知道通过全编译源码制作开机logo,其实用心观察编译日志的同学不难发现,编译日志其实已经告诉我们如何制作了,看到部分编译日志类似如下:

BOOT_LOGO = wxganl
lk/logo/dir=dev/logo,builddir=**/out/target/product/**/obj/LK_OBJ/build-**
libshowlogo new path ------- platform/mt6771/../../lib/libshowlogo
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_uboot.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_battery.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_low_battery.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_uboot.raw dev/logo/wxganl/wxganl_uboot.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_battery.raw dev/logo/wxganl/wxganl_battery.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_low_battery.raw dev/logo/wxganl/wxganl_low_battery.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_charger_ov.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_charger_ov.raw dev/logo/wxganl/wxganl_charger_ov.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_num_0.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_0.raw dev/logo/wxganl/wxganl_num_0.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_num_1.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_1.raw dev/logo/wxganl/wxganl_num_1.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_num_2.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_2.raw dev/logo/wxganl/wxganl_num_2.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_num_3.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_3.raw dev/logo/wxganl/wxganl_num_3.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_num_4.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_4.raw dev/logo/wxganl/wxganl_num_4.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_num_5.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_5.raw dev/logo/wxganl/wxganl_num_5.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_num_6.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_6.raw dev/logo/wxganl/wxganl_num_6.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_num_7.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_7.raw dev/logo/wxganl/wxganl_num_7.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_num_8.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_8.raw dev/logo/wxganl/wxganl_num_8.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_num_9.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_9.raw dev/logo/wxganl/wxganl_num_9.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_num_percent.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_percent.raw dev/logo/wxganl/wxganl_num_percent.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_animation_01.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_01.raw dev/logo/wxganl/wxganl_bat_animation_01.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_animation_02.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_02.raw dev/logo/wxganl/wxganl_bat_animation_02.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_animation_03.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_03.raw dev/logo/wxganl/wxganl_bat_animation_03.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_animation_04.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_04.raw dev/logo/wxganl/wxganl_bat_animation_04.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_animation_05.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_05.raw dev/logo/wxganl/wxganl_bat_animation_05.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_animation_06.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_06.raw dev/logo/wxganl/wxganl_bat_animation_06.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_animation_07.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_07.raw dev/logo/wxganl/wxganl_bat_animation_07.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_animation_08.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_08.raw dev/logo/wxganl/wxganl_bat_animation_08.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_animation_09.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_09.raw dev/logo/wxganl/wxganl_bat_animation_09.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_animation_10.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_10.raw dev/logo/wxganl/wxganl_bat_animation_10.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_10_01.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_01.raw dev/logo/wxganl/wxganl_bat_10_01.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_10_02.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_02.raw dev/logo/wxganl/wxganl_bat_10_02.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_10_03.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_03.raw dev/logo/wxganl/wxganl_bat_10_03.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_10_04.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_04.raw dev/logo/wxganl/wxganl_bat_10_04.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_10_05.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_05.raw dev/logo/wxganl/wxganl_bat_10_05.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_10_06.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_06.raw dev/logo/wxganl/wxganl_bat_10_06.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_10_07.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_07.raw dev/logo/wxganl/wxganl_bat_10_07.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_10_08.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_08.raw dev/logo/wxganl/wxganl_bat_10_08.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_10_09.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_09.raw dev/logo/wxganl/wxganl_bat_10_09.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_10_10.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_10.raw dev/logo/wxganl/wxganl_bat_10_10.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_bg.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_bg.raw dev/logo/wxganl/wxganl_bat_bg.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_img.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_img.raw dev/logo/wxganl/wxganl_bat_img.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_bat_100.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_100.raw dev/logo/wxganl/wxganl_bat_100.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_kernel.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_kernel.raw dev/logo/wxganl/wxganl_kernel.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_low_battery01.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_low_battery01.raw dev/logo/wxganl/wxganl_low_battery01.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_low_battery02.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_low_battery02.raw dev/logo/wxganl/wxganl_low_battery02.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_low_battery_remind.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_low_battery_remind.raw dev/logo/wxganl/wxganl_low_battery_remind.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_100.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_100.raw dev/logo/wxganl/wxganl_fast_charging_100.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_ani-01.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_ani-01.raw dev/logo/wxganl/wxganl_fast_charging_ani-01.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_ani-02.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_ani-02.raw dev/logo/wxganl/wxganl_fast_charging_ani-02.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_ani-03.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_ani-03.raw dev/logo/wxganl/wxganl_fast_charging_ani-03.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_ani-04.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_ani-05.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_ani-06.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_00.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_01.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_02.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_ani-04.raw dev/logo/wxganl/wxganl_fast_charging_ani-04.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_03.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_04.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_ani-05.raw dev/logo/wxganl/wxganl_fast_charging_ani-05.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_ani-06.raw dev/logo/wxganl/wxganl_fast_charging_ani-06.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_00.raw dev/logo/wxganl/wxganl_fast_charging_00.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_01.raw dev/logo/wxganl/wxganl_fast_charging_01.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_02.raw dev/logo/wxganl/wxganl_fast_charging_02.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_03.raw dev/logo/wxganl/wxganl_fast_charging_03.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_04.raw dev/logo/wxganl/wxganl_fast_charging_04.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_05.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_05.raw dev/logo/wxganl/wxganl_fast_charging_05.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_06.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_06.raw dev/logo/wxganl/wxganl_fast_charging_06.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_07.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_07.raw dev/logo/wxganl/wxganl_fast_charging_07.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_08.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_08.raw dev/logo/wxganl/wxganl_fast_charging_08.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_09.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_09.raw dev/logo/wxganl/wxganl_fast_charging_09.bmp
Compiling_BMP_TO_RAW dev/logo/wxganl/wxganl_fast_charging_percent.bmp
dev/logo/tool/bmp_to_raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_percent.raw dev/logo/wxganl/wxganl_fast_charging_percent.bmp
generating **/out/target/product/**/obj/LK_OBJ/build-**/system-onesegment.ld
zpiping 
dev/logo/tool/zpipe -l 9 **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/boot_logo.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_uboot.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_battery.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_low_battery.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_charger_ov.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_0.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_1.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_2.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_3.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_4.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_5.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_6.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_7.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_8.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_9.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_num_percent.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_01.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_02.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_03.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_04.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_05.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_06.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_07.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_08.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_09.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_animation_10.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_01.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_02.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_03.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_04.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_05.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_06.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_07.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_08.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_09.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_10_10.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_bg.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_img.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_bat_100.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_kernel.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_low_battery01.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_low_battery02.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_low_battery_remind.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_100.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_ani-01.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_ani-02.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_ani-03.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_ani-04.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_ani-05.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_ani-06.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_00.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_01.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_02.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_03.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_04.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_05.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_06.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_07.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_08.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_09.raw **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/wxganl/wxganl_fast_charging_percent.raw
MKING **/out/target/product/**/obj/LK_OBJ/build-**/logo.bin start
dev/logo/../../scripts/mkimage
**/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/boot_logo.raw
**/out/target/product/**/obj/LK_OBJ/build-**/logo.bin
dev/logo/../../scripts/mkimage **/out/target/product/**/obj/LK_OBJ/build-**/dev/logo/boot_logo.raw dev/logo/img_hdr_logo.cfg > **/out/target/product/**/obj/LK_OBJ/build-**/logo.bin

通过上面的日志其实我们可以看到制作logo.bin用到了三个工具和一个配置文件
dev/logo/tool/bmp_to_raw
dev/logo/tool/zpipe
dev/logo/../../scripts/mkimage
dev/logo/img_hdr_logo.cfg

  1. 首先第一步通过bmp_to_raw工具先将bmp全部转成raw格式
  2. 再通过 zpipe 工具 将所有的raw文件压缩成一个总的raw
  3. 最后通过 mkimage工具 和 mg_hdr_logo.cfg 将总的 raw 转成logo.bin

通过查询,其过程实现都在rule.mk中
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/rule.mk
在这里插入图片描述

还有比较重要的一点是,通过上面的日志其实我们也可以看出logo.bin中不仅包含了开机logo,还有关机充电图标等。
那么我们已经知道了开机logo的过程之后,我们现在简单写一个脚本去控制这几个步骤如下:

#!/bin/bash

set -e
D_CURR=`pwd`

if [ "$1" = "" ]; then
	echo "Please input BOOT_LOGO name,"
	echo "Such as:hd720,hdplus,wqxga"
	exit
fi

SUFFIX_RAW=.raw
SUFFIX_BMP=.bmp
BASE_LOGO=$1
BOOT_LOGO_RESOURCE=boot_logo.raw
logo_array=("${BASE_LOGO}_uboot" \
"${BASE_LOGO}_battery" \
"${BASE_LOGO}_low_battery" \
"${BASE_LOGO}_charger_ov" \
"${BASE_LOGO}_num_0" \
"${BASE_LOGO}_num_1" \
"${BASE_LOGO}_num_2" \
"${BASE_LOGO}_num_3" \
"${BASE_LOGO}_num_4" \
"${BASE_LOGO}_num_5" \
"${BASE_LOGO}_num_6" \
"${BASE_LOGO}_num_7" \
"${BASE_LOGO}_num_8" \
"${BASE_LOGO}_num_9" \
"${BASE_LOGO}_num_percent" \
"${BASE_LOGO}_bat_animation_01" \
"${BASE_LOGO}_bat_animation_02" \
"${BASE_LOGO}_bat_animation_03" \
"${BASE_LOGO}_bat_animation_04" \
"${BASE_LOGO}_bat_animation_05" \
"${BASE_LOGO}_bat_animation_06" \
"${BASE_LOGO}_bat_animation_07" \
"${BASE_LOGO}_bat_animation_08" \
"${BASE_LOGO}_bat_animation_09" \
"${BASE_LOGO}_bat_animation_10" \
"${BASE_LOGO}_bat_10_01" \
"${BASE_LOGO}_bat_10_02" \
"${BASE_LOGO}_bat_10_03" \
"${BASE_LOGO}_bat_10_04" \
"${BASE_LOGO}_bat_10_05" \
"${BASE_LOGO}_bat_10_06" \
"${BASE_LOGO}_bat_10_07" \
"${BASE_LOGO}_bat_10_08" \
"${BASE_LOGO}_bat_10_09" \
"${BASE_LOGO}_bat_10_10" \
"${BASE_LOGO}_bat_bg" \
"${BASE_LOGO}_bat_img" \
"${BASE_LOGO}_bat_100" \
"${BASE_LOGO}_kernel" \
"${BASE_LOGO}_low_battery01" \
"${BASE_LOGO}_low_battery02" \
"${BASE_LOGO}_low_battery_remind")
echo "BASE_LOGO=${BASE_LOGO}"
OUT_PATH=$(dirname "$0")/out

#delete out dir
if [ -f ${OUT_PATH} ]; then rm -rf ${OUT_PATH}; fi

#create out dir
if [ ! -d ${OUT_PATH} ];then
   mkdir -p ${OUT_PATH}
fi

# step1 bmp_to_raw
echo "==============STEP1 bmp_to_raw START=================="
for logo in ${logo_array[@]}
do
	echo " bmp_to_raw $logo"
	$(dirname "$0")/bmp_to_raw ${OUT_PATH}/$logo${SUFFIX_RAW} $(dirname "$0")/${BASE_LOGO}/$logo${SUFFIX_BMP}
done
echo "====================STEP1 END========================="

# step2 zpipe all raw to boot_logo.raw
echo "======STEP2 zpipe all raws t boot_logo.raw START======"
temp=""
for logo in ${logo_array[@]}
do
	temp+="${OUT_PATH}/$logo${SUFFIX_RAW} "
done
echo "./zpipe -l 9 ./out/${BOOT_LOGO_RESOURCE} $temp"
$(dirname "$0")/zpipe -l 9 ${OUT_PATH}/${BOOT_LOGO_RESOURCE} $temp
#$(dirname "$0")/zpipe -l 9 ${OUT_PATH}/${BOOT_LOGO_RESOURCE} mtk_logo/out/wxganl_uboot.raw mtk_logo/out/wxganl_uboot.raw
#$(dirname "$0")/zpipe -l 9 ${OUT_PATH}/${BOOT_LOGO_RESOURCE} ./mtk_logo/out/wxganl_uboot.raw ./mtk_logo/out/wxganl_battery.raw ./mtk_logo/out/wxganl_low_battery.raw ./mtk_logo/out/wxganl_charger_ov.raw ./mtk_logo/out/wxganl_num_0.raw ./mtk_logo/out/wxganl_num_1.raw ./mtk_logo/out/wxganl_num_2.raw ./mtk_logo/out/wxganl_num_3.raw ./mtk_logo/out/wxganl_num_4.raw ./mtk_logo/out/wxganl_num_5.raw ./mtk_logo/out/wxganl_num_6.raw ./mtk_logo/out/wxganl_num_7.raw ./mtk_logo/out/wxganl_num_8.raw ./mtk_logo/out/wxganl_num_9.raw ./mtk_logo/out/wxganl_num_percent.raw ./mtk_logo/out/wxganl_bat_animation_01.raw ./mtk_logo/out/wxganl_bat_animation_02.raw ./mtk_logo/out/wxganl_bat_animation_03.raw ./mtk_logo/out/wxganl_bat_animation_04.raw ./mtk_logo/out/wxganl_bat_animation_05.raw ./mtk_logo/out/wxganl_bat_animation_06.raw ./mtk_logo/out/wxganl_bat_animation_07.raw ./mtk_logo/out/wxganl_bat_animation_08.raw ./mtk_logo/out/wxganl_bat_animation_09.raw ./mtk_logo/out/wxganl_bat_animation_10.raw ./mtk_logo/out/wxganl_bat_10_01.raw ./mtk_logo/out/wxganl_bat_10_02.raw ./mtk_logo/out/wxganl_bat_10_03.raw ./mtk_logo/out/wxganl_bat_10_04.raw ./mtk_logo/out/wxganl_bat_10_05.raw ./mtk_logo/out/wxganl_bat_10_06.raw ./mtk_logo/out/wxganl_bat_10_07.raw ./mtk_logo/out/wxganl_bat_10_08.raw ./mtk_logo/out/wxganl_bat_10_09.raw ./mtk_logo/out/wxganl_bat_10_10.raw ./mtk_logo/out/wxganl_bat_bg.raw ./mtk_logo/out/wxganl_bat_img.raw ./mtk_logo/out/wxganl_bat_100.raw ./mtk_logo/out/wxganl_kernel.raw ./mtk_logo/out/wxganl_low_battery01.raw ./mtk_logo/out/wxganl_low_battery02.raw ./mtk_logo/out/wxganl_low_battery_remind.raw
echo "====================STEP2 END========================="

# step3 make logo.bin
echo "=================STEP3 make logo.bin=================="
$(dirname "$0")/mkimage ${OUT_PATH}/${BOOT_LOGO_RESOURCE} $(dirname "$0")/img_hdr_logo.cfg > ${OUT_PATH}/logo.bin
echo "====================STEP3 END========================="

# step4 sign logo.bin
echo "=================STEP4 sign logo.bin=================="
source ./build/envsetup.sh
MTK_BASE_PROJECT=$(get_build_var MTK_BASE_PROJECT)
MTK_PLATFORM=$(get_build_var MTK_PLATFORM)
MTK_PLATFORM_DIR=${MTK_PLATFORM,,}
PYTHONDONTWRITEBYTECODE=True PRODUCT_OUT=${OUT_PATH} BOARD_AVB_ENABLE=true python vendor/mediatek/proprietary/scripts/sign-image_v2/sign_flow.py -target logo.bin -env_cfg vendor/mediatek/proprietary/scripts/sign-image_v2/env.cfg "${MTK_PLATFORM_DIR}" "${MTK_BASE_PROJECT}"
echo "====================STEP4 END========================="



首先我们这个脚本执行需要必要的一个 logo参数,也就是之前我们提到的BOOT_LOGO参数
接着我们定义了 BOOT_LOGO_RESOURCE 去管理所有的logo.bin中的图片,就像我们前面提到的logo.bin不仅包含开机logo,还有关机充电动画等图片,需要全部复制过来哦
再接着定义了 OUT_PATH 输出我们生成的中间文件,
接着就是执行我们前面讲到的三个步骤
最后我这里加了一个logo.bin签名步骤,在MTK后续版本越高之后,部分镜像需要签名认证,不然无法烧录和开机。

最后如何使用这个脚本呢
首先我们创建一个mtk_logo这样的文件夹,将我们所有的工具和脚本放进去,
工具贴一下完整目录把:
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/tool/bmp_to_raw
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/tool/zpipe
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/img_hdr_logo.cfg
vendor/mediatek/proprietary/bootable/bootloader/lk/scripts/mkimage

然后复制我们的BOOT_LOGO文件进去,注意复制整个文件夹,logo.bin不止包含单独的开机logo图片哦,
最后将整个 mtk_logo 放到源码根目录,因为执行整个脚本依赖工程,所以在执行脚本之前需要先按照我们编译代码的顺序,先执行

. build/envsetup.sh
lunch

最后执行脚本:

chmod 755 ./mtk_logo/*
./mtk_logo/mtk_logo.sh wxganl

参数wxganl为当前BOOT_LOGO的值
成功后最后会输出开机logo 镜像的路径和STEP4 END

sig:./mtk_logo/out/sig/logo/logo.sig
output path:./mtk_logo/out/logo-verified.bin
====================STEP4 END=========================

最后将 /mtk_logo/out/ 下的 logo-verified.bin 和 logo.bin 覆盖到中性的OS,重新烧录即可。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有头发的猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值