Android emulator Studio 2.2有一个android-19 x86系统映像,它与Qemu2和ranchu硬件一起运行——它是如何构建的?

Android emulator Studio 2.2有一个android-19 x86系统映像,它与Qemu2和ranchu硬件一起运行——它是如何构建的?,android-emulator,android-source,qemu,Android Emulator,Android Source,Qemu,我正在尝试构建一个5.1 x86仿真器“系统映像”,可供最新的Android仿真器使用,该仿真器使用更新的Qemu代码库,网络桥接问题更少(例如)。但我遇到了一个真正的谜团,这个谜团的答案也许可以解释为什么这项任务给我带来这么多麻烦。所以首先,一个小背景故事 Android-19(KitKat,~4.4)使用一个古老版本的Qemu作为模拟器的基础。Android团队随后宣布,他们将转向“Qemu2”,这是一个更新/更好的代码库,它的第一个用途将是支持arm64仿真,使用一个名为“ranchu”的

我正在尝试构建一个5.1 x86仿真器“系统映像”,可供最新的Android仿真器使用,该仿真器使用更新的Qemu代码库,网络桥接问题更少(例如)。但我遇到了一个真正的谜团,这个谜团的答案也许可以解释为什么这项任务给我带来这么多麻烦。所以首先,一个小背景故事

Android-19(KitKat,~4.4)使用一个古老版本的Qemu作为模拟器的基础。Android团队随后宣布,他们将转向“Qemu2”,这是一个更新/更好的代码库,它的第一个用途将是支持arm64仿真,使用一个名为“ranchu”的新模拟器硬件定义。这确实是在棒棒糖(~5.x,android-20-22)中发布的,不幸的是,x86支持实际上被省略了

但神秘的是,当您运行Studio 2.2/Build Tools 25.0.2中带有-verbose标志的4.4/KitKat x86系统映像时,您可以看到它正在使用新的Qemu以及“ranchu”硬件定义和内核:

    Concatenated QEMU options:
 /Users/xx
 xx/.android-sdk/emulator/qemu/darwin-x86_64/qemu-system-i386
 -dns-server 10.11.11.11,10.11.11.14 -serial null -cpu android32
 -enable-hax -smp cores=2 -m 1536 -lcd-density 320 -kernel /Users/xx
 xx/.android-sdk/system-images/android-19/default/x86//kernel-ranchu
 -initrd /Users/xx
 xx/.android-sdk/system-images/android-19/default/x86//ramdisk.img
 -object iothread,id=disk-iothread -drive
 if=none,overlap-check=none,cache=unsafe,index=0,id=system,file=/Users/xx
 xx/.android/avd/Nexus_10_API_19.avd/system.img.qcow2,read-only
 -device
 virtio-blk-pci,drive=system,iothread=disk-iothread,modern-pio-notify
 -drive
 if=none,overlap-check=none,cache=unsafe,index=1,id=cache,file=/Users/xx
 xx/.android/avd/Nexus_10_API_19.avd/cache.img.qcow2,l2-cache-size=1048576
 -device
 virtio-blk-pci,drive=cache,iothread=disk-iothread,modern-pio-notify
 -drive
 if=none,overlap-check=none,cache=unsafe,index=2,id=userdata,file=/Users/xx
 xx/.android/avd/Nexus_10_API_19.avd/userdata-qemu.img.qcow2,l2-cache-size=1048576
 -device
 virtio-blk-pci,drive=userdata,iothread=disk-iothread,modern-pio-notify
 -drive
 if=none,overlap-check=none,cache=unsafe,index=3,id=sdcard,file=/Users/xx
 xx/.android/avd/Nexus_10_API_19.avd/sdcard.img.qcow2,l2-cache-size=1048576
 -device
 virtio-blk-pci,drive=sdcard,iothread=disk-iothread,modern-pio-notify
 -netdev user,id=mynet -device virtio-net-pci,netdev=mynet -netdev
 user,id=mynet2,net=10.0.3.0/24 -device virtio-net-pci,netdev=mynet2
 -show-cursor -L /Users/xx xx/.android-sdk/emulator/lib/pc-bios
 -soundhw hda -vga none -append 'qemu=1 androidboot.hardware=ranchu
 clocksource=pit android.qemud=1 console=0 console=0
 android.checkjni=1 qemu.gles=1 ndns=2' -android-hw /Users/xx
 xx/.android/avd/Nexus_10_API_19.avd/hardware-qemu.ini
所以我的问题是-这个系统映像是如何创建的?事实表明,一个完全不同的构建系统将其组合在一起。aosp 4.4分支中不存在创建支持ranchu的4.4 system.img文件的代码!虽然它确实存在于5.1分支中,但它只支持arm64。那么,有没有人能解释这里发生了什么