Android APK系列4-------Android编译APK后的系统结构

system文件夹就是system.img的解压结果,data就是userdata.img的解压结果,root就是ramdisk.img的解压结果。我们常见到的boot.img就是内核+ramdisk,Android的引导过程就是通过ramdisk内的启动脚本进行,而ramdisk内的目录结构明显就是一个linux的根目录,所以启动后,将system加载到ramdisk内的system下,userdata加载到ramdisk的data下而userdata.img和system.img均是以yaffs2的格式压缩,如果直接给我们一个刷机包,我们再从源码编译了相同版本的Android,那么有一部分是可以实现替换的。资源版块有win平台的unyaffs工具下载。这里介绍一下在linux平台如何解压缩yaffs(2)格式的文件。你可以从http://code.google.com/p/unyaffs/了解并下载这个解压yaffs的开源项目,下载prebuild的unyaffs文件放入/bin下即可使用unyaffs命令解压缩yaffs的文件(项目主页是说只能解压由 mkyaffs2image工具生成的img文件,不过解压缩system.img和userdata.img是肯定没有问题的)。最后如果我要解压缩ramdisk.img 怎么办呢?这里说一下,ramdisk.img是一个彻头彻尾的伪命名,它其实是cpio文件。在ubuntu的界面下可以通过鼠标右键的Extarct Here来解压,在命令行下通过下面几个连续的操作可以解开。

$ mv ramdisk.img ramdisk.cpio.gz
$ gzip -d ramdisk.cpio.gz
$ mkdir tmp
$ cd tmp
$ cpio -i -F ../ramdisk.cpio

此时 tmp 目录下的就是 ramdisk.img 的文件和目录了,可以根据需要编辑 init.rc 或者增

加 自己的启动画面。

压缩回 ramdisk.img

$ cpio -i -t -F ../ramdisk.cpio | cpio -o -H newc -O ../ramdisk_new.cpio
$ cd ..
$ gzip -5 -v ramdisk_new.cpio
$ mv ramdisk_new.cpio.gz ramdisk.img

前面提到的Linux平台的unyaffs工具(二进制程序,解压放入/bin下):

Windows下的yaffs2解压工具yaffs2img浏览器,可以打开system.img等文件

你可能感兴趣的:(linux,android,ubuntu,System,工具,平台)