900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > bootanimation文件名_Android开机logo制作

bootanimation文件名_Android开机logo制作

时间:2019-09-07 08:36:59

相关推荐

bootanimation文件名_Android开机logo制作

制作Android的开机画面

引用地址:

注意: 该地址仅在今日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 p_w_picpathmagick,CentOS yum install -y p_w_picpathmagick

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/p_w_picpaths/ramdisk.img),最好先备份一下。

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

以下转自:/zhang3/blog/11637

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 initlogo.rle

#然后将initlogo.rle拷贝到android系统根目录,也就是root目录底下

cp initlogo.rle out/target/product/Demo/root/

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

//启动时载入图像,如果没有找INIT_IMAGE_FILE到这个文件名的图片,

//则打印ANDROID字样。

if (load_565rle_p_w_picpath(INIT_IMAGE_FILE)){

fd=open("/dev/tty0" ,O_WRONLY);

if (fd>=0){

const char *msg;

msg="/n"

"/n"

"/n"

"/n"

"/n"

"/n"

"/n" //consoleis40colsx30lines

"/n"

"/n"

"/n"

"/n"

"/n"

"/n"

"ANDROID" ;

write(fd,msg,strlen(msg));

close(fd);

}

}

//"system/core/init/init.c"1039行--86%--

//启动时载入图像,如果没有找INIT_IMAGE_FILE到这个文件名的图片,

//则打印ANDROID字样。

if(load_565rle_p_w_picpath(INIT_IMAGE_FILE)){

fd=open("/dev/tty0",O_WRONLY);

if(fd>=0){

constchar*msg;

msg="/n"

"/n"

"/n"

"/n"

"/n"

"/n"

"/n"//consoleis40colsx30lines

"/n"

"/n"

"/n"

"/n"

"/n"

"/n"

"ANDROID";

write(fd,msg,strlen(msg));

close(fd);

}

}

//"system/core/init/init.c"1039行--86%--

// 启动时载入图像,如果没有找 INIT_IMAGE_FILE 到这个文件名的图片,

// 则打印 A N D R O I D 字样。

if( load_565rle_p_w_picpath(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. 图像文件名的指定

//图像文件名宏的定义INIT_IMAGE_FILE

void queue_all_property_triggers();

#defineINIT_IMAGE_FILE"/initlogo.rle"

int load_565rle_p_w_picpath( char *file_name);

//"system/core/init/init.h"179行--100%--

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/p_w_picpaths/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/p_w_picpaths*

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. 参考

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。