我需要构建一个Android模拟器的自定义版本,并开始重建模拟器而不对AOSP 6.0.1 R62进行任何更改 .

令我惊讶的是,仿真器源代码不再包含在AOSP中 . 仿真器似乎预先构建在AOSP存储库中 . 经过一些研究,我设法 Build 了qemu(ranchu)本身:

  • 我下载了qemu来源:
git clone -b qemu-android-2.2.0 \
https://android.googlesource.com/platform/external/qemu-android
  • 我下载了qemu的Android构建脚本,这些脚本位于不同的存储库中:
git clone https://qemu-android.googlesource.com/qemu-ranchu
  • 我跑了 qemu-ranchu/scripts/rebuild.sh

该脚本构建了qemu并在 qemu-ranchu/binaries/linux-x86_64/ 中生成了二进制 qemu-system-aarch64 . 在AOSP中, $aosp/prebuilts/android-emulator/linux-x86_64/qemu/linux-x86_64/ 中有一个具有相同名称的文件,但这不是最终用户将执行的文件 . 一个Android开发人员会在 $aosp/prebuilts/android-emulator/linux-x86_64/ 中运行名为 emulator 的可执行文件,这显然是某种包围裸qemu二进制文件的包装器 .

所以实际的问题是:

  • 是否有关于ranchu构建的文档及其涉及的所有内容?我找不到任何:(

  • emulator* 可执行文件中是否包含qemu或者它们是否执行外部qemu二进制文件?

  • 如果我用自定义二进制文件覆盖 aosp/prebuilts/android-emulator/linux-x86_64/qemu/linux-x86_64/ 中的qemu二进制文件,运行 emulator 会实际调用我的自定义qemu吗?

  • 我可以绕过 emulator 并直接运行我的 qemu-system-aarch64 来启动AOSP图像吗?或者尝试配置它是疯了吗?

  • 所有 emulator* 二进制文件的来源在哪里?