Kubuntu 上的 QEMU 频率不匹配

ita*_*ill 8 qemu kubuntu android-studio

我的 Kubuntu 17.10 上有以下消息 - 我用谷歌搜索了该消息,但不幸的是,命中对我来说太技术性了,无法找到解决方案:

Emulator: qemu-system-i386: warning: TSC frequency mismatch between VM
(2394456 kHz) and host (2394457 kHz), and TSC scaling unavailable
Run Code Online (Sandbox Code Playgroud)

有以下症状: 在此处输入图片说明

在第一次发布时,这方面一切正常,所以我不知道是什么导致了这个问题以及如何解决它。

小智 11

由于某些更新,我遇到了同样的问题,我从Android Studio(工具->AVD 管理器)打开了我的Android 虚拟设备管理器,然后匹配了出现问题的模拟器。我点击下拉菜单图标,操作栏,并选择清除数据选项。


ita*_*ill 9

我通过一种解决方法得到了解决方案!

tl;dr 版本-use-system-libs带有模拟器的选项是一种临时解决方法。

更长的版本

谷歌搜索TSC 频率不匹配没有给出可能导致问题的想法。禁用硬件加速是一种可能的解决方法,但结果是模拟缓慢。我给了它一些休息,但后来我认为这应该是与内核相关的问题,因为似乎是 KVM 导致了这个问题。我尝试禁用英特尔微码驱动程序(无帮助)和内核更新(无帮助),但在后者之后,至少我得到的神秘错误消息少了一些,例如:

21:31   Emulator: libGL error: unable to load driver: i965_dri.so
21:31   Emulator: libGL error: driver pointer missing
21:31   Emulator: libGL error: failed to load driver: i965
21:31   Emulator: libGL error: unable to load driver: i965_dri.so
21:31   Emulator: libGL error: driver pointer missing
21:31   Emulator: libGL error: failed to load driver: i965
21:31   Emulator: libGL error: unable to load driver: swrast_dri.so
21:31   Emulator: libGL error: failed to load driver: swrast
21:31   Emulator: X Error of failed request:  BadValue (integer parameter out of range for operation)
21:31   Emulator: Major opcode of failed request:  155 (GLX)
21:31   Emulator: Minor opcode of failed request:  24 (X_GLXCreateNewContext)
21:31   Emulator: Value in failed request:  0x0
21:31   Emulator: Serial number of failed request:  64
21:31   Emulator: Current serial number in output stream:  65
21:31   Emulator: Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)

所以这一定是驱动的问题!谷歌搜索第一条错误消息给了我这个命中-use-system-libs与模拟器一起使用。它现在工作了!但是,如何使其永久化?该页面还为我指明了正确的方向:使用包装脚本来启动模拟器。现在一切都像一个魅力。

所以,一步一步的解决方案:

  1. 在终端中:/home/$user/Android/Sdk/emulator/emulator -list-avds找到您的 AVD-s - 名称可能与 Android Studio 中的名称不同。找到您遇到问题的 AVD 的名称。请注意,根据您在 AStudio 安装期间指定的路径,模拟器路径也可能有所不同。
  2. 测试以下是否适合您作为手动解决方法: /home/$user/Android/Sdk/emulator/emulator -avd your_emulator_name_here -use-system-libs
  3. 如果 (2) 适合您,请重命名原始模拟器文件并从 shell 脚本启动它以启动永久选项标志(您的路径和文本编辑器可能不同):

    $ cd /home/$user/Android/Sdk/emulator/ $ mv emulator emulator.0 $ touch emulator $ chmod +x emulator $ kate emulator

插入以下内容并保存:

#!/bin/sh
set -ex
$0.0 $@ -use-system-libs
Run Code Online (Sandbox Code Playgroud)

现在,每次调用模拟器时,都是通过名为emulator的 shell 脚本使用系统库完成的,从现在起它应该不会出错。