- Waydroid est un projet qui démarre un système Android complet dans un conteneur sur un bureau GNU/Linux basé sur Wayland, afin d’exécuter les applications Android aux côtés des applications Linux, comme s’il s’agissait d’applications natives Linux
- En s’appuyant sur les namespaces Linux, LXC et l’interface binder, le conteneur Android accède directement au matériel nécessaire et prend en charge les plateformes GNU/Linux arm, arm64, x86 et x86_64
- Les applications Android peuvent être intégrées au dossier des applications Linux, et plusieurs modes d’exécution sont proposés selon l’usage, comme Multi-Window Mode, Full UI Mode et Fullscreen Mode
- Le runtime repose sur une image système Android minimalement personnalisée basée sur LineageOS ; l’image actuelle est basée sur Android 13
- Après l’installation, il faut démarrer le service waydroid-container puis lancer l’assistant de première exécution depuis le menu des applications ; la distribution bêta Waydroid-Linux fonctionne dans un environnement installé, et non en live mode
Architecture Android-on-Linux de Waydroid
- Waydroid utilise une approche qui consiste à démarrer un système Android complet dans un conteneur au sein d’un environnement de bureau basé sur Wayland sur un système GNU/Linux classique
- Android à l’intérieur du conteneur utilise les namespaces Linux
- user
- pid
- uts
- net
- mount
- ipc
- Le système Android accède directement au matériel nécessaire via LXC et l’interface binder
- Les plateformes prises en charge sont arm, arm64, x86 et x86_64 sur GNU/Linux
- Le projet est gratuit et open source, et son dépôt se trouve sur GitHub
Intégration au bureau et modes d’exécution
- Les applications Android fonctionnent sur le bureau aux côtés des applications Linux, et Waydroid ajoute les applications Android au dossier des applications Linux
- Les modes d’exécution se divisent selon l’usage
- Multi-window mode : étend la définition des fenêtres libres Android afin d’ajouter plusieurs fonctionnalités
- Full UI Mode : affiche l’interface Android complète pour les jeux et les contenus de divertissement en plein écran
- Il est possible d’utiliser le Fullscreen Mode pour les postes de bureau et les kiosques
- Côté performances, l’objectif est d’obtenir un fonctionnement aussi proche que possible du natif grâce à Wayland et à AOSP mesa
- L’environnement d’exécution Android est fourni avec une image système Android minimalement personnalisée basée sur LineageOS ; l’image actuelle est basée sur Android 13
Documentation, installation et bêta Waydroid-Linux
- La documentation et la gestion des tickets sont disponibles via des liens distincts
- Documentation : docs.waydro.id
- Rapport de bugs : GitHub Repo
- Dépôt de développement : GitHub
- Documentation d’installation pour bureau : installation docs
- Téléchargement manuel des images : SourceForge
- Sur les distributions avec systemd, le flux d’installation rapide consiste à suivre la documentation propre à la distribution, puis, si le démarrage automatique n’a pas eu lieu, à lancer le service waydroid-container et exécuter Waydroid depuis le menu des applications pour suivre l’assistant de première exécution
- Si cela est demandé lors du premier lancement, saisir les liens OTA pour System OTA et Vendor OTA
- System OTA:
https://ota.waydro.id/system - Vendor OTA:
https://ota.waydro.id/vendor
- System OTA:
- Waydroid-Linux Beta est un ensemble de distributions entièrement intégrées, conçu pour montrer les possibilités d’intégration que Waydroid peut offrir
- La première version alpha a commencé avec Ubuntu 20.04 (focal)
- S’y ajoutent désormais Ubuntu 22.04 (jammy) et Debian 12 (bookworm)
- Elles incluent divers outils et scripts pour élargir l’éventail des tâches possibles
- Comme Waydroid utilise LXC et des modules du noyau pour binder, Waydroid-Linux ne fonctionne pas en live mode et nécessite une installation pour fonctionner correctement
- La section de téléchargement de la bêta demande de consulter le README.md, et propose par exemple Ubuntu 22.04 KDE-Plasma, Ubuntu 22.04 Gnome, Debian 12 Beta, Ubuntu 21.10 Beta ainsi que les anciennes versions alpha
1 commentaires
Avis Hacker News
Je suis surpris que ce soit arrivé en page d’accueil. C’est un logiciel assez connu, après tout.
Ce qui est dommage, c’est qu’il n’existe pas d’image fournie par Google qui tourne avec Waydroid. Par exemple une image système générique. Saisir son mot de passe dans une ROM quelconque récupérée sur Internet, ça met mal à l’aise.
https://source.android.com/docs/core/tests/vts/gsi
Pour un projet comme Waydroid, qui a besoin d’un support communautaire et d’une fourniture continue, c’est un choix naturel. Au fil des années, Google a continué à retirer d’AOSP, la base d’Android, beaucoup de composants libres et open source qui y existaient à l’origine, ce qui a obligé des projets comme LineageOS à développer des composants de remplacement. Malgré tout, j’imagine que les modifications apportées par LineageOS à AOSP sont moins nombreuses que celles de la plupart des fabricants de téléphones, Google compris.
J’aimerais bien avoir un Android conteneurisé qu’on puisse lancer sur Mac avec Docker Desktop ou OrbStack.
Je voudrais modifier l’image Docker pour préconfigurer un proxy d’interception rooté, puis y installer des apps Android afin d’observer beaucoup plus facilement le trafic réseau et les appels API.
sudo ip netns exec wiresharkC’est sur cette base que FuriLabs a construit une bonne intégration des apps Android. Bien sûr, ils ont forké [0] et beaucoup modifié, mais l’expérience utilisateur permettant d’utiliser des apps Android sur un téléphone Linux était excellente.
[0] https://github.com/FuriLabs/waydroid
Le Furiphone FLX1 exploite ça à fond, et c’est vraiment bien. On peut faire la plupart des choses qu’on voudrait faire avec un vrai téléphone Android.
Certes, mes besoins ne sont pas énormes, mais je connais aussi des gens qui l’utilisent pour Signal et Spotify. C’est un excellent projet, parfaitement adapté aux téléphones Linux.
Au final, j’aurais sans doute à transporter deux téléphones. Les apps de banque et de carte bancaire sont des apps indispensables au quotidien, et pour certains comptes je ne peux même pas me connecter depuis un navigateur desktop sans validation via l’app mobile. Même des paiements individuels demandent souvent une confirmation dans l’app du téléphone. Je ne suis pas en situation de changer de banque pour avoir une expérience utilisateur plus libre.
En dehors de la finance, pour mon travail principal je dois utiliser la suite Google, et pour d’autres activités j’ai aussi dû utiliser Discord. Ça devrait être possible via le navigateur, même avec moins de fonctionnalités, mais ce n’est pas le cas des apps de banque et de carte bancaire.
Ce n’est pas une critique de Waydroid ni du FLX1, et j’apprécie le travail et la créativité qu’il y a derrière. Je rêve depuis longtemps de posséder et de bricoler moi-même un téléphone entièrement libre et open source, et je sais quelle quantité de travail cela représente. J’ai même eu deux Nokia N900 à l’époque.
Mais les temps ont changé, et j’espère qu’on trouvera un moyen de faire fonctionner les apps ou protocoles qu’exige la vie quotidienne actuelle sur un système libre et open source, ou à côté.
L’absence d’écran OLED pourrait toutefois être un défaut rédhibitoire.
J’ai trois apps que j’ai achetées il y a longtemps : un dictionnaire suédois, un dictionnaire allemand-suédois et un dictionnaire anglais-suédois.
Elles peuvent encore être installées, mais ne sont plus proposées dans l’app store. L’entreprise, Norstedts, est évidemment passée à un modèle par abonnement. J’utilise Waydroid pour me servir de ces apps sur desktop, et j’en suis très satisfait.
Beaucoup d’apps dépendent du fait de s’exécuter sur des distributions Android « officielles » comme celles de Google ou Samsung, et ne fonctionnent pas sur la distribution basée sur Lineage de Waydroid.
Une approche à la Wine comme https://gitlab.com/android_translation_layer/android_transla... pourrait aider à faire croire aux apps qu’elles tournent sur une distribution Android « officielle ».
L’approche façon Wine d’ATL est certainement plus intuitive pour imiter des API, mais il faudra tout de même une réimplémentation spécifique pour ATL. À l’inverse, Waydroid exécute un environnement Android complet, ce qui pourrait permettre de réutiliser Magisk ou microG.
Chaque fois que je vois ça, je me dis « super ! Je vais pouvoir lancer de chouettes apps Android qui n’ont pas d’équivalent sous Linux », mais à chaque fois rien ne me vient. Y a-t-il une app Android vraiment indispensable ?
Organic Maps a une version desktop Linux, mais elle est encore loin d’avoir la parité fonctionnelle. Cela dit, ça pourrait changer grâce à cette subvention [1] visant à créer une bonne UI desktop pour Organic Maps
[1] https://nlnet.nl/project/OrganicMaps-ConvergentUI/
Ce conteneur peut-il accéder aux périphériques USB matériels ? J’ai un câble USB-C Moondrop FreeDSP avec PEQ intégré, mais il ne fonctionne qu’avec une mauvaise app Android
La tablette Android que j’ai sous la main a aussi un écran tactile médiocre, donc changer les réglages d’EQ prend beaucoup trop de temps. J’aimerais juste le faire depuis un laptop Linux
Même si ce n’était pas le cas, au final c’est un conteneur Linux, donc avec quelques règles udev on devrait pouvoir le faire fonctionner d’une manière ou d’une autre
Il y a plusieurs choses qui semblent toujours manquer dans ce type de projets. Il manque l’utilisation de l’accélération 3D matérielle de l’hôte avec les versions d’OpenGL ES et de Vulkan que la plupart des téléphones prennent en charge nativement
De plus, beaucoup d’apps ont des moyens intégrés de détecter qu’elles ne tournent pas sur un téléphone, regardent cpuinfo, le comparent à l’appareil annoncé, puis quittent
Le support ARM attendu des appareils augmente aussi, tout comme le débit attendu. Du coup, même pour émuler un SoC ARM mobile moderne ordinaire, la puissance nécessaire côté hôte x86 ne cesse d’augmenter
Enfin, la version d’Android prise en charge a presque toujours 3 ou 4 générations de retard sur la dernière. Les apps abandonnent rapidement le support des anciens Android, ou s’exécutent avec moins de fonctionnalités et d’optimisations sur les vieilles versions de l’OS. La version Android de base de ce projet date de 2020
Pour l’anecdote, même BlueStacks, qui dispose de la pile d’émulation la plus compatible et la mieux optimisée dans ce domaine, fait tourner la plupart des jeux sur un 7800X3D / RTX 3090 plus lentement qu’en natif sur un téléphone Snapdragon 8 de l’an dernier
virtio-gpu-rutabaga : https://www.qemu.org/docs/master/system/devices/virtio-gpu.h...
Rutabaga Virtual Graphics Interface : https://crosvm.dev/book/appendix/rutabaga_gfx.html
gfxstream : https://android.googlesource.com/platform/hardware/google/gf...
« Gfxstream Merged Into Mesa For Vulkan Virtualization » (2024-09)
https://www.phoronix.com/news/Mesa-Gfxstream-Merged
Je ne comprends pas pourquoi il n’existe pas de conteneur x86 ou de ROM officiel pour le développement Android. Les builds CI d’apps Android ne lancent-ils pas de tests sur les versions récentes d’Android ? Je me demande comment les builds CI d’APK exécutent des tests GUI sans conteneur Android
Ce qui est étonnant, c’est que personne n’ait abstrait ça pour permettre d’exécuter plusieurs conteneurs Android sous LXC
Avec Waydroid, il n’y a qu’une seule image. À mes yeux, ça semblait utiliser un noyau Linux custom très patché, et je n’ai pas vraiment creusé, mais côté interface LXC ça avait l’air assez simple