Android系统开机动画包括两部分:
开机显示的 ANDROID 文字;
ANDROID发光动画。
这篇文章说的开机动画是第一种,下面开始正文!

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"
============================================================================================

下面需要将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://docs.google.com/leaf?id=0 ... TIzOGQ5OWQ3&amp;hl=en

init文件下载地址http://docs.google.com/leaf?id=0 ... 2RiYjZjNjM2&amp;hl=en

split_bootimg.pl下载地址:http://android-dls.com/files/linux/split_bootimg.zip

T卡文件下载地址:http://docs.google.com/leaf?id=0 ... GVjYzVhMjg4&amp;hl=en


开机图片设置软件原理:
根据android 系统 开机LOGO和开机动画的存放路径:/initlogo.rle 和 /data/local/bootanimation.zip 在init.rc 中 建立两个链接:
/initlogo.rle ->/data/data/com.android.e139.gallery/initlogo.rle 和 /data/local/bootanimation.zip ->/data/data/com.android.e139.gallery/bootanimation.zip
来完成开机LOGO和开机动画的动态设定

安装要求:

1.本apk文件只能安装在android 2.1 或 2.0的操作系统 中
2.必须修改android 根目录下面的两个文件:init.rc 和 init 功能才能实现设置开机LOGO和开机动画的功能


修改init.rc 和 init 的方法:

1.修改 init.rc 和init文件需要修改手机中的 boot.img
导出方法:
cat /dev/mtd/mtd2 > /sdcard/root.img

然后

adb pull /sdcard/root.img ./

这样就把root.img拷贝到本地目录下了。

boot.img的组成结构是

+—————–+
| boot header | 1 page
+—————–+
| kernel | n pages
+—————–+
| ramdisk | m pages
+—————–+
| second stage | o pages
+—————–+


那我们要做的就是把这几个部分分别分离出来

我们现在先进行镜像分离。用命令

./split_bootimg.pl boot.img


成功执行后,可以得到两个文件,一个是boot.img-kernel,另一个是boot.img-ramdisk.gz。我们这里以修改ramdisk为例,所以将其解包

mkdir ramdisk

cd ramdisk

gzip -dc ../boot.img-ramdisk.gz | cpio -i

cd ..

2.进入ramdisk 修改init.rc 在init.rc 中增加:

on logo-init

mkdir /data 0775 system system

# We chown/chmod /data again so because mount is run as root + defaults
mount yaffs2 mtd@userdata /data nosuid nodev
chown system system /data
#for other user can read this dir
chmod 0775 /data

symlink /data/data/com.android.e139.gallery/initlogo.rle /initlogo.rle

on early-boot
# copy file
symlink /data/data/com.android.e139.gallery/bootanimation.zip /data/local/bootanimation.zip
chmod 0666 /data/local/bootanimation.zip

再将已经下载的init文件覆盖到目录下面的init文件
3.生成新img回到ramdisk 的上一级目录后执行:
mkbootfs ./ramdisk | gzip > ramdisk-new.gzmkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel boot.img-kernel --ramdisk ramdisk-new.gz -o boot-new.img
就会重新生成 boot-new.img
3.刷入新img

生成了新的img后,我们如何在系统上应用我们的新boot.img呢?首先,把img文件放到sdcard上去

adb push ./boot_new.img /sdcard

然后执行这两个操作

cat /dev/zero > /dev/mtd/mtd2
flash_image boot /sdcard/mynewimage.img

执行第一个操作时,可能会提示你

write: No space left on device

这个信息没关系,不用管它。两个命令都执行后,最后adb shell reboot即可。如果重启顺利,那么恭喜你,你刷成功了.


安装步骤:
1.按上面的步骤修改手机中的init.rc 和init文件
2.把下载的T卡文件放到T卡中
3.安装开机图片设置.apk文件

修改boot.img的方法参考:http://www.kunli.info/2009/09/14/how-to-modify-ramdisk-android/和
http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images

更多相关文章

  1. GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
  2. 如何在后台运行Linux命令?
  3. 一款常用的 Squid 日志分析工具
  4. No.11 使用firewall配置的防火墙策略的生效模式
  5. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  6. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  7. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  8. Android笔试题一
  9. 导入android源码有错,R.java文件不能自动生成解决方法

随机推荐

  1. android sd卡状态、路径、可用空间,内存
  2. android 显示特殊符号
  3. android apk执行shell脚本
  4. Android(安卓)KITKAT 以上实现沉浸式状态
  5. How to edit the init.rc in android
  6. android orientationchange的问题
  7. 2011.09.26(5)——— android sample之Note
  8. 布局技巧:使用ViewStub
  9. [原创] Android(安卓)SDK 安装全记录
  10. Eclipse中使用Ant打Android包报错及解决