Monthly Archives: August 2011

Android模拟器镜像文件介绍

. Android模拟器采用的是开源工程Qemu,Qemu是Linux 下的著名模拟器

2. kernel-qemu是内核镜像

3. ramdisk.img是文件系统,如果你自己编译了android的源代码,它的内容为
out/debug/target/product/generic/root,mount到android的/

4. system.img主要存放系统数据,android启动后mount到/system
它包含的内容为out/debug/target/product/generic/system

5. 一般来说我们不直接使用userdata.img,而是使用userdata_qemu.data,用来存放用户数据,可读写,android启动后mount到 /data。只有使用-wipe-data参数启动模拟器是时候才会用到userdata.img,它会使用userdata.img的内容覆盖 userdata-qemu.img
userdata.img的内容为out/debug/target/product/generic/system

6. 如果您没有编译android的源代码,我们也可以知道ramdisk.img、system.img和userdata.img的内容。
1). 查看ramdisk.img内容
terminal中进入sdk的images目录,执行file *


我看可以看到ramdisk是一个gzip文件,我们可以解压这个gzip文件,解压前先备份一下
然后在terminal中运行
localhost:images wuvincent$ gzip -d -S .img ramdisk.img
然后运行
localhost:images wuvincent$ file ramdisk
执行后会显示这个文件是一个cpio文件,于是我们可以把它解压到一个目录下,依次执行如下命令
localhost:images wuvincent$ mkdir ramdiskdir
localhost:images wuvincent$ cd ramdiskdir
localhost:ramdiskdir wuvincent$ cpio -idmv <../ramdisk
我们就可以进入ramdiskdir看到ramdisk.img的内容了。
其中最主要的几个文件时init init.rc init.goldfish.rc
2). 查看system.img和userdata-qemu.img內容
terminal中進入sdk的tools目錄下運行adb shell
localhost:tools wuvincent$ adb shell
adb server is out of date.  killing…
* daemon started successfully *
#
然後運行cd /和ls -l,執行結果如下:

 


我們可以看到ramdisk.img mount到/,init init.rc init.goldfish.rc都在/目錄下。
而/system就是system.img mount後的目錄,/data 就是userdata-qemu.img mount後的目錄,大家可以進入看看內容。

我們也可以在terminal中運行mount命令查看文件系統mount情況。

原文:http://www.devdiv.com/home.php?mod=space&uid=1&do=blog&id=1488