在没有 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/su
)
stop 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 模拟器