ARM板上android系统开机Logo的修改

本文详细介绍如何修改Android设备的开机画面,包括Linux开机动画、android字样及发光动画等三部分。涵盖从图片格式转换到系统文件替换的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android开机画面分为三部分:1、Linux开机动画,为小企鹅;2、“android”字样,这一部分在很多系统中都看不到,因此对其的修改也不能验证有效;3、“android”动画,发光的“android”。现按顺序讲述这三部分画面的修改方法。进行下面操作的前提是已经完成的android源代码编译环境的搭建,可以参见我的上一篇博客:android4.2源代码编译环境搭建

1、Linux开机动画修改。

1)、在Linux源码根目录下执行 make menuconfig 命令,依次选择Device Drivers → Graphics support → Bootup logo → Standard 224-color Linux logo。也即将Linux的Logo改成224-color形式的。

2)准备一张合适的png格式的图片,将其转化成ppm格式,用来替换Linux源码下的driver/video/logo/logo_linux_clut244.ppm。

假设所选的图片名称为:linuxlogo.png,在此图片目录下执行以下命令:

pngtopnm linuxlogo.png> linuxlogo.pnm  //生成ppm  
pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm//转换成224颜色  
pnmtoplainpnm linuxlogo224.pnm > logo_linux_clut224.ppm //转换成ascii格式 
如果不能执行,则需要安装一些软件包:

sudo apt-get install netpbm


Linux中默认Logo是在屏幕的左上角显示,这里我们把它设置为居中显示,为此需要修改一些代码。

修改drivers/video/fbmem.c

/*modified by creatory*/
// image.dx=0;
// image.dy=y; 
 image.dx=(info->var.xres/2)-(logo->width/2);
 image.dy=(info->var.yres/2)-(logo->height/2);


在drivers/video/console/fbcon.c文件中的
logo_height=fb_prepare_logo(info,ops->rotate);


下面加入
logo_height += (info->var.yres/2)-(logo_height/2);

以上代码出自博客: http://hnwwff.blog.163.com/blog/static/3216909220113265120727/

生成完成后,替换driver/video/logo/logo_linux_clut244.ppm,如果此目录下有logo_linux_clut224.o,就将其删除。然后回到Linux源码主目录,执行命令make即可生成新的Linux镜像文件,该镜像文件叫zImage,存放于arch/arm/boot下。


2、“android”字样的修改

1). 将png-24图片转换为raw格式。使用linux下的ImageMagick自带的convert命令,进行raw格式转换,假设图片名称为:android_logo.png,命令为:

  convert -depth 8 android_logo.png rgb:android_logo.raw

 注:ubuntu 10.04 默认已经安装ImgageMagick工具,如果当前系统没有安装,可以执行下面的命令安装:

  sudo apt-get install imagemagick

2). 将raw格式转化为rle文件。需要用到android编译后的rgb2565工具,在android/out/host/linux-x86/bin目录下(android为当前源码所在目录),转换命令如下:

rgb2565 -rle < android_logo.raw > initlogo.rle
如果不想仅为得到这个工具而经历漫长的编译过程,也可以在这里直接下载这个工具: http://pan.baidu.com/s/1c0lCSne

到目前为止,启动需要显示的图像已经做好了,就是initlogo.rle,注意不能修改文件名,否则不能生效。

3).将制作好的initlogo.rle文件拷贝到android系统的root目录下,也就是out/target/product/..../root下,比如我的这个目录路径是这样的:out/target/product/tiny4412/root。需要作出特别说明的是,如果你的android源码没有经历编译过程,你是无法找到out文件夹的,只有在编译完成之后,才会有这个文件夹,所以这一步可以放到android源码编译完成之后来做。


3、“android”动画的修改

其实这个部分的动画是使用两个图片显示出来的,具体的图片文件所在路径为:frameworks/base/core/res/assets/images,大家看一下就知道了,也就知道怎么修改了。

和这部分相关的源码文件主要是如下几个:frameworks/base/cmds/bootanimation下面的几个文件就是的了,可以看看BootAnimation.cpp文件的内容,有如下代码片段:

bool BootAnimation::android() 
{ 
    initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png"); 
    initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png"); 
bool BootAnimation::android()
{
    initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png");
    initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png");           

这就是设置显示的前景图片和背景图片。

如此,我们只需要将文件夹frameworks/base/core/res/assets/images下的图片改成我们希望的图片就行了。

更重要的是下面的修改。

看下面的代码:

#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip" 
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"  
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip" 
#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip" 

看宏名就知道这是设置动画文件的名称。为什么会又显示图片又设置动画显示呢,这个Android版本有关。显示两个图片:前景和背景图片 是在1.5版本用,后来就改为了设置动画文件,就是:bootanimation.zip,是zip格式的,这个文件包含三个内容:两个目录:part0 和part1,一个文件desc.txt。

两个目录用来包含要显示的图片,分为第一阶段和第二阶段。剩下的文件就是设置关于如何显示的信息:
示例如下:

480 800 15
p 1 0 part0
p 0 0 part1

具体的含义如下:
 480--width of the image, 800--height of the image, 15--frames of second
  p 1, display one time
  p 0, display recycling till handset power on finished

你可以制作自己的bootanimation.zip文件放置在/system/boot/animation.zip下。

可以直接采用命令方式制作bootanimation.zip文件,命令如下:

zip -r -0 bootanimation.zip part0 part1 desc.txt
也可以直接用鼠标操作打包。


如此,修改工作全部完成,可以执行make命令编译源代码了。





 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值