- Waydroid es un proyecto que arranca un sistema Android completo como contenedor en escritorios GNU/Linux basados en Wayland, permitiendo ejecutar apps de Android junto con apps de Linux como si fueran aplicaciones nativas
- Usa namespaces de Linux, LXC y la interfaz binder para que el contenedor Android acceda directamente al hardware necesario, y soporta plataformas GNU/Linux arm, arm64, x86 y x86_64
- Las apps de Android pueden integrarse en la carpeta de aplicaciones de Linux, y ofrece modos de ejecución según el entorno de uso, como Multi-Window Mode, Full UI Mode y Fullscreen Mode
- El runtime está compuesto por una imagen mínima y personalizada del sistema Android basada en LineageOS; la imagen actual está basada en Android 13
- Después de la instalación, hay que iniciar el servicio waydroid-container y completar el asistente de primer inicio desde el menú de apps; la distribución beta Waydroid-Linux funciona en un entorno instalado, no en live mode
Arquitectura de Android sobre Linux en Waydroid
- Waydroid usa un enfoque que arranca un sistema Android completo como contenedor dentro de un entorno de escritorio basado en Wayland en un sistema GNU/Linux común
- El Android dentro del contenedor usa namespaces de Linux
- user
- pid
- uts
- net
- mount
- ipc
- El sistema Android accede directamente al hardware necesario mediante LXC y la interfaz binder
- Las plataformas soportadas son arm, arm64, x86 y x86_64 sobre GNU/Linux
- El proyecto es gratuito y open source, y su repositorio está en GitHub
Integración con el escritorio y modos de ejecución
- Las apps de Android funcionan en el escritorio junto con las aplicaciones de Linux, y Waydroid agrega las apps de Android a la carpeta de aplicaciones de Linux
- Los modos de ejecución se dividen según la forma de uso
- Multi-window mode: amplía la definición de ventanas freeform de Android para agregar varias funciones
- Full UI Mode: muestra la interfaz completa de Android para juegos y entretenimiento en pantalla completa
- Se puede usar Fullscreen Mode para escritorios y kioscos
- En cuanto a rendimiento, apunta a un funcionamiento lo más cercano posible a lo nativo usando Wayland y AOSP mesa
- El entorno de runtime de Android se entrega con una imagen mínima y personalizada del sistema Android basada en LineageOS; la imagen actual está basada en Android 13
Documentación, instalación y beta de Waydroid-Linux
- La documentación y la gestión de issues se pueden consultar en enlaces separados
- Documentación: docs.waydro.id
- Reporte de bugs: GitHub Repo
- Repositorio de desarrollo: GitHub
- Documentación de instalación en escritorio: installation docs
- Descarga manual de imágenes: SourceForge
- El flujo de instalación rápida en distribuciones con systemd consiste en seguir la documentación de instalación correspondiente a cada distribución; si no se inició automáticamente, iniciar el servicio waydroid-container y ejecutar Waydroid desde el menú de aplicaciones para completar el asistente de primer inicio
- Si se solicita durante el primer inicio, ingresar los enlaces OTA para System OTA y Vendor OTA
- System OTA:
https://ota.waydro.id/system - Vendor OTA:
https://ota.waydro.id/vendor
- System OTA:
- Waydroid-Linux Beta son distribuciones completamente integradas creadas para mostrar las posibilidades de integración que Waydroid puede implementar
- La versión alfa inicial comenzó en Ubuntu 20.04(focal)
- Actualmente también incluye Ubuntu 22.04(jammy) y Debian 12(bookworm)
- Incluye varias herramientas y scripts para ampliar el rango de tareas posibles
- Como Waydroid usa LXC y módulos de kernel para binder, Waydroid-Linux no funciona en live mode; para operar correctamente requiere instalación
- Los elementos de descarga de la beta requieren revisar README.md, y se ofrecen como versiones de ejemplo Ubuntu 22.04 KDE-Plasma, Ubuntu 22.04 Gnome, Debian 12 Beta, Ubuntu 21.10 Beta y versiones alfa anteriores
1 comentarios
Opiniones de Hacker News
Me sorprende que esto haya llegado a la portada. Es software bastante conocido, por eso
Lo lamentable es que no haya imágenes proporcionadas por Google que corran en Waydroid. Por ejemplo, algo como una imagen de sistema genérica. Da mala espina ingresar una contraseña en una ROM cualquiera descargada de internet
https://source.android.com/docs/core/tests/vts/gsi
Para un proyecto como Waydroid, que necesita soporte de la comunidad y disponibilidad continua, es una opción natural. Con los años, Google ha ido quitando muchas de las partes libres y de código abierto que originalmente estaban en AOSP, la base de Android, así que proyectos como LineageOS tuvieron que desarrollar componentes alternativos. Aun así, diría que LineageOS modifica AOSP menos que la mayoría de los fabricantes de teléfonos, incluido Google
Estaría bueno tener Android contenedorizado que se pueda levantar en Mac con algo como Docker Desktop u OrbStack
Quisiera modificar una imagen de Docker para dejar preconfigurado un proxy de intermediario rooteado, cargar una app de Android y observar mucho más fácilmente el tráfico de red y las llamadas a la API
sudo ip netns exec wiresharkEsta fue la base sobre la que FuriLabs hizo una buena integración de apps Android. Claro, la bifurcaron y la modificaron bastante [0], pero la experiencia de usuario que lograron para usar apps Android en un teléfono Linux fue excelente
[0] https://github.com/FuriLabs/waydroid
Furiphone FLX1 lo está aprovechando activamente y es realmente bueno. Puedes hacer la mayor parte de lo que querrías hacer con un teléfono Android de verdad
Claro que yo no quiero tantas cosas, pero conozco gente que lo usa con Signal y Spotify. Es un gran proyecto y encaja perfecto con los teléfonos Linux
Al final parece que tendría que llevar dos teléfonos. Las apps de bancos y tarjetas de crédito son imprescindibles para mí todos los días, y con algunas cuentas ni siquiera puedo iniciar sesión desde un navegador de escritorio sin autenticarme con la app del teléfono. Los pagos individuales también suelen requerir confirmación desde la app móvil. Tampoco estoy en situación de cambiar de banco para tener una experiencia de usuario más libre
Fuera de lo financiero, en mi trabajo principal tengo que usar la suite de Google, y en otros trabajos también tuve que usar Discord. Eso probablemente podría hacerse desde el navegador aunque con menos funciones, pero con las apps de bancos y tarjetas de crédito no es así
No es una queja sobre Waydroid ni sobre el FLX1; aprecio el trabajo y la creatividad. Desde hace mucho sueño con tener y armar yo mismo un teléfono completamente libre y de código abierto, y sé la cantidad de trabajo que implica. Antes también usé dos Nokia N900
Pero los tiempos cambiaron, y espero que se encuentre una forma de ejecutar las apps o protocolos que exige la vida diaria actual sobre, o junto a, un sistema basado en software libre y de código abierto
Aunque la falta de panel OLED podría ser un defecto decisivo
Tengo tres apps que compré hace mucho tiempo: un diccionario de sueco, un diccionario alemán-sueco y un diccionario inglés-sueco
Todavía se pueden instalar, pero ya no están disponibles en la tienda de apps. La empresa, Norstedts, por supuesto pasó a un modelo de suscripción. Uso Waydroid para usar estas apps en el escritorio y estoy muy satisfecho
Muchas apps dependen de ejecutarse en distribuciones Android “oficiales”, como las de Google o Samsung, y no funcionan en la distribución basada en Lineage de Waydroid
Un enfoque tipo Wine como https://gitlab.com/android_translation_layer/android_transla... podría ayudar a engañar a las apps para que crean que se están ejecutando en una distribución Android “oficial”
El enfoque tipo Wine de ATL sin duda es más intuitivo para imitar API, pero aun así requiere una reimplementación separada para ATL. En cambio, Waydroid ejecuta un entorno Android completo, así que existe la posibilidad de reutilizar Magisk o microG
Cada vez que veo esto pienso: “¡Qué genial! Podría ejecutar apps geniales de Android que no tienen versión para Linux”, pero nunca se me ocurre ninguna. ¿Hay alguna app de Android imprescindible?
Organic Maps tiene una versión para Linux de escritorio, pero todavía está lejos de tener paridad de funciones. Aunque eso podría cambiar gracias a este financiamiento para crear una buena UI de escritorio para Organic Maps [1].
[1] https://nlnet.nl/project/OrganicMaps-ConvergentUI/
¿Este contenedor puede acceder a dispositivos USB de hardware? Tengo un cable USB-C Moondrop FreeDSP con PEQ que solo funciona con una pésima app de Android.
La tablet Android que tengo a mano también tiene una pantalla táctil mala, así que cambiar los ajustes de EQ tarda demasiado. Quisiera hacerlo simplemente desde una laptop con Linux.
Y aunque no fuera así, al final es un contenedor Linux, así que con algunas reglas de udev probablemente se podría hacer que funcione de todos modos.
Hay algunas cosas que parecen seguir faltando en proyectos como este. Falta, en gran medida, poder usar la aceleración 3D por hardware del host con las versiones de OpenGL ES y Vulkan que la mayoría de los teléfonos soportan de forma nativa.
Además, muchas apps tienen mecanismos integrados para detectar que no se están ejecutando en un teléfono; miran cpuinfo, lo comparan con el dispositivo declarado y luego se cierran.
También va aumentando el soporte de ARM que se espera de los dispositivos, junto con el rendimiento esperado. Por eso, incluso para emular un SoC ARM móvil moderno común, la potencia x86 necesaria en el host es cada vez mayor.
Por último, la versión de Android soportada casi siempre está 3 o 4 generaciones por detrás de la más reciente. Las apps dejan rápidamente de soportar Android antiguo, o se ejecutan en versiones viejas del SO con menos funciones y optimizaciones. La versión base de Android de este proyecto es de 2020.
Como anécdota, incluso BlueStacks, que tiene una de las pilas de emulación más compatibles y optimizadas en este ámbito, al ejecutarse en un 7800X3D / RTX 3090 hace que la mayoría de los juegos vayan más lentos que corriendo de forma nativa en un teléfono Snapdragon 8 del año pasado.
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
No sé por qué no existe un contenedor x86 o una ROM oficial para desarrollo Android. ¿Los builds de CI de apps Android no ejecutan pruebas en versiones recientes de Android? Me pregunto cómo los builds de CI de APK ejecutan pruebas de GUI sin un contenedor Android.
Lo sorprendente es que nadie haya abstraído esto para permitir ejecutar varios contenedores Android bajo LXC.
En Waydroid solo hay una imagen. Me pareció que usa un kernel Linux personalizado con muchos parches, aunque no lo llegué a entender bien; aun así, la parte de la interfaz LXC parecía bastante simple.