Android模拟器和虚拟机无法同时运行

问题描述 投票:84回答:13

每当我运行Virtualbox时,我都无法启动Android模拟器图像(反之亦然)。 AVD管理器中的错误消息是

ioctl(KVM_CREATE_VM) failed: Device or resource busy
ko:failed to initialize KVM

如何让两者同时运行?

这是一个Ubuntu 64位,所有涉及的软件都是最新发布的版本。

android-emulator virtualbox kvm
13个回答
39
投票

删除kvm内核模块(使用'sudo rmmod kvm_intel kvm')可以同时运行Virtualbox和Android模拟器,但在这样的设置中Android模拟器的性能非常糟糕。如果可能,最好关闭Virtualbox模拟器并通过运行'sudo /etc/init.d/vboxdrv stop'卸载其驱动程序(vboxdrv)。谷歌在关于Linux的部分中对Android Emulator page提出了这个“解决方案”。


1
投票

我通过安装HAXM 6.1.2解决了这个问题。

有关详细信息,请参阅以下链接: - https://forums.docker.com/t/cant-using-docker-for-mac-with-android-emulator-haxm/8939/11


1
投票

以下是如何解决这个问题,使用vagrant和它的两个插件'libvirt'和'mutate':

  1. 打开终端并设置环境变量: export VAGRANT_DEFAULT_PROVIDER=libvirt export VAGRANT_HOME=/home/directoryToStoreVagrant/ VBoxManage list vms
  2. 现在复制从最后一个命令获得的代码,如“c1530713-aec2-4415-a6b5-b057928c7e5f”,并使用以下内容: vagrant package --base c1530713-aec2-4415-a6b5-b057928c7e5f --output window7.box vagrant init window7 vagrant up window7 --provider=libvirt vagrant box list
  3. 你需要安装一些像libvirt和mutate这样的流浪插件。 Mutate会将.box转换为libvirt VM: vagrant plugin install vagrant-libvirt vagrant plugin install vagrant-mutate
  4. 将流浪盒转换为libvirt: vagrant mutate window7_.box libvirt
  5. 现在您可以初始化vagrant VM。如果任何错误仍然存​​在,请移动以编辑您的Vagrant文​​件。对我来说,我取消注释该行以config.vm.network开头,然后运行以下命令: vagrant up --provider=libvirt

这就是我完全摆脱这个错误的方式


0
投票

在某些情况下,我们需要保持虚拟机启动并运行,因此让所有虚拟机机器继续运行,切换到物理移动设备来测试应用程序而不是模拟器。

如果你正在使用react-native或你真正的android / ios设备,你可以使用expo。


0
投票

这可能超出了主题,因为OP同时请求了VirtualBox + KVM,但仍然可能是解决方法:我正在寻找一种在Ubuntu 18.10 x64上启动Windows 7和AVD的方法。关闭KVM不是一种选择,因为AVD的性能对我来说至关重要。我已经通过Virtual Machine Manager(virt-manager软件包)安装了Windows 7,现在AVD和Windows 7都是硬件加速的。


29
投票

我得到了相同的VirtualBox冲突。使用不同于“x86”的ABI解决了它(在我的例子中是armeabi-v7a)


16
投票

我停止了使用VirtualBox运行的虚拟机。这使错误消失。


5
投票

我在Ubuntu 13.10上遇到了同样的问题。尝试删除kvm和kvm_intel内核模块。

去做这个:

  1. 停止所有模拟器。
  2. 运行命令:'sudo rmmod kvm_intel kvm'

没有这些内核模块,Virtualbox和Android模拟器可以同时工作。

顺便说一句,我不知道为什么模块被加载。


5
投票

最后有一个解决方案。

请按照以下步骤操作macOS:

  1. 在Android Studio中转到工具 - > Android - > SDK Manager
  2. 确认您安装了最新版本的Intel Emulator Accelerator HAXM(v6.1.1)Preferences panel in Android Studio
  3. 转到首选项中显示的Android SDK位置的extras目录。在MacOS上,您可以这样做: open ~/Library/Android/sdk/extras
  4. 通过打开IntelHAXM_6.1.1.dmg安装HAXM打包,然后在装入的文件夹中打开IntelHAXM_6.1.1.mpkg,并按照安装程序说明进行操作。

请按照以下步骤操作Windows:

  1. 在Android Studio中转到工具 - > Android - > SDK Manager
  2. 确认您安装了最新版本的Intel Emulator Accelerator HAXM(v6.1.1)Preferences panel in Android Studio
  3. 转到首选项中显示的Android SDK位置的extras目录。就像是: C:\Users\<username>\AppData\Local\Android\sdk\extras
  4. 在那个目录中是某种文件,如intelhaxm-android.exe。运行。

4
投票

您还可以在仿真器设置中将CPT / ABI设置从x86更改为arm。


3
投票

我终于通过使用Genymotion而不是标准的Android模拟器使这个问题过时了。除了没有这种冲突,它比普通的仿真器快几倍。


3
投票

另一个解决方案是使用vagrant-libvirt插件使用libvirt支持的vagrant。


2
投票

虽然这也是一种解决方法,但绝对比每个人都建议的禁用KVM更好。

只需在KVM中运行virtualbox guest虚拟机即可。例如(kvm这里只是一个运行qemu-system-x86_64 -enable-kvm的脚本):

kvm Win7.vdi -boot c -m 2G -vga qxl
© www.soinside.com 2019 - 2024. All rights reserved.