高通平台开机LOGO的修改与兼容

时间:2024-03-28 09:57:24

平台:高通msm8909
版本:Android5.1

一.开机LOGO的修改
在我之前的博客中,手机模式及分区中有和大家说过,高通平台有splash.img该镜像主要存放开机的第一帧画面,也就是我们所说的LOGO。我们修改开机第一帧画面,其实实质也是修改图片产生的splash.img文件。
  在我们手机正常启动的情况下,一般会有我们会看到一幅图片一段动画,这两个存在的意义呢,也是为了用户在开机的情况下,能判断他的手机正在开机,要不然总不能盯着黑屏或者白屏看吧。手机的启动其实大体分为两部分,kernel的启动与system的启动,当我们看到的是一张图片的时候,系统正在启动kernel,当我们看到的是动画的时候,kernel已经启动完成,开始启动system了。今天主要分享的是第一幅的图片的修改。
   第一幅图片的修改主要和一下几个文件有关:
   1. /LINUX/android/device/qcom/msm8909/Logo.png
     开机显示的第一帧图片,注意和屏幕分辨率的对应关系。
   2./LINUX/android/device/qcom/common/display/logo/logo_gen.py
     将图片转化为系统可以使用的数组的python脚本
高通平台开机LOGO的修改与兼容
这个python脚本很好理解,就是把我们的png图片转化为splash.img。
   3./LINUX/android/device/qcom/common/generate_extra_images.mk
这个文件主要里有一段话就是编译安卓版本的时候,自动产生splash.img文件。
高通平台开机LOGO的修改与兼容

对于修改开机第一帧图片,其实我们只需要,自己执行logo_gen.py脚本,用我们自己图片产生的splash.img替换掉刷机包里面的splash.img文件就好,要是项目上整体需要修改,直接替换掉Logo.png就好,虽然修改第一帧图片是很简单的事情,但是要理解整体的框架,就需要在花时间了,接下来我们来看下实际项目中的需求.

二.开机LOGO的兼容
需求:同一型号的手机存在两种分辨率的屏,FWVGA和HD(720P),需要在不同分辨率的情况下加载不同的第一帧图片。
思路:在LK启动的过程中通过判断不同分辨率的状态,加载不同splash.img文件
我们从以下几个步奏来解决:
 1.准备对应两种屏幕Logo.png放入/LINUX/android/device/qcom/msm8909/路径下
 2.后期会通过splash1.img与splash2.img来区分,所以我们的python脚本也修改一下。
高通平台开机LOGO的修改与兼容
让我们的python脚本可以增加一个参数,可以用来修改产生的文件名。
 3.对应的generate_extra_images.mk,我们进行下修改
高通平台开机LOGO的修改与兼容
4.修改/LINUX/android/bootable/bootloader/lk/app/aboot/aboot.c文件,通过判断分辨率加载不同的splash.img.
原来加载的代码如下:
高通平台开机LOGO的修改与兼容
原生的代码的是先进行splash的传输,再进行分辨率的判断,我们做一下适当的修改,让其通过当前分辨率的判断进行不同splash的加载。
修改后的代码如下:
高通平台开机LOGO的修改与兼容
让其通过判断其为FWVGA还是720P的屏幕后,再加载不同的splash的文件,至此兼容问题解决。
如果项目上有关于此类兼容的疑问,可以私信博主探讨。