Ich kann den (Android-)Emulator64-x86 nicht starten. Es scheitert immer mit:
--> ./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
Jeder Forenthread, den ich zu diesem Problem gefunden habe, bestand darin, ldd auf dem Emulator64 und der XCB-Bibliothek auszuführen, um nach fehlenden Abhängigkeiten zu suchen:
--> 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)
Und für 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)
Weitere Details:
Es scheint also, dass alle Abhängigkeiten in Ordnung sind. Wie kann ich dieses Problem weiter debuggen? Irgendeine Idee, wie ich den Emulator zum Laufen bringen kann?
Es stellte sich heraus, dass ich QT mit Debug-Protokollierung ausführen kann:
QT_DEBUG_PLUGINS=1 ./emulator64-x86 -avd loli -gpu off
Also ich es scheitert an:
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)
Ich habe jede mögliche Lösung ausprobiert, die ich im Internet finden konnte, aber ich habe immer noch:
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 "".
Die Fehlermeldung ist eigentlich irreführend. In meinem Ordner „/lib64“ habe ich eine Datei „libQt5XcbQpa.so.5“, die mit der gemeinsam genutzten Bibliothek „libQt5XcbQpa.so.5.10.1“ verknüpft ist.
Dies ist nicht die richtige Version. Alle korrekten Bibliotheken sind tatsächlich gespeichert unter:
~/android/emulator/lib64/qt/lib
Wenn Sie den obigen Pfad als Teil von „$LD_LIBRARY_PATH“ einschließen, wird der Emulator ausgeführt.
Für die Android SDK-Version 30.3.5.0 build_id 7033400 stellte sich heraus, dass es sich um einen Fehler handelte. Diese Version erfordert für einen erfolgreichen Start eine ordnungsgemäß unter $HOME/.android erstellte Verzeichnisstruktur.
Um die Verzeichnisstruktur zu erstellen, müssen Sie den Emulator -writable-system
einmal ausführen. Angenommen, Sie haben ein AVD mit dem Namen „test“ erstellt, dann können Sie den Emulator wie folgt starten:
/opt/android-sdk/emulator/emulator -no-window -writable-system -avd test
Sobald es erstellt ist, benötigen Sie die Option nicht mehr.
/opt/android-sdk/emulator/emulator -no-window -avd test
Svetlin Zarev