如何从源代码构建 Android 模拟器?

问题描述 投票:0回答:1

我想修改(目前,在来宾和主机端添加更多日志)Android 模拟器,我想它主要在 AOSP 中可用。

我的理解(或者更确切地说,想象)是Android模拟器可能有4个组件:

  1. 修改后的内核
  2. 客户组件,例如opengl API调用的远程转发等
  3. 实现任何远程调用的主机端服务(远程图形 API、远程调制解调器相关的 HAL API(如果有)等)
  4. “模拟器”二进制文件可以读取(一组)图像文件(例如 system.img?),渲染来宾帧,获取用户输入以将其传递给来宾等

我想象 1 位于一个单独的存储库中,并且可能作为命令行参数等提供给模拟器。我认为 2 和 3 可能在

AOSP
树中,我可能需要正确的目标/配置。我不知道 4 ——因为 4 现在作为可执行文件位于预构建目录中。

我找不到所有 4 个组件的完整构建说明。我找到了一些,但它们似乎已经过时了,并且不适用于最新的

aosp/main
分支。例如,this解释了如何构建模拟器二进制文件,它现在位于
aosp
的预构建目录中。虽然文章说我应该
lunch sdk_phone_x86_64-userdebug
,但目标似乎已经不存在了。

我只是运行了

lunch
,它显示了支持的目标列表。但是,其中没有
goldfish
ranchu
emulator
。有一些以
sdk
开头,但全部都是
sdk_car_*
。它们似乎不相关。

构建所需的 Android 模拟器组件的过程是怎样的?我使用的是 Linux (Debian),并用于在这里构建 android 映像。然而,我无法弄清楚我们应该如何构建模拟器、其内核以及模拟器将运行的图像。

android build emulation android-source
1个回答
0
投票

根据 Google 一位从事 Goldfish 工作的 SWE 的说法,午餐目标已更改为:

sdk_phone64_x86_64-trunk_staging-userdebug

而且,午餐菜单项不知怎的并没有出现在仅仅

lunch
命令上。

根据同一个 SWE 的说法,Goldfish 似乎没有修改内核,或者“与 Cuttlefish 共享内核。”

模拟器的清单分支是

emu-master-dev
。构建指令似乎是:

$ cd external/qemu
$ ./android/rebuild.sh --gfxstream
$ ls ./objs/emulator
© www.soinside.com 2019 - 2024. All rights reserved.