No puedo iniciar el (android) emulator64-x86. Siempre falla con:
--> ./emulator64-x86 -avd loli -gpu off
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Available platform plugins are: linuxfb, minimal, offscreen, xcb.
Reinstalling the application may fix this problem.
zsh: abort ./emulator64-x86 -avd loli -gpu off
Cada hilo del foro que encontré sobre el problema era ejecutar ldd en el emulador64 y la biblioteca XCB para verificar si faltan dependencias:
--> ldd emulator64-x86
linux-vdso.so.1 (0x00007ffefb048000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f3bfefb5000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f3bfec75000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007f3bfe9e9000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3bfe7e5000)
libQt5Widgets.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007f3bfdf9f000)
libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007f3bfd838000)
libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f3bfd14d000)
libQt5Svg.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Svg.so.5 (0x00007f3bfcef8000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f3bfcb73000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f3bfc828000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f3bfc625000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f3bfc407000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f3bfc1ef000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3bfbe39000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3bff1bd000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f3bfbc11000)
libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f3bfb9e0000)
libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f3bfb72a000)
libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f3bfb4f7000)
libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f3bfb258000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f3bfb03e000)
libicui18n.so.57 => /usr/lib/x86_64-linux-gnu/libicui18n.so.57 (0x00007f3bfabca000)
libicuuc.so.57 => /usr/lib/x86_64-linux-gnu/libicuuc.so.57 (0x00007f3bfa825000)
libpcre2-16.so.0 => /usr/lib/x86_64-linux-gnu/libpcre2-16.so.0 (0x00007f3bfa5b8000)
libdouble-conversion.so.1 => /usr/lib/x86_64-linux-gnu/libdouble-conversion.so.1 (0x00007f3bfa3a7000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f3bfa093000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f3bf9e8f000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f3bf9c89000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f3bf9a77000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f3bf97c2000)
libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f3bf9595000)
libicudata.so.57 => /usr/lib/x86_64-linux-gnu/libicudata.so.57 (0x00007f3bf7b18000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f3bf78a6000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f3bf7691000)
Y para LibXCB:
--> ldd /usr/lib/x86_64-linux-gnu/libxcb.so.1
linux-vdso.so.1 (0x00007ffc465d8000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f68c727c000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f68c7076000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f68c6cc0000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f68c6aab000)
/lib64/ld-linux-x86-64.so.2 (0x00007f68c76a8000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f68c68a3000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f68c6685000)
Detalles adicionales:
Entonces parece que todas las dependencias están bien. ¿Cómo puedo depurar más ese problema? ¿Alguna idea de cómo puedo hacer que funcione el emulador?
Resultó que puedo ejecutar QT con registro de depuración:
QT_DEBUG_PLUGINS=1 ./emulator64-x86 -avd loli -gpu off
Así que falla debido a:
Cannot load library /home/svetlin/software/android/emulator/lib64/qt/plugins/platforms/libqxcb.so: (/home/svetlin/software/android/emulator/lib64/qt/plugins/platforms/libqxcb.so: symbol _ZN26QPlatformIntegrationPlugin6createERK7QStringRK11QStringList, version Qt_5 not defined in file libQt5Gui.so.5 with link time reference)
Probé todas las soluciones posibles que pude encontrar en la red, pero todavía obtuve:
Cannot load library
/home/darkstar/android/emulator/lib64/qt/plugins/platforms/libqxcb.so:
(/lib64/libQt5XcbQpa.so.5: version `Qt_5_PRIVATE_API' not found
(required by /home/darkstar/android/emulator/lib64/qt/plugins/platforms/libqxcb.so))
This application failed to start because it could not find or load the
Qt platform plugin "xcb" in "".
El mensaje de error es realmente engañoso. En mi carpeta '/lib64', tengo un archivo 'libQt5XcbQpa.so.5' y se vincula a la biblioteca compartida 'libQt5XcbQpa.so.5.10.1'.
Esta no es la versión correcta. Todas las bibliotecas correctas están realmente almacenadas en:
~/android/emulator/lib64/qt/lib
Si incluye la ruta anterior como parte de '$LD_LIBRARY_PATH', se ejecutará el emulador.
Para Android SDK versión 30.3.5.0 build_id 7033400 resultó ser un error. Esta versión requiere una estructura de directorio creada correctamente en $HOME/.android para un inicio exitoso.
Para crear la estructura de directorios, debe ejecutar el emulador -writable-system
una vez. Por ejemplo, supongamos que ha creado un avd llamado 'prueba', luego puede iniciar el emulador de la siguiente manera:
/opt/android-sdk/emulator/emulator -no-window -writable-system -avd test
Una vez que se crea, ya no necesita la opción.
/opt/android-sdk/emulator/emulator -no-window -avd test
Svetlin Zarev