Chinaunix首页 | 论坛 | 博客
  • 博客访问: 714263
  • 博文数量: 192
  • 博客积分: 2653
  • 博客等级: 少校
  • 技术积分: 1623
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-31 18:25
个人简介

How tough life is, how strong you should be!

文章分类

全部博文(192)

文章存档

2015年(1)

2014年(2)

2013年(37)

2012年(152)

分类: LINUX

2012-10-14 13:40:56

查看源代码可见,android开机画面默认是 /initlogo.rle,如没有这个文件,则显示android的字样。(注意此处不是linux内核启动时的logo,也不是android启动的动态图,是介于其中间的android静态图片或文本)



 

对于制作开机logo,替换机器人,需要制作和显示屏幕分辨率相同大小的图片。

如下所示:

 

 

1. 制作当前屏幕像素的图片(模拟器默认为320*480)

 使用PS制作一张320*480的图片,保存时选“保存为 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

 注: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,将rle文件放到android/out/target/product/generic/root/里面,这是anroid的根目录,如果之前已经成功编译生成ramdisk.img,可以先删掉或备份,让后再重新make,就会生成新的ramdisk.img,这个镜像文件里就包含了rle文件了,运行就会显示刚刚生成的rle图片了。


在system/core/init/init.c [load_565rle_image] --> logo.c中 ,显示完毕initlogo.rle之后作了 unlink 操作。该操作对于android 默认的只读型system.img 是没问题,, 但对于自定义的yaffs 或者 ubi形式的可读写型的system.img时就有问题了。会造成将initlogo.rle删除,下次启动时读取不到该文件。可以通过注释掉logo.c的load_565rle_image()中的unlink(fn)语句来规避该问题。


详细程序原理可以参考老罗的android之旅http://blog.csdn.net/luoshengyang/article/details/7691321,分析的很好。

阅读(8786) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~