Android开机Logo制作问题

制作initlog.rle文件

一、initlog.rle文件制作:

在Android设备启动过程中,出现的第一个界面,原始的Android是显示静态的“Android”,通过代码分析platform/system/core/init/init.c
函数int main(int argc, char **argv)
{
    ......
    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"
        "/n"
        "             A n d r o i d";
        write(fd, msg, strlen(msg));
        close(fd);
    }
    }
    ......
}

其中的INIT_IMAGE_FILE在init.h中定义#define INIT_IMAGE_FILE    "/initlogo.rle"
通过分析可知,如果不存在initlog.rle文件,系统开机后显示“Android”

下面就简单介绍一下initlog.rle文件的制作步骤:

1、首先需要一个适合自己屏幕的png文件,可以自己制作或者网上下载,例如名称为log.png
2、使用ImageMagick自带的convert命令,进行raw格式转换
    命令 $ convert -depth 8 log.png rgb:log.raw
   将获得一个叫做log.raw的文件
3、来到目录platform/build/tools/rgb2565,编译android自带的rgb2565工具(如果没编译过),使用:$ gcc -O2 -Wall -Wno-unused-parameter -o rgb2565 to565.c
4、将log.raw文件拷贝到rgb2565可执行程序目录下,即platform/build/tools/rgb2565
5、对raw文件进行格式转换:$ ./rgb2565 -rle < splash.raw > initlogo.rle生成initlog.rle文件


二、修改开机第一个界面:
1、将initlog.rle文件拷贝到platform/out/.../root/目录(与init.rc同目录)
2、如果你的系统不是只读型system.img,那么修改/platform/system/core/init/logo.c文件,函数load_565rle_image(char *fn)中注释掉unlink(fn); 
注:查看代码可发现,在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)语句来规避该问题。
3、重新编译系统生成image文件。
至此大功告成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值