Android rodando em contêineres Linux, Waydroid
(waydro.id)- Waydroid é um projeto que inicializa um sistema Android completo em um contêiner em desktops GNU/Linux baseados em Wayland, permitindo executar apps Android junto com apps Linux como se fossem nativos
- Usando namespaces do Linux, LXC e a interface binder, o contêiner Android acessa diretamente o hardware necessário e oferece suporte às plataformas GNU/Linux arm, arm64, x86 e x86_64
- Os apps Android podem ser integrados à pasta de aplicativos do Linux, e o projeto oferece modos de execução conforme o uso, como Multi-Window Mode, Full UI Mode e Fullscreen Mode
- O runtime é composto por uma imagem mínima de sistema Android customizada com base no LineageOS, e a imagem atual é baseada no Android 13
- Após a instalação, é preciso iniciar o serviço waydroid-container e concluir o assistente de primeira execução no menu de aplicativos; a distribuição beta Waydroid-Linux não funciona em live mode, e sim em ambiente instalado
Estrutura Android-on-Linux do Waydroid
- O Waydroid usa uma abordagem que inicializa um sistema Android completo em um contêiner dentro de um ambiente de desktop baseado em Wayland em um sistema GNU/Linux comum
- O Android dentro do contêiner usa namespaces do Linux
- user
- pid
- uts
- net
- mount
- ipc
- O sistema Android acessa diretamente o hardware necessário por meio de LXC e da interface binder
- As plataformas compatíveis são arm, arm64, x86 e x86_64 baseadas em GNU/Linux
- O projeto é gratuito e de código aberto, e seu repositório está no GitHub
Integração com o desktop e modos de execução
- Os apps Android funcionam no desktop lado a lado com aplicativos Linux, e o Waydroid adiciona os apps Android à pasta de aplicativos do Linux
- Os modos de execução variam de acordo com a forma de uso
- Multi-window mode: amplia a definição de janelas freeform do Android com vários recursos adicionais
- Full UI Mode: exibe a interface completa do Android para jogos e entretenimento em tela cheia
- O Fullscreen Mode pode ser usado em desktops e quiosques
- Em termos de desempenho, o objetivo é chegar o mais perto possível do nativo usando Wayland e AOSP mesa
- O ambiente de runtime Android é fornecido com uma imagem mínima de sistema Android customizada com base no LineageOS, e a imagem atual é baseada no Android 13
Documentação, instalação e beta do Waydroid-Linux
- A documentação e o gerenciamento de issues podem ser consultados em links separados
- Documentação: docs.waydro.id
- Relato de bugs: GitHub Repo
- Repositório de desenvolvimento: GitHub
- Documentação de instalação para desktop: installation docs
- Download manual de imagens: SourceForge
- O fluxo rápido de instalação em distribuições com systemd consiste em seguir a documentação de instalação da sua distribuição e, se o início automático não acontecer, iniciar o serviço waydroid-container e executar o Waydroid pelo menu de aplicativos para concluir o assistente de primeira execução
- Se for solicitado durante a primeira execução, insira os links OTA para System OTA e Vendor OTA
- System OTA:
https://ota.waydro.id/system - Vendor OTA:
https://ota.waydro.id/vendor
- System OTA:
- O Waydroid-Linux Beta consiste em distribuições totalmente integradas criadas para mostrar o potencial de integração que o Waydroid pode oferecer
- A versão alfa inicial começou com Ubuntu 20.04(focal)
- Atualmente também inclui Ubuntu 22.04(jammy) e Debian 12(bookworm)
- Inclui várias ferramentas e scripts para ampliar o escopo do que é possível fazer
- Como o Waydroid usa LXC e módulos de kernel para binder, o Waydroid-Linux não funciona em live mode e precisa ser instalado para operar corretamente
- Os itens de download da beta pedem que o usuário consulte o README.md, e as versões de exemplo incluem Ubuntu 22.04 KDE-Plasma, Ubuntu 22.04 Gnome, Debian 12 Beta, Ubuntu 21.10 Beta e versões alfa anteriores
1 comentários
Opiniões no Hacker News
Surpreende que isso tenha chegado à página inicial. É um software bem conhecido
O ponto decepcionante é que não há uma imagem fornecida pelo Google que rode no Waydroid. Algo como uma imagem de sistema genérica, por exemplo. Fico desconfortável em digitar minha senha numa ROM aleatória baixada da internet
https://source.android.com/docs/core/tests/vts/gsi
Para um projeto como o Waydroid, que precisa de suporte da comunidade e fornecimento contínuo, é uma escolha natural. Ao longo dos anos, o Google vem removendo continuamente muitas das partes livres e de código aberto que originalmente existiam no AOSP, a base do Android, e por isso projetos como o LineageOS tiveram de desenvolver componentes substitutos. Ainda assim, acho que as modificações que o LineageOS faz no AOSP são menores do que as da maioria dos fabricantes de celulares, incluindo o Google
Seria bom ter um Android conteinerizado que desse para subir no Mac com algo como Docker Desktop ou OrbStack
Eu gostaria de modificar a imagem Docker para deixar pré-configurado um proxy man-in-the-middle com root e subir apps Android para observar o tráfego de rede e chamadas de API com muito mais facilidade
sudo ip netns exec wiresharkIsso foi a base sobre a qual a FuriLabs fez bem a integração de apps Android. Claro, eles fizeram um fork e modificaram bastante [0], mas a experiência de usuário que permite usar apps Android em um celular Linux ficou excelente
[0] https://github.com/FuriLabs/waydroid
O Furiphone FLX1 está usando isso intensivamente e é muito bom. Dá para fazer a maioria das coisas que eu realmente gostaria de fazer num celular Android
É claro que minhas exigências não são muitas, mas conheço pessoas que usam para Signal e Spotify. É um projeto excelente e combina perfeitamente com celulares Linux
No fim, acho que eu teria de carregar dois celulares. Apps de banco e cartão de crédito são essenciais e necessários todos os dias, e em algumas contas eu nem consigo fazer login pelo navegador desktop sem autenticação pelo app do celular. Pagamentos individuais também frequentemente exigem confirmação pelo app do celular. Também não estou em posição de trocar de banco em nome de uma experiência de usuário mais livre
Fora finanças, no meu trabalho principal tenho de usar o conjunto de produtos do Google e, em outro trabalho, também tive de usar Discord. Isso talvez dê para fazer pelo navegador, mesmo com recursos reduzidos, mas apps de banco e cartão de crédito não
Não é uma reclamação sobre o Waydroid ou o FLX1; valorizo o trabalho e a criatividade envolvidos. Há muito tempo sonho em ter e montar eu mesmo um celular totalmente livre e de código aberto, e sei o volume de trabalho que isso exige. Antigamente também tive dois Nokia N900
Mas os tempos mudaram, e espero que se encontre uma forma de executar, sobre um sistema baseado em software livre e de código aberto ou lado a lado com ele, os apps e protocolos que a vida cotidiana atual exige
Mas a falta de um painel OLED talvez seja um ponto negativo decisivo
Tenho três apps que comprei há muito tempo: um dicionário de sueco, um dicionário alemão-sueco e um dicionário inglês-sueco
Ainda consigo instalá-los, mas eles não são mais oferecidos na loja de apps. A empresa, Norstedts, naturalmente migrou para um modelo de assinatura. Uso o Waydroid para usar esses apps no desktop e estou muito satisfeito
Muitos apps dependem de rodar em distribuições Android “oficiais”, como as do Google e da Samsung, e não funcionam na distribuição baseada no Lineage do Waydroid
Acho que uma abordagem ao estilo Wine, como https://gitlab.com/android_translation_layer/android_transla..., poderia ajudar a enganar apps para fazê-los acreditar que estão rodando numa distribuição Android “oficial”
A abordagem ao estilo Wine do ATL é certamente mais intuitiva para imitar APIs, mas ainda assim exigiria uma reimplementação separada para o ATL. Por outro lado, o Waydroid executa um ambiente Android completo, então há a possibilidade de reutilizar Magisk ou microG
Toda vez que vejo isso, penso: “Legal! Vou poder rodar aqueles apps Android ótimos que não têm equivalente para Linux”, mas nunca me vem nenhum à cabeça. Existe algum app Android realmente indispensável?
O Organic Maps tem uma versão para desktop Linux, mas ainda está longe de ter paridade de recursos. Mas isso pode mudar graças a este financiamento [1] para criar uma boa UI de desktop para o Organic Maps.
[1] https://nlnet.nl/project/OrganicMaps-ConvergentUI/
Esse contêiner consegue acessar dispositivos USB de hardware? Tenho um cabo USB-C Moondrop FreeDSP com PEQ, que só funciona em um app Android péssimo.
O tablet Android que tenho à mão também tem uma tela sensível ao toque ruim, então mudar as configurações do EQ leva tempo demais. Eu queria simplesmente fazer isso pelo notebook Linux.
Mesmo que não, no fim das contas é um contêiner Linux, então com algumas regras udev provavelmente daria para fazê-lo funcionar de qualquer forma.
Há algumas coisas que parecem continuar faltando em projetos desse tipo. Falta a parte de usar a aceleração 3D de hardware do host com as versões de OpenGL ES e Vulkan que a maioria dos celulares oferece nativamente.
Além disso, muitos apps têm formas embutidas de detectar que não estão rodando em um celular; olham o cpuinfo, comparam com o dispositivo declarado e então encerram.
O suporte a ARM esperado nos dispositivos também está aumentando, junto com o throughput esperado. Por isso, para emular até mesmo um SoC ARM móvel moderno comum, o desempenho exigido do host x86 está ficando cada vez maior.
Por fim, a versão do Android suportada quase sempre fica 3 ou 4 gerações atrás da mais recente. Os apps deixam de oferecer suporte a Androids antigos rapidamente, ou rodam em versões antigas do SO com menos recursos e otimizações. A versão-base de Android deste projeto é de 2020.
Anedoticamente, mesmo o BlueStacks, que tem uma das pilhas de emulação com melhor compatibilidade e otimização nessa área, rodando em um 7800X3D / RTX 3090, é mais lento na maioria dos jogos do que esses mesmos jogos rodando nativamente em um celular Snapdragon 8 do ano passado.
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
Não sei por que não existe um contêiner ou ROM x86 oficial para desenvolvimento Android. Os builds de CI de apps Android não rodam testes em versões recentes do Android? Fico curioso para saber como os builds de CI de APKs executam testes de GUI sem um contêiner Android.
O surpreendente é que ninguém abstraiu isso para permitir executar vários contêineres Android sob LXC.
No Waydroid, há apenas uma imagem. Para mim, parecia usar um kernel Linux customizado com muitos patches, e não consegui entender direito, mas a interface com o LXC parecia bem simples.