我需要构建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开发人员将在emulator
中运行名为$aosp/prebuilts/android-emulator/linux-x86_64/
的可执行文件,这显然是某种基于qemu二进制文件的包装器。
所以实际问题是:
emulator*
可执行文件是否包含qemu或者是否执行外部qemu二进制文件?aosp/prebuilts/android-emulator/linux-x86_64/qemu/linux-x86_64/
中的qemu二进制文件,那么运行emulator
会实际调用我的自定义qemu吗?emulator
并直接运行qemu-system-aarch64
来启动AOSP图像?或者尝试配置它是疯了吗?emulator*
二进制文件的来源在哪里?