4 votes

Impossible de démarrer l'émulateur Android64 en raison de l'impossibilité pour Qt de charger xcb

Je ne peux pas démarrer l'émulateur (Android) 64-x86. Il échoue toujours avec :

--> ./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

Tous les fils de discussion que j'ai trouvés sur le forum au sujet de ce problème recommandaient de lancer ldd sur l'émulateur64 et la bibliothèque XCB pour vérifier si des dépendances manquaient :

--> 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)

Et pour 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)

Détails supplémentaires :

  • Émulateur Android version 27.1.7.0 (build_id 4581633) (CL:b5ec07662db0f9d8644e5fbda7040053a8741bfd)
  • Debian SID x64

Il semble donc que toutes les dépendances soient correctes. Comment puis-je déboguer ce problème plus avant ? Une idée sur la façon de faire fonctionner l'émulateur ?

Il s'est avéré que je peux exécuter QT avec un enregistrement de débogage :

QT_DEBUG_PLUGINS=1 ./emulator64-x86 -avd loli -gpu off

Donc, j'échoue à cause de :

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)

1voto

aGuyInLasVegas Points 11

J'ai essayé toutes les solutions possibles que j'ai pu trouver sur le net, mais j'ai toujours.. :

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 "".

Le message d'erreur est en fait trompeur. Dans mon dossier '/lib64', j'ai un fichier 'libQt5XcbQpa.so.5' et il est lié à la librairie partagée 'libQt5XcbQpa.so.5.10.1'.

Ce n'est pas la bonne version. Toutes les librairies correctes sont actuellement stockées à :

~/android/emulator/lib64/qt/lib

Si vous incluez le chemin ci-dessus dans '$LD_LIBRARY_PATH', l'émulateur fonctionnera.

0voto

Kenji Noguchi Points 101

Pour Android SDK version 30.3.5.0 build_id 7033400 il s'est avéré être un bug. Cette version nécessite une structure de répertoire correctement créée à $HOME/.Android pour un démarrage réussi.

Afin de créer la structure du répertoire, vous devez lancer l'émulateur avec -writable-system une fois. Par exemple, supposons que vous ayez créé un disque dur avd nommé 'test', vous pouvez alors démarrer l'émulateur comme suit :

/opt/android-sdk/emulator/emulator -no-window -writable-system -avd test

Une fois qu'elle est créée, vous n'avez plus besoin de cette option.

/opt/android-sdk/emulator/emulator -no-window -avd test

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X