欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

更改高通平台开机logo和开机动画

程序员文章站 2022-07-03 20:54:36
...

开机logo

首先修改开机logo要从哪里入手呢?先看看源码

void display_image_on_screen()
 2 {
 3     struct fbimage default_fbimg, *fbimg;
 4     bool flag = true;
 5 
 6     fbcon_clear();
 7     fbimg = fetch_image_from_partition();      //从splash镜像分区抓取图片
 8     if(fbimg){
 9         dprintf(CRITICAL, "zbzhuang### ->fetch_image_from_partition\n");
10     }
11 
12     if(!fbimg) {                              //如果splash.img分区的内容不存在或者被擦除则从splash.h头文件从获取要显示图像的数组
13         dprintf(CRITICAL, "zbzhuang### ->not fetch_image_from_partition\n");
14         flag = false;
15         fbimg = &default_fbimg;
16         fbimg->header.width = SPLASH_IMAGE_HEIGHT;
17         fbimg->header.height = SPLASH_IMAGE_WIDTH;
18 #if DISPLAY_TYPE_MIPI
19         fbimg->image = (unsigned char *)imageBuffer_rgb888;
20 #else
21         fbimg->image = (unsigned char *)imageBuffer;
22 #endif
23     }
24 
25     fbcon_putImage(fbimg, flag);
26 }

由源码可以知道修改开机logo有两种方式:

方法一:利用工具根据图像生成splash.img镜像之后,使用fastboot重新刷splash.img分区。

方法二:利用工具将图片重新生成splash.h头文件的数据,替换相应的头文件就OK

通过验证可以知道方法一适用用于高分辨率的图片,也能适用于小分辨率的图片,而方法二只适用于小分辨率的图片,所有基本上不使用方法二。

方法一:利用工具根据图像生成splash.img镜像之后,使用fastboot重新刷splash.img分区。

现在基本上平板,手机都是高清显示屏了,所以准备一张1920*1080的图片和生成splash.img镜像的脚本工具—>logo_gen.py。

脚本路径device\qcom\common\display\logo\logo_gen.py

(1)先把图片和脚本文件放在同一目录。

(2) sudo apt-get install python-imaging

安装python成功后运行如下脚本:(现在基本的linux系统都已经装好了,可以直接用)

(3) python ./logo_gen.py snapdragon.png

这样就可在当前目录下生成splash.img。

烧写 splash.img

1 adb reboot bootloader         //进入bootloader模式
2 fastboot flash splash_v splash.img         //将镜像刷入相应分区(分区名字可能各个厂商的名字不一样)
3 fastboot reboot               //重启平板电脑

开机第一张图的logo是bootloader的,接下来我们需要更改内核启动后的开机动画

**

开机动画

**

一.Android默认开机动画是显示“android”字样的图片,想要替换掉“android”,需要用到bootanimation.zip.

二.原生Android系统中好像没有bootanimation.zip,可以把bootanimation.zip文件放到设备system/media目录下(需要root权限)。放到此目录下后,开机会自动加载该文件里的图片,作为动画。

三.有的厂商自己做了开机动画,所以我们也可以通过adb pull 命令从system/media 目录下把bootanimation.zip文件下载到电脑上,因为这些文件都是只读文件,所以我们需要在dos界面获取root权限。然后设置’systen’为可写。


adb root //获取root权限,adb remount 需要root权限

adb remount  //将 'system' 部分置于可写入的模式 ,默认 'system' 部分是只读的

有时候会存在adb remount 失败的情况

C:\Users\wpp>adb remount
remount of /system failed: Read-only file system
remount failed

当出现这种情况我们需要在adb remount 之前输入adb disable-verity


C:\Users\wpp>adb disable-verity 
Verity disabled on /system
Now reboot your device for settings to take effect

C:\Users\wpp> adb reboot

C:\Users\wpp> adb root

C:\Users\wpp> adb remount
remount succeeded

这时候我们就能把system/media 里面的文件拿出来和写入文件了

四.bootanimation.zip内容和制作
1.当我们有现成的bootanimation.zip文件的时候,我们可以解压该文件一般会得到

part0 part1 两个文件夹和1个desc.txt文件

2.上面的文件夹里面存放的就是开机要显示的图片。一般来说,最后那个文件夹存放一张照片,然后设置成循环播放,就可以在进入系统界面之前一直有画面,不会出现黑屏的情况(所有动画都做完了,但是还没进入到系统界面就会出现黑屏)。

3.part0里面保存的必须是和desc.txt中分辨率相同的图片(后面会说desc.txt文件怎么看分辨率),可以替换成自己想用的一组图片,一般为.jpg .png 格式的图片。

4.desc.txt里面的内容,比如是这样的:

	1920 1080 60
	p 1 0 part0
	p 0 0 part1

第一行的1920 1080 60前面两个数据代表像素,即:1920*1080;

第一行第三个数据:60代表的是每秒播放多少帧;

第二行第一个字母 “p”不知道什么玩意儿,固定以他为开头;

第二行第二个数字1,代表重复播放多少次,"1”即代表播放1次(0侧代表无限循环播放,应该是直到代码里面设置的动画时间耗完为止);

第二行第三个数字“0”代标的是前后两帧之间间隔时间/帧数(比如每秒播放10帧,如果这个数字设为10,则延迟1秒了,待确认);

第二行第四个参数,这就是上文说到的和文件夹名称对应的了,如果是folder~则文件夹名称也是这个,我的5.1里面只设置了一个part0,修改的时候我也将他默认为part0了。

第三行也是一样的。

不过这里有个严重问题一定要注意,编写完成保存之前要记得换行,即敲回车键!!!分成如我上面显示的那样,因为用记事本打开是在一行显示的,要不然在替换原生动画之后会只是一个图片。切记,我在这个地方大意了,搞了很久。

5.最后就是压缩了,压缩一定要选仅存储的方式进行压缩(这里要注意,有的人可能在做好文件夹和编写好txt文件后准备压缩,但是又添加了一层文件夹,这会导致识别不了动画资源,在从logo进入到动画的时候就是一片黑屏,直到Android系统启动后才OK)。

最后使用adb push命令把生成好的bootanimation.zip文件 push到 /system/media/ 目录下,再开机就可以显示新的开机画面了。

相关标签: 安卓开机

上一篇: 开机动画

下一篇: Android 开机动画