MTK 一个分支兼容多客户开机Logo方案

前言

做源码开发的一般都涉及到多个分支,都是同一套源码,但面对不同的客户不同的定制,经常会多开分支。

最简单的就如每个客户开机logo都不一样,经常打系统的你肯定会很魔怔,今天换这家的logo明天另外一家的logo。

这篇就是为了解决这一痛点,如何在一个分支搞定 N 个客户的开机 Logo。

简单科普

MTK 的开机logo图片路径在
vendor\mediatek\proprietary\bootable\bootloader\lk\dev\logo\xxx 目录下

xxx 定义对应宏 BOOT_LOGO = wxga

device\mediateksample\型号\ProjectConfig.mk

vendor\mediatek\proprietary\bootable\bootloader\lk\project\型号.mk

修改 BOOT_LOGO 就能去对应的文件夹中找指定的开机logo

主要包含两张 xxx__kernel.bmp 和 xxx_uboot.bmp,图片格式必须是 bmp 的,注意不是改后缀就行了,而是原图保存的时候就选 bmp,这两张图片一般都是一样的,uboot 对应开机时第一帧图片,kernel 对应进入开机动画前的过程显示。其实 MTK 已经为运营商提供了多种分辨率对应开机logo文件夹

在这里插入图片描述

但每次都要进入这么深的目录修改也是挺麻烦的,所以我写了个脚本从其它路径拷贝至对应的文件夹,编译的时候就打包我们拷贝的

具体实现

**1、在 device\mediateksample\型号\ProjectConfig.mk 中新增宏定义 **

用于判断是否需要从自定义的路径拷贝 logo 至 dev 路径下
MTK_CUSTOM_BOOTLOGO = yes
用于对应客户名称logo文件夹
MTK_CUSTOM_BOOTLOGO_FOLDER = tencent

以后每次编译只需修改 MTK_CUSTOM_BOOTLOGO_FOLDER 宏,

比如这次打包 tencent,下次打包 pdd,在下次打包 jd,不想拷贝时,修改 MTK_CUSTOM_BOOTLOGO = no

2、在 vendor/mediatek/BootLogo 下新建 tencent、pdd、jd 文件夹

文件夹中放置客户提供的两张开机logo图片 wxga_kernel.bmp wxga_uboot.bmp

3、编写 mk 和 sh 脚本文件

在 BootLogo 路径下新建如下的两个文件

Android.mk

用 MTK_CUSTOM_BOOTLOGO 判断是否需要执行 logo.sh 脚本文件,执行时传递参数 客户文件夹名称 和 目标文件夹名称

ifeq ($(MTK_CUSTOM_BOOTLOGO), yes)
LOCAL_PATH := $(call my-dir)

$(info ${TARGET_OUT})

COPY_FILES = $(shell ${LOCAL_PATH}/logo.sh ${BOOT_LOGO} ${MTK_CUSTOM_BOOTLOGO_FOLDER})

$(info ${COPY_FILES})

$(info pathl ${TARGET_COPY_OUT_VENDOR})

endif

logo.sh

接受参数,先删除 out 目录下的 lk.img 便于重新生成,烧写时验证效果,

从客户文件夹拷贝 bmp 到 BOOT_LOGO 文件下,判断名称是否是 wxga,

如果不是则根据 boot_logo 重新命名

#!/bin/bash


echo -e "logo_path=${2}"

echo -e "param_sytem_path=${1}"
echo -e "out_system_path=${OUT}" 

echo -n "remove old lk.img... "
rm  ${OUT}/lk.img 
echo "done."

target_logo_img_path=$(pwd)/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/${1}
echo target_logo_img_path=$target_logo_img_path

kernel_img_path=$(pwd)/vendor/mediatek/BootLogo/${2}/wxga_kernel.bmp
uboot_img_path=$(pwd)/vendor/mediatek/BootLogo/${2}/wxga_uboot.bmp
echo kernel_img_path=$kernel_img_path
echo uboot_img_path=$uboot_img_path


cp -f $kernel_img_path $target_logo_img_path
cp -f $uboot_img_path  $target_logo_img_path

if [ ${1} != "wxga" ]
then
   echo "target folder not wxga"
   mv ${target_logo_img_path}/wxga_kernel.bmp  ${target_logo_img_path}/${1}_kernel.bmp
   mv ${target_logo_img_path}/wxga_uboot.bmp  ${target_logo_img_path}/${1}_uboot.bmp
   echo "rename target logo done"
fi

echo -e "\n logo.sh make done...."


发布了87 篇原创文章 · 获赞 157 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/u012932409/article/details/103409913
MTK
今日推荐