Android 系统开机logo的修改

非淡泊无以明志,非宁静无以致远。这篇文章主要讲述Android 系统开机logo的修改相关的知识,希望能为你提供帮助。
本文转载自:http://blog.csdn.net/yandongqiangZHRJ/article/details/8585273
看到了好几个修改logo的博文,但是说的不是很清楚,在这里亲手送上通过自己的动手修改过验证后的方法。
 
  Android  开机其实总共会出现3个画面:
1、第一个就是  Linux  系统启动,出现linux小企鹅画面(reboot);
2、当android系统从Linux内核启动后,将会执行anddroid平台的初始化过程,屏幕上将会出现” A N D R I O D” 文字字样画面(但是在我的系统里这个界面并不没有出现;或者说是肉眼没有看到这个画面的出现,这里依然送上这个画面的修改方法);
3、开机动画:这个阶段就是大家能看到的系统启动过程中,显示完"A N D R O I D"字样后显示的图片,类似进度条一样,图片内容也是“ A N D R O I D” 字样。
 
第一个(小企鹅)画面的修改:
Linux Kernel引导启动后,加载该图片,涉及到的代码在如下的目录中:
/kernel/trunk/drivers/video/fbmem.c
/kernel/trunk/drivers/video/fbmem.h
/kernel/trunk/drivers/video/logo/logo.c
/kernel/trunk/drivers/video/logo/logo.h
/kernel/trunk/drivers/video/logo/Kconfig
/kernel/trunk/include/linux/linux_logo.h
 
让内核中添加此开机logo的步骤如下:
1、让内核支持启动LOGO

              在内核目录中 make menuconfig
              Device Drivers ---->     Graphics support ---->
              选中 Bootup logo ----> Standard 224-color Linux logo
2、制作开机logo的图片             
                将要当作开机LOGO的图片按照你屏幕的大小进行裁减,并将其保存为bmp格式 或 png格式; 例如linuxlogo.bmp 或 linuxlogo.png
                在linux下输入以下命令(for bmp):
                  #bmptoppm linuxlogo.bmp > linuxlogo.ppm                                                        //生成ppm
                  #ppmquant 224 linuxlogo.ppm > linuxlogo224.ppm                                    //转换成224颜色
                  #pnmnoraw linuxlogo224.ppm > linuxlogo224.ppm                                    //转换成ascii格式
              在Linux下输入以下命令(for png):
                # pngtopnm linuxlogo.png > linuxlogo.pnm
                # pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm 
                # pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm
              注:上述命令需要安装netpbm的工具包 sudo apt-get install netpbm
  3、将LOGO文件放入内核中

                    拷贝到制作好的LOGO文件到  /drivers/video/logo 文件夹
                    替换 logo_linux_clut224.ppm 文件,还要删除该文件夹下的logo_linux_clut224.o和logo_linux_clut224.c
4、重新编译内核就OK了!这里就不详说。
 
 
第二个(” A N D R I O D” 文字字样画面)画面的修改:
相关代码:
/system/core/init/init.c
/system/core/init/init.h
/system/core/init/init.rc
/system/core/init/logo.c
*.rle文件的制作步骤:
1). 制作当前屏幕像素的图片
  使用PS制作一张适合屏幕大小的图片,保存时选“ 保存为 Web 所用格式” ,然后在弹开的窗口上,“ 预设” 项选择“ PNG-24” ,保存为android_logo.png(
注:好像只支持png-24,其他格式生成的rle文件显示不正常,有兴趣大家可以再验证一下。
2). 将图片转换为raw格式
  使用linux下的ImageMagick自带的convert命令,进行raw格式转换,命令为:
  convert -depth 8 android_logo.png rgb:android_logo.raw
【Android 系统开机logo的修改】  注:ubuntu 10.04 默认已经安装ImgageMagick工具,如果当前系统没有安装,可以执行下面的命令安装:
  sudo apt-get install imagemagick
3). 将raw格式转化为rle文件
  需要用到android编译后的rgb2565工具,在android/out/host/linux-x86/bin目录下(android为当前源码所在目录),转换命令如下:
  rgb2565 -rle < android_logo.raw > initlogo.rle
到目前为止,启动需要显示的图像已经做好了,就是initlogo.rle,注意文件名必须是这个,如果想改文件名,需要修改
android/system/core/init/init.h中的宏:
  #define INIT_IMAGE_FILE "/initlogo.rle"
4).将制作好的initlogo.rle文件拷贝到android系统的root目录下,也就是out/target/product/..../root下
最后编译成文件系统镜像    xxx.img重新烧写。OK。
 
第三个(开机动画)画面
其实这个部分的动画是使用两个图片显示出来的,具体的图片文件所在路径为: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");                     这就是设置显示的前景图片和背景图片。
 
    接着看还有如下代码:
[cpp] #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文件放置在合适的目录下,这样可以代替默认的开机界面:这里说的合适的目录就是上面的宏定义,大家都懂^_^!
              怎么制作bootanimation.zip文件呢?和上面一样创建两个目录和一个文件,然后使用软件或者是命令行大包即可
                zip -r -0 bootanimation.zip part0 part1 desc.txt

    推荐阅读