手动修改android模拟器的system.img

一 编译system.img

下载最新的android代码,运行编译

lunch选择aosp_x86-eng 

make编译整个工程

在out/target/product/generic_x86目录下有:

system.img system-qemu.img userdata.img vendor-qemu.img vendor.img  kernel-ranchu-64 ramdisk.img

选择system-qemu.img和vendor-qemu.img,这两个镜像是专门为qemu运行制作的,如果选择system.img 和vendor.img,则avd运行失败。

二 替换AVD的镜像

在sdk下进入如下目录,使用上面的镜像替换下面的镜像,system-qemu.img重名为system.img,vendor-qemu.img重命名为vendor.img。替换kernel-ranchu-64 更新kernel,替换ramdisk.img  更新rootfs,替换userdata.img更新userdata.

~/Android/Sdk/system-images/android-P/google_apis_playstore/x86$ ls

advancedFeatures.ini  encryptionkey.img  package.xml        system.img

build.prop            kernel-ranchu-64   ramdisk.img        userdata.img

data                  NOTICE.txt         source.properties  vendor.img

如果出现运行失败的话,将虚拟机的快照删除在:

~/.android/avd/Nexus_5X_API_P.avd$ ls

AVD.conf           encryptionkey.img        system.img.qcow2

cache.img          encryptionkey.img.qcow2  userdata.img

cache.img.qcow2    hardware-qemu.ini        userdata-qemu.img

config.ini         sdcard.img               userdata-qemu.img.qcow2

data               sdcard.img.qcow2         vendor.img.qcow2

emulator-user.ini  snapshots                version_num.cache

.android/avd/Nexus_5X_API_P.avd$ rm *.qcow2

~/.android/avd/Nexus_5X_API_P.avd$ ls    //快照删除了

AVD.conf    data               hardware-qemu.ini  userdata.img

cache.img   emulator-user.ini  sdcard.img         userdata-qemu.img

config.ini  encryptionkey.img  snapshots          version_num.cache

三 使用串口调试emulator

使用如下命令可以启动已经创建的虚拟机,并在当前窗口输出串口信息便于我们进行debug

$emulator -avd Pixel_2_XL_API_28 -shell

推荐阅读更多精彩内容