我需要构建一个定制版本的Android模拟器,开始尝试重新构建AOSP 6.0.1 R62的模拟器源码,但未做任何更改。
令人惊讶的是,AOSP中不再包含模拟器源代码。模拟器似乎是预构建的,并存储在AOSP存储库中。经过一些研究,我成功地构建了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-system-aarch64
的二进制文件,位于qemu-ranchu/binaries/linux-x86_64/
。在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*
二进制文件的源代码在哪里?