前言

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

最简单的就如每个客户开机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/bashecho -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_pathkernel_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_pathcp -f $kernel_img_path $target_logo_img_path
cp -f $uboot_img_path  $target_logo_img_pathif [ ${1} != "wxga" ]
thenecho "target folder not wxga"mv ${target_logo_img_path}/wxga_kernel.bmp  ${target_logo_img_path}/${1}_kernel.bmpmv ${target_logo_img_path}/wxga_uboot.bmp  ${target_logo_img_path}/${1}_uboot.bmpecho "rename target logo done"
fiecho -e "\n logo.sh make done...."

MTK 一个分支兼容多客户开机Logo方案相关推荐

  1. 【小白刷机】Pixel手机刷Magick模块不兼容重启卡开机logo解决方式

    目录 关于Pixel 为什么要刷机? 刷机流程 1. 手机进入bootloader 2. 电脑准备好系统包和SDK工具包 下载系统包 下载SDK工具包 3. 手机连接电脑 4. 修改配置文件,刷入系统 ...

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

    一.问题背景 在我们客制系统版本时,经常有时候会有需求就是单独更新一个客制logo,如果每次仅仅就是更改一个开机logo,我们每次都需要有一个完整编译的out,也就意味着可能要全编,这想必是非常低效率 ...

  3. MTK开机LOGO图片的显示原理

     MTK开机LOGO图片的显示原理 一.图片的定义 1 1.1.update脚本 1 1.2.rules.mk脚本 2 1.3.图片的宏定义cust_display.h(索引序列号) 3 二.LO ...

  4. Android9.0 MTK 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)

    文章较长建议先收藏再看 拆解步骤 1.app 强制横屏显示,无视 android:screenOrientation="portrait" 属性 2.屏幕触摸坐标修改为横屏 3.开 ...

  5. MTK平台修改开机动画,开机logo

    修改开机logo 找到目录 trunk/mediatek/custom/common/lk/logo/ 该目录下面有很多的文件夹,都是在不同分辨率下面的logo 要修改的话就看需要修改哪个分辨律下面的 ...

  6. mtk使用android开关机动画,Android9.0 MTK 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)...

    文章较长建议先收藏再看 拆解步骤 1.app 强制横屏显示,无视 android:screenOrientation="portrait" 属性 2.屏幕触摸坐标修改为横屏 3.开 ...

  7. Android MTK 6572 修改开机logo和开机动画

    1.     开机logo 因为我们显示屏分辨率480*800,所以 \mediatek\config\hsimobile77_ics2\ProjectConfig.mk下的BOOT_LOGO=wvg ...

  8. MTK平台修改Android动画,Android MTK平台修改开关机动画和开机logo

    转载请注明出处:http://blog.csdn.net/u011479494/article/details/50682089 一.修改开机logo 由于我的机器分辨率为540*960 替换:med ...

  9. Android MTK平台修改开关机动画和开机logo

    转载请注明出处:http://blog.csdn.net/u011479494/article/details/50682089 一.修改开机logo 由于我的机器分辨率为540*960 替换:med ...

  10. Android10.0 MTK 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)

    拆解步骤 1.app 强制横屏显示,无视 android:screenOrientation="portrait" 属性 2.开机动画横屏 3.开机logo.关机充电动画横屏 4. ...

最新文章

  1. mysql sql诊断建议_MySQL诊断调优常用SQL语句
  2. SpringBoot 整合 Redis 实现消息队列
  3. 使用循环计算斐波那契数列
  4. 微信小程序使用template模板
  5. 运算符面试题(剑指offer,面试宝典,牛客网)
  6. var let this的区别
  7. Oracle 11g R2的卸载与重装
  8. SqlServer存储过程基础
  9. windows内核驱动
  10. PSP3000/2000V3用5.03GEN-C安装教程
  11. 用VS运行程序错误,提示0x000007b
  12. 我用AI大模型帮我写公众号赚钱!
  13. JAVA系统蓝屏_Tomcat启动系统蓝屏
  14. JD-JUI反编译问题
  15. JAVA系列:获取当天0点0分0秒(00:00:00),23点59分59秒(23:59:59)的方法
  16. python forward函数___call__、__init__和 forward三个函数在python中的调用方法
  17. 六安职院美和易思互联网+特色专业举行第一届HTML网页设计大赛
  18. 警告标志:警告车辆、行人注意危险地点的标志
  19. Android应用中保存网络图片功能实现详解
  20. ipad里excel文件计算机,ipad怎么看excel和Word?ipad查看Word和Excel文件

热门文章

  1. 你还在使用xshell绿色破解版?
  2. Visio绘制电路图
  3. 浏览器提示:你的连接不是专用连接的解决方法
  4. MacOS Ventura 13.0 Beta8 (22A5352e) 带 OC 0.8.4 三分区原版黑苹果镜像
  5. 北京化工大学研究生学堂在线矩阵论及其应用答案
  6. win10 64位 Compaq Visual Fortran(CVF)安装教程
  7. Java进行音视频转码
  8. 三菱Q协议PLC TCP/IP通讯协议解析简述
  9. 腾讯公司执行董事 董事会主席兼本公司首席执行官 马化腾
  10. Maven的介绍与安装步骤