我需要构建一个自定义版本的Android仿真器,并在不对AOSP6.0.1 R62进行任何更改的情况下重新构建模拟器。
令我惊讶的是,AOSP不再包含模拟器源代码。仿真器出现在AOSP存储库中。经过一些研究,我成功地建立了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/中运行名为$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*二进制文件的来源在哪里?发布于 2021-10-12 08:49:10
“兰初”模型是“金鱼”平台的下一个版本。这是一个轻量级的"virt“板与一些VirtIO设备(块,网络,控制台)以及一个定制的准虚拟化”管道“设备。这允许客户的用户空间与主机进行通信,这既用于与主机上的adb通信等功能,也用于加速OpenGL命令的传递接口。
正如您正确推测的那样,“模拟器”命令是围绕主要(严重分叉的) QEMU二进制文件的包装器。它提供了一个胶水之间的QEMU本身和皮肤显示的模拟手机。除了亚行、控制台和GL之外,它还进行一些跟踪和内存监视。
现在有了一个更现代的仿真器,叫做乌贼,它取消了一些更多的NIH谷歌添加,并使用VirtIO作为一个更标准化的设备模型。该仿真器本身基于CrosVM,并设计为可在KVM下运行,这使得它更适合在云中进行大规模测试。
总结你的问题的答案:
我的(非常老的)笔记如下:
repo init -u https://android.googlesource.com/platform/manifest -b emu-master-dev
cd ${REPO_ROOT}external/qemu
./android-configure.sh --no-strip --debug
make -j4
#The actual "QEMU2" emulator will be in ../qemu-android but the qemu
#directory includes all the wrapper programs you need. The emulator
##configure script overrides and replaces the upstream configure script
#and ensures it is properly linked in with the OpenGL wrappers.
export ANDROID_PRODUCT_OUT=/home/alex/lsrc/qemu/android/hackbox.generic
./objs/emulator -verbose -show-kernel -logcat '*:s' -selinux permissive -kernel ~/lsrc/qemu/linux.git/arch/arm/boot/zImage -sysdir /home/alex/lsrc/qemu/android/hackbox.generic -data userdata.img -ranchu -memory 2548 -qemu -d unimp,guest_errorshttps://stackoverflow.com/questions/39766935
复制相似问题