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...."


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章