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

时间:2013-04-23 11:59:10

标签: android-emulator virtualbox kvm

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

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

如何让两者同时运行?

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

13 个答案:

答案 0 :(得分:39)

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

答案 1 :(得分:29)

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

答案 2 :(得分:15)

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

答案 3 :(得分:5)

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

要做到这一点:

  1. 停止所有模拟器。
  2. 运行命令:'sudo rmmod kvm_intel kvm'
  3. 如果没有这些内核模块,Virtualbox和Android模拟器可以同时工作。

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

答案 4 :(得分:5)

最后有一个解决方法。

macOS

按照以下步骤操作:

  1. 在Android Studio中转到工具 - > Android - > SDK Manager

  2. 确认您安装了最新版本的Intel Emulator Accelerator HAXM(v6.1.1)Preferences panel in Android Studio

  3. 转到首选项中显示的Android SDK位置的outputTable = matrix(NA_character_, nrow = 102, ncol = 3)目录。在MacOS上,您可以这样做:

    extras

  4. 通过打开IntelHAXM_6.1.1.dmg安装HAXM包装,然后在已安装的文件夹中打开IntelHAXM_6.1.1.mpkg,并按照安装程序说明进行操作。

  5. Windows

    执行以下步骤
    1. 在Android Studio中转到工具 - > Android - > SDK Manager

    2. 确认您安装了最新版本的Intel Emulator Accelerator HAXM(v6.1.1)Preferences panel in Android Studio

    3. 转到首选项中显示的Android SDK位置的open ~/Library/Android/sdk/extras目录。类似的东西:

      extras

    4. 在该目录中是某种文件,如C:\Users\<username>\AppData\Local\Android\sdk\extras。跑吧。

答案 5 :(得分:4)

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

答案 6 :(得分:3)

另一种解决方案是使用vagrant-libvirt插件使用libvirt支持的流浪汉。

答案 7 :(得分:2)

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

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

kvm Win7.vdi -boot c -m 2G -vga qxl

答案 8 :(得分:1)

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

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

答案 9 :(得分:1)

以下是使用 vagrant 解决此问题的方法,它是两个插件'libvirt'和'mutate':

  1. 打开终端并设置环境变量:

     export VAGRANT_DEFAULT_PROVIDER=libvirt
     export VAGRANT_HOME=/home/directoryToStoreVagrant/
     VBoxManage list vms
    
  2. 现在复制一个从上一个命令获得的代码,例如 “ c1530713-aec2-4415-a6b5-b057928c7e5f”并用于以下用途:

      

    无用的包装--base c1530713-aec2-4415-a6b5-b057928c7e5f   --output window7.box

     vagrant init window7
     vagrant up window7 --provider=libvirt 
     vagrant box list
    
  3. 您需要安装一些流浪汉插件,例如 libvirt 变异。 Mutate会将.box转换为libvirt VM:

      

    vagrant插件安装vagrant-libvirt      vagrant插件安装vagrant-mutate

  4. 将无业游民的盒子转换为libvirt:

    vagrant mutate window7_.box libvirt

  5. 现在,您可以初始化无所事事的VM。如果仍然存在任何错误,请移至 编辑您的Vagrant文​​件。对我来说,我取消注释行的开头 config.vm.network ,然后在下面运行命令:

    vagrant up --provider=libvirt

这就是我能够完全消除此错误的方式

答案 10 :(得分:0)

在某些情况下,我们需要保持VirtualBox计算机的正常运行,因此让所有VirtualBox计算机保持运行,切换到物理移动设备以测试您的应用程序而不是模拟器。

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

答案 11 :(得分:0)

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

答案 12 :(得分:0)

对于那些在 Linux 上进行开发并且受困于在 virtualbox 内运行的大量后端系统的人,一个简单的解决方案是创建一个 virtualbox X86 Android VM 并在从 localhost 通过隧道传输的 NAT 接口上公开 5555 端口拍。 不需要slow arm AVD,不需要libvirt/vagrant更不用杀kvm!

enter image description here

然后让adb知道

$ adb tcpip 5555
restarting in TCP mode port: 5555
$ adb connect 127.0.0.1
connected to 127.0.0.1:5555
$ adb devices
List of devices attached adb server
* daemon started successfully
emulator-5554   device

然后,按运行或调试,Android Studio 将在该 VM 上部署和执行。 您可以完全控制 Android Studio 调试器。