当我尝试在模拟器上运行我的Android应用程序时,我得到这个错误:

/dev/kvm权限被拒绝。

我检查了权限,并将我当前登录的用户添加到kvm组。怎么了?


当前回答

sudo setfacl -m u:$USER:rwx /dev/kvm

为我工作。

其他回答

以下是我所做的:

user@user:~$ whoami

安东尼奥

sudo apt install qemu-kvm

sudo adduser antonio kvm

sudo chown antonio /dev/kvm

最后但同样重要的

Android工作室 select File ->重启IDE

要应用更改

然后创建模拟器

终端类型:

sudo apt install qemu-kvm -y
sudo chown $USER /dev/kvm

为了在Linux中制作一个虚拟设备-我必须遵循这三个命令,它可以帮助我避免构建avd设备的麻烦-过程是-

sudo apt install qemu-kvm
sudo adduser $USER kvm
sudo chown $USER /dev/kvm 

所以,现在你已经准备好了,重新启动android studio并开始使用模拟器构建应用程序。

对于Jerrin在Ubuntu 18.04中通过使用bash终端中的$USER变量来修复这个错误的回答,只有一个轻微的改进。所以你可以使用以下命令两个命令:

sudo apt install qemu-kvm

将当前用户加入kvm组

sudo adduser $USER kvm

如果你仍然有问题,另一个问题是我安装Ubuntu的方式。我在安装过程中错误地勾选了安装第三方软件的方框,这与我的nvidia显卡开发不太匹配。所以我重新安装了Ubuntu,没有检查这个第三方软件。

安装完成后,打开“软件和更新”,进入“附加驱动程序”选项卡。选择最新的、也经过测试的专有驱动程序,并应用更改。应重新启动计算机以使更改生效。

在Ubuntu下,/dev/kvm的权限通常是这样的:

$ ls -l /dev/kvm
crw-rw---- 1 root kvm 10, 232 May 24 09:54 /dev/kvm

运行Android模拟器的用户(即您的用户)需要访问此设备。

因此,基本上有两种访问方式:

确保您的用户是kvm组的一部分(更改后需要您的用户重新登录) 扩大该设备的权限,以便您的用户可以访问(需要更改udev守护进程配置)

将用户添加到KVM组

检查您的用户是否已经是kvm组的一部分,例如:

$ id 
uid=1000(juser) gid=1000(juser) groups=1000(juser),10(wheel)

如果不是,那就加上例如:

$ sudo usermod --append --groups kvm juser

更改之后,您必须注销并再次登录以使组更改生效(再次检查id)。

扩大权限

或者,您也可以扩大/dev/kvm设备的权限。

例子:

echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \
    | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm

FWIW,这是其他发行版(如Fedora和CentOS)的默认设置。

使用另一个ls检查上述命令的有效性。你应该看到类似的输出:

$ ls -l /dev/kvm
crw-rw-rw-. 1 root kvm 10, 232 2020-05-16 09:19 /dev/kvm

最大的优势:您不需要注销并再次登录才能使此更改生效。

没有办法的办法

calling chmod and chown directly on /dev/kvm - 1) these changes aren't persistent over reboots and 2) since /dev/kvm permissions are controlled by the udev daemon, it can 'fix' its permissions at any time, e.g. after each emulator run adding executable permissions to /dev/kvm - your emulator just requires read and write permissions changing permissions recursively on /dev/kvm - I don't know what's up with that - looks like cargo cult installing extra packages like qemu - you already have your emulator installed - you just need to get access to the /dev/kvm device