运行Appium自动化测试时如何关闭安卓模拟器Nested Virtualization弹窗
解决方案
方案1:屏蔽系统层嵌套虚拟化通知
该弹窗为Linux桌面环境检测到KVM嵌套虚拟化启用后触发的系统通知,可直接关闭对应通知源的弹窗权限:
- GNOME桌面执行命令:
gsettings set org.gnome.desktop.notifications.application:/org/gnome/settings-daemon/plugins/hardware/ enable false - KDE桌面进入「系统设置-通知」,搜索Virtualization相关通知规则,关闭弹窗权限即可。
方案2:模拟器启动时追加参数跳过嵌套检测
启动安卓模拟器时添加忽略嵌套虚拟化检测的QEMU参数,从根源上避免触发通知:emulator @<你的模拟器名称> -qemu -enable-kvm -ignore-missing-feature nested-virtualization
如果通过Appium/Selenoid自动拉起模拟器,可将参数写入对应配置:
- Appium端在capabilities中添加配置:
avdArgs: "-qemu -ignore-missing-feature nested-virtualization" - Selenoid端在安卓容器的启动配置中追加上述模拟器参数即可。
方案3:切断容器与宿主桌面的通知通路
使用Selenoid容器化部署时,可在启动容器时移除X11转发配置,或添加环境变量阻断通知推送通路,避免容器触发的通知显示在宿主桌面,启动命令示例:docker run -d --name selenoid-android -e DISPLAY= -e QT_QPA_PLATFORM=offscreen -p 5555:5555 selenoid/android:<镜像版本号>
方案4:修改KVM模块配置关闭检测提示
如果上述方案均不生效,可直接修改KVM内核模块配置,关闭嵌套虚拟化相关的用户提示:
- 编辑KVM配置文件:
sudo nano /etc/modprobe.d/kvm.conf - 追加如下配置:
options kvm ignore_msrs=1 report_ignored_msrs=0 - 重启KVM模块生效(Intel处理器执行以下命令,AMD处理器将
kvm_intel替换为kvm_amd即可):sudo modprobe -r kvm_intel && sudo modprobe kvm_intel
内容的提问来源于stack exchange,提问作者Karim Narsindani
相关产品推荐
相关产品推荐

