Android2.2 模拟器使用&文件系统提取

    技术2022-06-30  87

    一.模拟器使用

    进入 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下的文件权限就有问题,需要修改,否则生成的映像在模拟器中加载后,键盘等无法正常使用。


    最新回复(0)