PAYATHON 2026

Android Studio 模拟器提示 device offline 并以 139 退出怎么办?

数据小陈

当前应优先排查模拟器进程退出的原因。adb: device offline 表示 ADB 当时无法与设备正常通信;结合退出码 139,它可能伴随模拟器崩溃出现。仅凭这些日志,还不能确定问题出在 ADB、图形驱动、快照,还是其他运行环境方面。

在 Linux 上,退出码 139 通常对应进程因 SIGSEGV(段错误)终止。要确认崩溃位置,需要查看模拟器的完整启动日志,并检查系统是否记录了崩溃信息。

1. 检查两个 ADB 路径,统一使用 SDK 中的版本

日志中同时出现了两个 ADB 路径:

/home/kieranhm/Android/Sdk/platform-tools/adb
/usr/bin/adb

这说明相关调用使用了不同路径下的 ADB,但不能直接证明两者发生了冲突。先检查终端中的命令来源和版本:

type -a adb
adb version
/home/kieranhm/Android/Sdk/platform-tools/adb version
/usr/bin/adb version

确认 Android Studio 配置的 Android SDK 路径。后续排查时,统一使用该 SDK 下的 platform-tools/adb,以减少不同安装来源带来的干扰。

关闭正在运行的模拟器,再执行:

/home/kieranhm/Android/Sdk/platform-tools/adb kill-server
/home/kieranhm/Android/Sdk/platform-tools/adb start-server
/home/kieranhm/Android/Sdk/platform-tools/adb devices -l

然后重新启动模拟器,再查看设备列表。模拟器已经退出时,列表中没有它是正常的。既然重启 ADB 已经试过且无效,应继续排查模拟器退出的原因。

2. 从终端启动模拟器,获取完整日志

通过 SDK 中的 emulator 直接启动 AVD,并禁用快照加载和保存:

/home/kieranhm/Android/Sdk/emulator/emulator -list-avds
/home/kieranhm/Android/Sdk/emulator/emulator -avd Medium_Phone -no-snapshot -verbose

如果第一条命令列出的 AVD 名称不同,请替换 Medium_Phone。

查看退出前的错误,留意是否涉及 EGL、OpenGL、Vulkan、共享库加载、KVM 或权限。仅凭 device offline 无法判断具体是哪一种问题。

如果系统提供 coredumpctl,可以在崩溃后执行:

coredumpctl list

根据进程名称和发生时间找到对应记录,再用 coredumpctl info <PID> 查看详情。是否保存记录取决于系统配置,因此没有记录也不能排除崩溃。

3. 分别检查快照和图形渲染

如果使用 -no-snapshot 后可以正常启动,故障可能与快照恢复有关。可以在 Device Manager 中对该 AVD 执行 Cold Boot,观察问题是否仍会复现。

如果禁用快照后依然退出,且日志涉及图形初始化,可以在 AVD 编辑界面中尝试软件渲染,再启动比较。选项名称和是否可选取决于 Android Studio、系统镜像及 AVD 配置。

如果软件渲染成功、硬件渲染失败,可以进一步检查主机图形驱动及图形后端兼容性。这个结果能缩小排查范围,但仍不足以单独确定具体的驱动缺陷。

Wipe Data 会清除虚拟设备中的应用和数据,只应在可以丢弃这些数据时使用。如果已经重新创建过 AVD,反复清除数据通常不能提供更多线索。

4. 检查 KVM 和实际可用空间

在 Ubuntu 上,可以运行以下命令检查模拟器的硬件加速条件:

/home/kieranhm/Android/Sdk/emulator/emulator -accel-check

如果结果提示 KVM 不可用或权限不足,再根据具体提示检查虚拟化设置、KVM 和用户权限。不要通过长期以 root 身份运行 Android Studio 来绕过权限问题。

32 GB 内存和 1 TB 磁盘是机器容量,并不代表启动时一定有足够的可用资源。可以检查当前状态:

free -h
df -h "$HOME" /tmp /dev/shm

如果 SDK 或 AVD 存放在其他分区,也需要检查对应分区。

5. 根据结果决定是否调整版本

现有材料不足以确认 Android Emulator 36.4.10 存在某个特定缺陷,也不能保证更换版本就能解决问题。

如果多个新建 AVD 都以相同方式退出,而快照、渲染模式和 KVM 检查仍无法定位问题,可以通过 SDK Manager 检查 Android Emulator、Platform-Tools 和系统镜像的可用更新。每次只调整一个组件,并保留调整前后的启动日志,以便判断变化是否有效。

继续反馈问题时,请提供模拟器退出前的完整日志、AVD 系统镜像与 CPU 架构、主机 GPU 和驱动信息,以及禁用快照、切换渲染方式后的结果。这些信息比反复重装应用更有助于确定原因。

备注:内容仅供参考。