首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为AOSP 6定制Android仿真器(ranchu)构建

为AOSP 6定制Android仿真器(ranchu)构建
EN

Stack Overflow用户
提问于 2016-09-29 09:46:29
回答 1查看 2K关注 0票数 10

我需要构建一个自定义版本的Android仿真器,并在不对AOSP6.0.1 R62进行任何更改的情况下重新构建模拟器。

令我惊讶的是,AOSP不再包含模拟器源代码。仿真器出现在AOSP存储库中。经过一些研究,我成功地建立了qemu (ranchu)本身:

  1. 我下载了qemu的源代码: git克隆-b QEMU-Androd-2.2.0\ https://android.googlesource.com/platform/external/qemu-android
  2. 我下载了qemu的Android构建脚本,这些脚本位于不同的存储库中: git克隆https://qemu-android.googlesource.com/qemu-ranchu
  3. 我运行了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二进制文件的某种包装。

因此,实际的问题是:

  1. 是否有任何关于ranchu建筑的文档和所有相关的文档?我找不到任何:
  2. emulator*可执行文件中是否包含qemu,还是执行外部qemu二进制文件?
  3. 如果我用自定义二进制文件覆盖aosp/prebuilts/android-emulator/linux-x86_64/qemu/linux-x86_64/中的qemu二进制文件,那么运行emulator实际上会调用我的自定义qemu吗?
  4. 我可以绕过emulator直接运行我的qemu-system-aarch64来引导AOSP映像吗?或者试图配置它是疯了吗?
  5. 所有emulator*二进制文件的来源在哪里?
EN

回答 1

Stack Overflow用户

发布于 2021-10-12 08:49:10

“兰初”模型是“金鱼”平台的下一个版本。这是一个轻量级的"virt“板与一些VirtIO设备(块,网络,控制台)以及一个定制的准虚拟化”管道“设备。这允许客户的用户空间与主机进行通信,这既用于与主机上的adb通信等功能,也用于加速OpenGL命令的传递接口。

正如您正确推测的那样,“模拟器”命令是围绕主要(严重分叉的) QEMU二进制文件的包装器。它提供了一个胶水之间的QEMU本身和皮肤显示的模拟手机。除了亚行、控制台和GL之外,它还进行一些跟踪和内存监视。

现在有了一个更现代的仿真器,叫做乌贼,它取消了一些更多的NIH谷歌添加,并使用VirtIO作为一个更标准化的设备模型。该仿真器本身基于CrosVM,并设计为可在KVM下运行,这使得它更适合在云中进行大规模测试。

总结你的问题的答案:

  1. 唯一真正的文档在源代码中。
  2. 模拟器执行一个外部分叉版本的QEMU。
  3. 也许,我似乎还记得它构建的qemu-android。
  4. 一个普通的QEMU构建不太可能工作,尽管您可能会得到一个CLI版本的Android只工作了足够的努力。
  5. 代码在AOSP树中。

我的(非常老的)笔记如下:

代码语言:javascript
复制
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_errors
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39766935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档