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命令编译源代码了。