我正在尝试在我的 x86-64 机器(Intel cpu)上的 WSL2 Ubuntu 20 上为 android 11 构建 AOSP,构建(针对 aosp_arm64-eng)成功但模拟器无法在我的 WSL2 上运行。
我已经尝试应用我在网上找到的修复程序但没有任何帮助(修改环境变量,安装库等(我还没有尝试过 LD_PRELOAD 技巧) 我认为它试图在 repo 中使用 Qt。
(另请参阅:在未安装 qt 的情况下在 linux 上启动 qt5 应用程序时“无法加载平台插件“xcb”)
流程是:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-11.0.0_r50
$ repo sync
$ source build/envsetup.sh
$ lunch aosp_arm64-eng
$ m -j4
[build was successfull]
$ emulator
WARNING: encryption is off
INFO: QtLogger.cpp:68: Warning: could not connect to display ((null):0, (null))
INFO: QtLogger.cpp:68: Info: Could not load the Qt platform plugin "xcb" in "/home/idan/WORKING_DIRECTORY/prebuilts/android-emulator/linux-x86_64/lib64/qt/plugins" even though it was found. ((null):0, (null))
Fatal: This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: xcb.
((null):0, (null))
INFO: QtLogger.cpp:68: Fatal: This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: xcb.
((null):0, (null))
Aborted
$ which emulator
/home/idan/WORKING_DIRECTORY/prebuilts/android-emulator/linux-x86_64/emulator
模拟器的ldd输出:
linux-vdso.so.1 (0x00007ffe785b7000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7e5d483000)
libc++.so.1 => /home/idan/WORKING_DIRECTORY/prebuilts/android-emulator/linux-x86_64/lib64/libc++.so.1 (0x00007f7e5d3a4000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7e5d255000)
libtcmalloc_minimal.so.4 => /home/idan/WORKING_DIRECTORY/prebuilts/android-emulator/linux-x86_64/lib64/libtcmalloc_minimal.so.4 (0x00007f7e5ce64000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f7e5ce59000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7e5ce34000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f7e5ce19000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7e5cc27000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7e5d4a2000)
在以下文件夹中,我有这些 .so 文件:
~/WORKING_DIRECTORY/prebuilts/android-emulator/linux-x86_64/lib64/qt/lib$ ls
libQt5CoreAndroidEmu.so.5 libQt5SvgAndroidEmu.so.5 libX11-xcb.so.1.0.0 libxcb-xkb.so.1 libxkbcommon-x11.so.0.0.0
libQt5DBusAndroidEmu.so.5 libQt5WidgetsAndroidEmu.so.5 libfontconfig.so.1 libxcb-xkb.so.1.0 libxkbcommon.so
libQt5GuiAndroidEmu.so.5 libQt5XcbQpaAndroidEmu.so.5 libfreetype.so.6 libxcb-xkb.so.1.0.0 libxkbcommon.so.0
libQt5NetworkAndroidEmu.so.5 libX11-xcb.so.1 libsoftokn3.so libxkbcommon-x11.so libxkbcommon.so.0.0.0
libQt5PrintSupportAndroidEmu.so.5 libX11-xcb.so.1.0 libsqlite3.so libxkbcommon-x11.so.0
和内部插件:
~/WORKING_DIRECTORY/prebuilts/android-emulator/linux-x86_64/lib64/qt/plugins/platforms$ ls
libqxcb.so
$ ldd libqxcb.so
linux-vdso.so.1 (0x00007fff4bf5b000)
libQt5XcbQpaAndroidEmu.so.5 => not found
libfontconfig.so.1 => /lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f3b43599000)
libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f3b434da000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f3b434be000)
libQt5GuiAndroidEmu.so.5 => not found
libQt5DBusAndroidEmu.so.5 => not found
libQt5CoreAndroidEmu.so.5 => not found
libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007f3b43434000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f3b43411000)
libX11-xcb.so.1 => /lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f3b4340c000)
libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f3b433e2000)
libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x00007f3b433cd000)
libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f3b4328e000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f3b4313f000)
libxkbcommon-x11.so.0 => /lib/x86_64-linux-gnu/libxkbcommon-x11.so.0 (0x00007f3b43134000)
libxkbcommon.so.0 => /lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f3b430f2000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3b430ec000)
libc++.so.1 => /lib/x86_64-linux-gnu/libc++.so.1 (0x00007f3b4302a000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f3b4300d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3b42e1b000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f3b42ded000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f3b42de4000)
libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f3b42dac000)
libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f3b42cf4000)
libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f3b42cbe000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3b435fe000)
libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f3b42cb8000)
libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f3b42cb0000)
libxcb-xkb.so.1 => /lib/x86_64-linux-gnu/libxcb-xkb.so.1 (0x00007f3b42c92000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f3b42c87000)
libc++abi.so.1 => /lib/x86_64-linux-gnu/libc++abi.so.1 (0x00007f3b42c4d000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f3b42c33000)
假设 WSL2,只需尝试在系统范围内安装它:
sudo apt-get install libx11-xcb1
或其他任何可能提供
libqxcb.so
.
直接在 Windows & HAXM 上运行,整体性能可能会更好
我只是想知道,WSL2 将如何处理 KVM,因为它本身可能是一个仿真。
在 WSL2 上构建不是问题,但在没有 KVM 的情况下运行模拟器是:
https://boxofcables.dev/kvm-optimized-custom-kernel-wsl2-2022/
好吧,最终我在到 linux 服务器的远程 ssh 连接上尝试了它并得到了类似的错误。
问题是模拟器需要图形环境。因此,要么使用抓取构建输出图像并在 Android Studio 中使用它,要么使用 vncserver(和客户端)从 GUI 环境连接到它。
我遇到了同样的问题 你解决了吗?