在没有 GUI 的情况下运行 Android 模拟器(无头 Android)

Posted

技术标签:

【中文标题】在没有 GUI 的情况下运行 Android 模拟器(无头 Android)【英文标题】:Run Android emulator without GUI (headless Android) 【发布时间】:2014-01-19 01:57:30 【问题描述】:

如何在没有 GUI(无头 android)的情况下运行模拟器?

我的要求是在模拟器上运行无头Android。如果我使用ro.config.headless 1 是否正确?还是禁用zygote

【问题讨论】:

我的要求是在模拟器上运行无头Android。也许使用 ro.config.headless 1 ?或禁用合子?谢谢 可能重复:***.com/questions/44900957/… @Onik 它与Jenkins 相关,虽然这是它的真实应用程序...这里user-interface 内容标签似乎具有误导性,因为headless 排除了这一点。 【参考方案1】:

Android Emulator 28.1.8 现在支持在无头模式下运行模拟器 (emulator-headless):https://androidstudio.googleblog.com/2019/02/emulator-2818-canary.html

【讨论】:

【参考方案2】:

29.2.11 开始,您需要使用-no-window 选项而不是emulator-headless 二进制:

二进制 emulator-headless 现已停用。引擎的无头版本现在通过emulator -no-window 启动,从而统一了以前独立(但相似)的路径。

https://androidstudio.googleblog.com/2019/12/emulator-29211-and-amd-hypervisor-12-to.html

【讨论】:

【参考方案3】:

实现这一目标的一个选项是在模拟器运行时停止zygote 服务。当停止zygote 进程(又名app_process)时,系统启动时从zygote 派生的所有系统服务都会关闭。只有少数本机系统服务将运行。模拟器的显示屏应显示启动徽标(或动画)。

停止zygote的步骤如下:

adb shell su大多数模拟器图像都有/system/xbin/sustop zygote

之后,您可以探索使用service list 运行的服务有多少。将停止对 Android 运行时服务至关重要的服务,例如

activity: [] // ActivityManager
package: [] // PackageManager
display: [] // DisplayManager
...

要启动zygote 执行:

start zygote

注意:使用@CommonsWare 的解决方案,您仍然可以运行zygote 和大多数Android 系统服务。

【讨论】:

【参考方案4】:

在我的 ssh 服务器 ubuntu 18.4 上构建 AOSP 后,我遇到了模拟器无法运行的问题。

模拟器:警告:系统分区大小已调整为匹配图像文件 (2562 MB > 800 MB) QXcbConnection:无法连接到显示器 中止(核心转储)

我使用了emulator -no-window,发现模拟器进程已启动。 现在我可以使用 ADB 来验证 AOSP 更改

【讨论】:

以上是关于在没有 GUI 的情况下运行 Android 模拟器(无头 Android)的主要内容,如果未能解决你的问题,请参考以下文章

在没有互联网访问的情况下运行 Android 模拟器 [关闭]

在没有 Android Studio 的情况下运行 AVD 模拟器

运行 Android 模拟器 - 分段错误

在没有窗口/GUI 的情况下运行 Pygame

如何在没有 GUI 的情况下运行 MATLAB 并获得图形结果?

JProfiler 可以在没有 GUI 的情况下运行吗?