Linux环境下命令行/流水线运行Android模拟器报QT插件提取失败
解决方案
1 本地命令行启动场景
- 首先确认当前shell环境是否继承了图形会话的
DISPLAY变量,执行以下命令查看:
如果输出为空,执行如下命令配置(单用户本地图形环境默认值为echo $DISPLAY:0,如果是多用户或自定义配置,可在图形终端中执行上述命令获取实际值替换):export DISPLAY=:0 - 执行
xhost +local:临时放开本地用户对X11显示服务的访问权限,再重新运行模拟器启动命令。 - 如果仍报错,安装缺失的xcb依赖组件(以Debian/Ubuntu系发行版为例,其他发行版对应安装同名软件包即可):
注:Android模拟器自带独立的Qt运行环境,你额外安装的系统级Qt不会被模拟器调用,反而你配置的Qt相关环境变量可能导致模拟器加载错误的运行库,可临时注释你手动配置的sudo apt install libxcb-xinerama0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xkb1 libxkbcommon-x11-0QT_PLUGIN_PATH、QTDIR等环境变量后重试。
2 Azure Pipelines等无头CI场景
不需要依赖图形显示服务,直接给启动命令添加-no-window参数即可绕开Qt图形组件加载逻辑,修改后的命令如下:
emulator -avd emulator-5554 -no-window
可根据需求追加其他优化参数:
-gpu off:关闭GPU加速,规避显卡驱动兼容问题-no-audio:关闭音频服务,减少不必要的运行时报错-no-boot-anim:关闭开机动画,加快模拟器启动速度
内容的提问来源于stack exchange,提问作者TechBen
相关产品推荐
相关产品推荐

