You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VMware中android-x86非root用户无法访问ALSA音频设备问题求助

Android x86 8.1非特权用户无法访问ALSA音频设备解决方案

问题根因

Android x86未采用传统Linux的audio用户组权限策略,你之前未定位到的音频设备实际存放在/dev/snd/目录下,该路径下的字符设备节点权限由init进程启动时动态配置,同时访问行为受SELinux安全规则管控,普通应用UID默认没有底层ALSA设备的访问权限,因此会出现声卡找不到、权限被拒绝的报错。

可行解决方案

方案1:修改ALSA设备节点权限(优先推荐)

  1. 临时验证(重启失效)
    root权限下执行以下命令:
# 确认声卡设备节点存在
ls -l /dev/snd
# 给所有用户开放设备读写权限
chmod 0666 /dev/snd/*

切换到非特权用户后执行alsa_aplay -l验证是否能识别声卡,再执行播放测试命令确认功能正常。
2. 持久化配置(重启仍生效)
编辑 /etc/init.sh 文件,在原有alsa配置段的末尾新增一行:

chmod 0666 /dev/snd/*

若要更安全的权限控制,可修改节点属组为所有用户都归属的everybody组,将上面的命令替换为:

chgrp everybody /dev/snd/* && chmod 0660 /dev/snd/*

方案2:关闭SELinux(排查/测试场景用)

如果修改设备权限后仍无法访问,可临时关闭SELinux验证问题根源:
root权限下执行:

setenforce 0

再次用非特权用户测试音频访问,若此时恢复正常,说明是SELinux规则拦截。个人测试使用可在系统grub启动参数中添加selinux=permissive,永久开启SELinux宽容模式避免拦截。

方案3:授予应用对应Android权限(针对应用访问ALSA场景)

如果是第三方应用需要调用底层ALSA接口,需要root下给对应应用授予音频相关权限:

# 授予音频配置修改权限
pm grant <应用包名> android.permission.MODIFY_AUDIO_SETTINGS
# 如需录音功能额外授予录音权限
pm grant <应用包名> android.permission.RECORD_AUDIO

内容的提问来源于stack exchange,提问作者namonaki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:24:05