`

制作Android的开机画面

 
阅读更多

转自:http://blog.lrenwang.com/post/109/

引用地址:
注意:
该地址仅在今日23:59:59之前有效

这里所说的是android启动的第一个界面,即kernel启动后由init进程调用的显示界面

手头有块idea6410开发板,是4.3寸TFT液晶屏(480*272分辨率)

首先需要制作一个480*272大小的图片:在WINDOWS上用PS应该是最方便的。保存时使用“保存为 Web 所用格式”,然后在弹开的窗口上,“预设”项选择“PNG-24”,生成logo.png

接下来的工作,需要linux环境(windows上使用cygwin理论上也是可行的)
1、使用ImageMagick自带的convert命令,进行raw格式转换(convert -depth 8 logo.png rgb:slogo.raw)
注:imgageMagick安装包,Ubuntu 执行sudo apt-get install imagemagick,CentOS yum install -y imagemagick

2、编译一下android自带的rgb2565工具,其路径在$ANDROID_HOME/build/tools/rgb2565上(gcc -O2 -Wall -Wno-unused-parameter -o rgb2565 to565.c)

3、对raw文件进行rle565格式转换(rgb2565 -rle < logo.raw > initlogo.rle)

到目前为止,启动需要显示的图像已经做好了,就是initlogo.rle,注意文件名必须是这个,如果想改文件名,需要修改 android/system/core/init/init.h中的宏:
#define INIT_IMAGE_FILE "/initlogo.rle"



下面是给虚拟机中换开机画面
下面需要将initlogo.rle加入的android文件系统中

4. 找到ramdisk.img文件(android/out/target/product/generic/ramdisk.img),将文件名改为 ramdisk.img.gz,然后使用下面的命令解压:
gunzip ramdisk.img.gz
解压后得到 ramdisk.img,可能有人要问,怎么文件名又改回去了?其实不然,使用file ramdisk.img查看一下就知道了:
解压 前:ramdisk.img: gzip compressed data, from Unix
解压后:ramdisk.img: ASCII cpio archive (SVR4 with no CRC)
跑题了,还是说正事儿。

5. 使用cpio提取文件:
新建一个temp目录:
mkdir temp
cd temp
cpio -i -F ../ramdisk.img

6. 导出文件列表:
cpio -i -t -F ../ramdisk.img > list

注:list是一个文本文件,里面存储了ramdisk.img的文件结构,我们需要在这个文件中加入initlogo.rle这一行,修改 后的 文件如下:
data

default.prop

dev

init

init.goldfish.rc

init.rc

initlogo.rle

proc

sbin

sbin/adbd

sys

system


7. 生成ramdisk.img
cpio -o -H newc -O ramdisk.img < list

注:根据list文件的描述,生成ramdisk.img文件

8. 用ramdisk.img覆盖sdk目录下的ramdisk.img(android-sdk-windows/platforms/android- 2.1/images/ramdisk.img),最好先备份一下。

9. 启动模拟器,就可以看到我们自己做的的开机界面了。

以下转自:http://my.oschina.net/zhang3/blog/11637

修改 Android 开机 LOGO

1. 制作 initlogo.rle

# 使用ImageMagick自带的convert命令,进行raw格式转换
 
convert -depth 8 logo.png rgb:logo.raw
 
 
 
# android自带的rgb2565工具,对raw文件进行rle565格式转换 
 
$out/host/linux-x86/bin/rgb2565 -rle <logo.raw >initlogo.rle 
 
 
 
#然后将initlogo.rle拷贝到android系统根目录,也就是root目录底下 
 
cp initlogo.rle out/target/product/Demo/root/ 
 
 

2.相关的实现代码,摘自 Android 2.1

  1. //启动时载入图像,如果没有找INIT_IMAGE_FILE到这个文件名的图片,
  2. //则打印ANDROID字样。
  3. if (load_565rle_image(INIT_IMAGE_FILE)){
  4. fd=open("/dev/tty0" ,O_WRONLY);
  5. if (fd>=0){
  6. const char *msg;
  7. msg="/n"
  8. "/n"
  9. "/n"
  10. "/n"
  11. "/n"
  12. "/n"
  13. "/n" //consoleis40colsx30lines
  14. "/n"
  15. "/n"
  16. "/n"
  17. "/n"
  18. "/n"
  19. "/n"
  20. "ANDROID" ;
  21. write(fd,msg,strlen(msg));
  22. close(fd);
  23. }
  24. }
  25. //"system/core/init/init.c"1039行--86%--
// 启动时载入图像,如果没有找 INIT_IMAGE_FILE 到这个文件名的图片, // 则打印 A N D R O I D 字样。 if( load_565rle_image(INIT_IMAGE_FILE) ) { fd = open("/dev/tty0", O_WRONLY); if (fd >= 0) { const char *msg; msg = "/n" "/n" "/n" "/n" "/n" "/n" "/n" // console is 40 cols x 30 lines "/n" "/n" "/n" "/n" "/n" "/n" " A N D R O I D "; write(fd, msg, strlen(msg)); close(fd); } } //"system/core/init/init.c" 1039 行 --86%--

3. 图像文件名的指定

  1. //图像文件名宏的定义INIT_IMAGE_FILE
  2. void queue_all_property_triggers();
  3. #defineINIT_IMAGE_FILE"/initlogo.rle"
  4. int load_565rle_image( char *file_name);
  5. //"system/core/init/init.h"179行--100%--

以下转自:(http://xy0811.spaces.live.com/ )

1. 介绍
android
开机画面由三部分组成,第一部分在 bootloader 启动时显示,第二部分在启动 kernel 时显示,第三部分在系统启动时( bootanimation )显示(动画)

2. bootloader 开机图片

1) 一般使用 rle 格式图片,不同的 android 系统不同此图片可能放在不同位置,以下实例均以 G1 为例, G1 放在 splash 分区中

2) 制作 rle 格式开机图片

a) 将图片转成 320x480 256 色,保存成不带 Alpha 通道的 png 格式

b) 使用 convert 工具将 splash.png 转换成8位色的 splash.raw
convert splash.png -depth 8 rgb:splash.raw
确认 splash.raw 大小为 460800 字节

c) 使用 android 工具 rgb2565 改变图像格式
out/host/linux-x86/bin/rgb2565 < splash.raw > splash.raw565
确认 splash.raw565 大小为 307200 字节

3) 烧写(以 G1 为例)
Power+Camera 启动到烧写模式
fastboot flash splash1 splash.raw565

3. kernel 开机图片

1) 相关代码
kernel/drivers/video/msm/msm_fb.c
G1 使用高通芯片组 MSM7201 芯片组)
它会读出根目录下的 xx.rle ,并显示为开机画面, rle 做法同上

4. bootanimation 开机动画

1) android 2.0 之前

a) 说明
使用 bootanimation 程序显示开机画面,如需修改开机画面,需要修改源码

b) 代码
frameworks/base/cmds/bootanimation/*
frameworks/base/core/res/assets/images/android-logo*

2) android 2.0 及之后

a) 说明
使用 bootanimation 程序显示开机画面,如需修改开机画面,不用修改代码,只需按格式要求做 bootanimation.zip 包,放在系统的 /system/media 目录中,或 /data/local 目录中即可,两个目录下都存在时,优先使用 /data/local 下的

b) 代码
frameworks/base/cmds/bootanimation/*
frameworks/base/core/res/assets/images*

c) 制作动画包

i. 描述文件 desc.txt
480 427 30
p 1 0 part0
p 0 10 part1
总体说明: 480 为宽度, 427 为高度, 30 为帧数,即每秒播放动画 30

部分说明:第一项 p 为标志符,第二项为循环次数 1 为只播放 1 次,0为无限循环,第三项为两次循环之间间隔的帧数,第四项为对应的目录名

ii. 图片
图片放在 desc.txt 中目录名指定的目录中,目录中按字符顺序播放

iii. 打包

² windows
使用 winrar 找包,选择 ZIP 格式,压缩标准要选 储存

² linux
zip -0 -r ../bootanimation.zip ./*
linux
命令使用 -0 指定压缩等级为最低等级 stored ,即只归档不压缩,否则可能由于包格式问题引起动画显示为黑屏

² 注意
打包不要带上层目录

5. 参考

1) bootanimation 相关
http://blog.21ic.com/user1/2537/archives/2009/65606.html

2) rle 文件制作
http://hi.baidu.com/kernel_linux/blog/item/9eff140f9d089c206159f3cb.html

3) bootloader 启动
http://blog.csdn.net/yili_xie/archive/2010/05/14/5592276.aspx

分享到:
评论

相关推荐

    4412开发板制作android开机动画

    通过步骤描述在4412开发板上制作android开机动画。

    Android开机动画包bootanimation.zip

    里面包含自己收集的android开机动画包bootanimation,以及自己用图片制作的bootanimation

    android系统开机logo制作流程

    详细介绍从Linux系统如何安装制作logo图片的工具,如何在kernel中修改logo显示图,如何制作Android系统的开机画面的操作流畅。

    Android开机画面的具体修改方法

    制作开机Logo 方法一: Drivers/video/logo/logo_linux_clut224.ppm是默认的启动Logo图片,把自己的Logo图片(png格式)转换成ppm格式,替换这个文件,同时删除logo_linux_clut224.c logo_linux_clut224.o文件,...

    【自制】IPTV盒子超酷开机动画

    本人自制漂亮开机动画,用于定制IPTV机顶盒ROM或替换盒子原有的开机动画 1.在system\built.prop里修改service.bootvideo=1(如果没有则添加一行) 2.复制本资源到system\etc\bootvideo并修改权限 [效果图请看这里]...

    《Google Android SDK开发范例大全(第3版)》.pdf

    6.16 开机程序设计 367 6.17 双向短信常驻服务 369 6.18 测量电池温度 377 6.19 电池电量显示widget小工具 379 6.20 取出通讯录数据及多组电话号码 384 6.21 电子sensor精确罗盘 386 6.22 屏幕...

    Google Android SDK开发范例大全(第3版) 1/5

    全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及整合...

    Google Android SDK开发范例大全(第3版) 4/5

    全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及整合...

    Google Android SDK开发范例大全(第3版) 3/5

    全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及整合...

    rle制作工具.zip

    目前android开机画面由三个部分(阶段)组成,第一部分在bootloader启动时显示(静态),第二部分在启动kernel时显示(静态),第三部分在系统启动时(bootanimation)显示(动画)。

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    5.11 制作有图标的文件资源管理器——自定义Adapter对象 5.12 还原手机默认桌面——重写clearWallpaper方法 5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    5.11 制作有图标的文件资源管理器——自定义Adapter对象 5.12 还原手机默认桌面——重写clearWallpaper方法 5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    5.11 制作有图标的文件资源管理器——自定义Adapter对象 5.12 还原手机默认桌面——重写clearWallpaper方法 5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与...

    Google Android SDK开发范例大全的目录

    5.11 制作有图标的文件资源管理器——自定义Adapter对象 5.12 还原手机默认桌面——重写clearWallpaper方法 5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    5.11 制作有图标的文件资源管理器——自定义Adapter对象 5.12 还原手机默认桌面——重写clearWallpaper方法 5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与...

    google android sdk开发范例大全 第二版 PDF 光盘代码

     6.16 开机程序设计   6.17 双向短信常驻服务   6.18 测量电池温度   6.19 电池电量显示Widget小工具   6.20 取出通讯录数据及多组电话号码   6.21 电子精确罗盘   6.22 屏幕手写事件判断...

    Android编程之简单启动画面实现方法

    主要介绍了Android编程之简单启动画面实现方法,结合实例形式较为详细的分析了开机启动画面的制作步骤及布局、Activity跳转、权限控制等的相关操作技巧,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics