【问题标题】:Android emulator hangs forever at boot timeAndroid模拟器在启动时永远挂起
【发布时间】:2017-12-17 00:54:05
【问题描述】:

模拟器已启动,但未启动更多“android”闪烁文本。

开始于

Android/Sdk/emulator/emulator @Nexus_5X_API_25 -verbose

在日志中只重复记录

emulator: MemoryReport: Epoch: 140737476643856, Res/ResMax/Virt/VirtMax: 737525760 737525760 5164826624 5302894592

如何修复/调试它?..

在 KVM 端虚拟化上运行良好,但在将模拟器更新到 26.1.2-4077558 后突然停止。

更新

感谢 albodelu 提供有关更新到 26.1.3 的信息。更新后我有:

KVM is required to run this AVD.
Unknown Error

Please file a bug against Android Studio.

已启用 KVM。 这是我通过向模拟器二进制文件添加可执行权限来修复的初始错误。 所以又做了一次。 强制模拟器工作:

chmod a+x ~/Android/Sdk/emulator/emulator*
chmod a+x ~/Android/Sdk/emulator/lib64/lib*
chmod a+x ~/Android/Sdk/emulator/qemu/linux-x86_64/*
chmod a+x ~/Android/Sdk/emulator/qemu-img
chmod a+x ~/Android/Sdk/tools/emulator*
chmod a+x ~/Android/Sdk/tools/android
chmod a+x ~/Android/Sdk/tools/bin/*

现在奇迹 :) 两个模拟器设备都在工作。

【问题讨论】:

  • 我也有同样的问题。你找到解决办法了吗?
  • 不是真正的解决方案。我目前刚刚创建了新的模拟器设备,它可以工作。但我不知道原因以及如何调试提到的问题......
  • 你试过新建一个吗?
  • 是的。正如我在上面所写的,我创建了一个新的并且它可以工作。但我不喜欢嵌入式 qemu 为什么会发生这种情况。也许一些权限相关(我修复了:向二进制文件添加了可执行标志)。
  • 我们有同样的问题here Travis-ci and api-25 emulator 正在寻找工作配置 here

标签: java android emulation qemu


【解决方案1】:

我的答案不是您的问题的确切解决方案,而是使用 Genymotion 进行模拟。它提供来自不同品牌的许多设备和更强大的 AVD。当我要虚拟测试传感器时,我只在 Android Studio 中使用 AVD。那个模拟器还是很麻烦,问题很大。

【讨论】:

  • 谢谢 Fatih,这是真的,但我认为我不能在 CI 构建服务器中使用 Genymotion,我正在为官方模拟器寻找一个特殊的解决方案。最初的问题与 Travis-ci 无关,但 Alexandr 已经解决了他的问题。
【解决方案2】:

我在使用硬件加速映像时遇到了这个问题。 适合我并且可能适合您的解决方案是创建一个新的虚拟设备,然后在“模拟性能”下选择“软件”:

【讨论】:

  • 谢谢 Auval,Ci 构建服务器仅支持 ARM 模拟器,以及使用基于 ARM 或 MIPS 的系统映像的 AVD can't be accelerated,所以我已经在使用软件了。
【解决方案3】:

当模拟器更新时,我已经多次遇到这种情况。

我找到的唯一解决方案,如果你能解决的话,就是删除模拟器并重新创建它,之后它应该可以正常工作。

【讨论】:

  • 谢谢博蒂。我会尝试让您的解决方案适应 Travis-ci 场景。
【解决方案4】:
emulator: MemoryReport: Epoch: 140737476643856, Res/ResMax/Virt/VirtMax: 737525760 737525760 5164826624 5302894592

解释

Epoch: 140737476643856 /* 创建此模拟器时给出的毫秒值*/

Res/ResMax/Virt/VirtMax

Res - 进程(启动进程)使用的资源内存。由于您的启动过程正在使用您的总 RAM(模拟器的 RAM),因此有点挂起。

ResMax - 资源内存表示您的模拟器的总实际 RAM 内存。

Virt - 进程使用的虚拟内存。它是交换内存。

VirtMax - 模拟器中可用的最大虚拟内存。

/*注意:由于启动过程并没有使用你的总虚拟内存,所以你的模拟器还在运行。但是由于所有的 RAM 都已满,所以处理正在发生,但它不能更进一步。所以,它一直在屏幕上显示“Android”。

我有这些基于顺序的解决方案(最好的就是最高的)。

1) 请增加您的模拟器的 RAM 内存。注意:您的笔记本电脑上应该有更多的 RAM。您还必须检查主机的 RAM 使用情况。

2) 如果您的主机(笔记本电脑)没有更多 RAM,那么您可能需要寻找替代模拟器,如 GenyMotion、BlueStacks,它比 Android 模拟器占用更少的内存。

GenyMotion:https://www.genymotion.com/

BlueStack:http://www.bluestacks.com/

这是如何在模拟器中增加 RAM 大小的图片。

打开 ADV > 编辑 > 显示高级设置 > 出现屏幕下方 > 增加 RAM

注意:VM 堆大小与您的问题无关。每个应用程序都是一个单独的 Dalvik 虚拟机实例。虚拟机堆提供了您最多可以为每个应用程序分配多少 RAM。

注意:此问题与您的图形无关。这是启动时挂起问题。因此,基于软件或硬件的模拟性能不应该是答案。

【讨论】:

  • 感谢标题更正和详细解释。但是 RAM 增加(从 500Mb 到 7Gb)并不能解决问题。它仍在打印消息 Res/ResMax/Virt/VirtMax: 767508480 767508480 6752296960 6819405824。另外我相信这只是关于分配内存的信息,而不是关于内存限制的信息。数字持续增加一点。这几行没有错...
【解决方案5】:

注意: 模拟器版本 26.1.3 是 here,包括有趣的修复。我现在正忙着修改:

使用模拟器 26.1.2 here 的相关问题。重新启动上次构建 like me 以使用 26.1.3 或在本地安装

【讨论】:

    【解决方案6】:

    我在使用 Android-SDK 模拟器时遇到了同样的问题。假设您有 Android 构建环境,此解决方案有效;就我而言,AOSP。在这种情况下,导致 OP 和其他人遇到相同问题的模拟器是来自 SDK 的 emulator64-arm。当我尝试 AOSP/prebuilts emulator64-arm 时,它工作得很好。常规的 AOSP 模拟器也能正常工作,您也可以将它们与 AVD 一起使用。希望这会有所帮助,祝你好运。

    【讨论】:

      猜你喜欢
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 2022-01-15
      • 2011-07-23
      • 2011-05-24
      • 1970-01-01
      相关资源
      最近更新 更多