一.模拟器使用
进入 tools目录
#cd /home/h3/myandroid/out/host/linux-x86/sdk/android-sdk_eng.h3_linux-x86/tools
在这里有很多Android的工具,其中模拟器对应的应用程序是emulator。
下面是正确使用模拟器的步骤:
1 创建在当前目录下输入 #./android create avd -n h3 -t 1 这个命令会进入创建avd的过程,有许多自定义选项,这里只是测试能否正常运行,直接按Enter,(在以后可以按自己的需要做出一些选择,创建自定义的avd)名称为h3的avd就创建成功了。
1.4之前的版本我没试过,但1.5版本后不正确创建就无法使用。avd是android virtual machine的缩写。
2 检查和运行创建的avd
#./android list avd 输入命令来检查创建是否成功,如果成功会列出来。其他命令的使用可查看。./android -h
3 运行avd
#./emulator -avd h3 启动刚才创建的名为h3的模拟器,使用的内核,文件系统等均使用默认的,
即/home/h3/myandroid/out/host/linux-x86/sdk/android-sdk_eng.h3_linux-x86/platform/路径下的内核和文件系统。
如果创建成功的话,就可以看到可爱的Android操作系统的虚拟界面了。
外形可以更换的,就好像qq一样可以更换皮肤。有兴趣的话,可以网 上查一下做法。
二. 文件系统提取
Android运行在开发板上的文件系统,是要依靠模拟器来提取的,具体的操作如下:
1. 因为我们需要将模拟器运行在一个带SDcard的虚拟设备上,所以创建一个虚拟的sdcard #cd /home/h3/myandroid/out/host/linux-x86/sdk/android-sdk_eng.h3_linux-x86 #./mksdcard -l sd200M 200M /home/h3/sdcard.img
这里使用mksdcard工具在/home/h3目录下建立一个容量为200M的sdcard.img,可以查看一下是否生成,如果成功了,就可以看到了 在/home/h3下有sdcard.img
#ls /home/h3
sdcard.img是用于模拟器中数据和外部数据的交换,虚拟SD卡的大小不应该小于100M,否则在后期的文件系统打包过程中,有可能会有SD卡存储空间不够的问题。
2.创建一个名为cupcake的,附带有sdcard的虚拟设备。
#./android create avd -n cupcake -t 1 -c /home/h3/sdcard.img
3.运行带sdcard的avd
#./emulator -avd cupcake -sysdir /home/h3/myandroid/out/target/product/generic -data /home/h3/myandroid/out/target/product/generic/userdata.img -ramdisk /home/h3/myandroid/out/target/product/generic/ramdisk.img -kernel /home/h3/myandroid/prebuilt/android-arm/kernel/kernel-qemu
运行我们刚才创建的cupcake虚拟设备,并规定系统,数据等的映象文件路径等。
模拟器内核采用/home/h3/myandroid/prebuilt/android-arm/kernel/kernel-qemu
也可以指向自己编译的内核镜像。
4. 使用工具从运行的模拟器中获取文件系统,并放到sdcard中
打开一个新的终端输入: #cd /home/h3/myandroid/out/host/linux-x86/sdk/android-sdk_eng.h3_linux-x86/tools
使用adb工具的remount选项来使模拟器中的system目录权限改为可读写。
#./adb remount
使用adb工具的push指令将提前使用busybox做好的tar应用程序加入到模拟器的/system/bin目录下。关于busybox的使用这里不作介绍,可以自己看看网上的文章。
#./adb push tar /system/bin
使用adb工具进入到模拟器的shell中去
#./adb shell
进入到Android模拟器的shell之后,输入如下:
#tar cvf /sdcard/system.tar /system #tar cvf /sdcard/userdata.tar /data
这里使用前面加入到模拟器中的tar应用程序来对system和data目录下所有内容进行打包,并存储到sdcard里。操作结束后,进入sdcard 目录下查看是否有了system.tar和userdata.tar文件,如果有,则证明打包成功。
退出shell,并关闭模拟器。
#exit
将虚拟SD卡挂载在/mnt目录下,进入/mnt目录后,就可以将system.tar和userdata.tar拷贝出来,那么文件系统的提取就完成了。
#mount –o loop sdcard.img /mnt #cd /mnt
网上有人说,使用android提供的mkyaffsimage直接对/out/target/product/generic /system目录进行打包,制作出system.img也是可以使用,但userdata.img如何制作,我没有找到,有待解决。
但使用 mkyaffs2image制作文件系统映像时要注意的是一些配置文件的权限问题,比如/system/usr/keylayout下的文件权限就有问题,需要修改,否则生成的映像在模拟器中加载后,键盘等无法正常使用。