- Framework que permite desenvolver apps nativos para Android apenas com Swift, cobrindo da UI ao manifesto e ciclo de vida em uma única linguagem
- Fornece uma estrutura para montar a UI do Android com abordagem declarativa de UI, sem usar XML, Java ou Kotlin
- Funciona como um framework Android nativo puro, e não como wrapper web ou transpiler
- Permite definir a UI com uma sintaxe declarativa semelhante ao SwiftUI, ocultando completamente a complexa camada JNI
- Oferece uma experiência integrada de desenvolvimento em que até o Android Manifest e as configurações do Gradle são definidos diretamente em código Swift
- É uma nova alternativa nativa para desenvolvedores Swift expandirem para Android e um ponto de virada que abre novas possibilidades para desenvolvimento multiplataforma baseado em Swift
Visão geral do Droid
- Droid é um framework projetado para permitir o desenvolvimento de aplicações nativas para Android usando apenas a linguagem Swift
- Foi estruturado para gerenciar UI, configurações do app, ciclo de vida e manifesto em uma única linguagem e base de código
- Remove dependências de XML, Java e Kotlin, antes consideradas obrigatórias no desenvolvimento Android
- Inclui componentes nativos do Android como AndroidX, Flexbox e Material Design
- Oferece uma sintaxe declarativa semelhante ao SwiftUI para simplificar a definição de UI
- Oculta completamente a camada JNI e permite acesso por meio de APIs de alto nível
Objetivos de design e características
- Baseado em Pure Swift, com UI, manifesto e toda a configuração do app escritos em Swift
- Adota UI declarativa com foco em legibilidade e composabilidade
- Mantém uma abordagem de desenvolvimento No XML, sem usar XML em nenhum momento
- Adota um modelo de execução Android nativo, e não uma abordagem baseada na web ou em conversão de código
- Fornece uma estrutura integrada em que UI, manifesto e dependências do Gradle são definidos em um só lugar
Forma de composição da UI declarativa
- Usa APIs amigáveis ao Swift para compor a UI do Android de forma declarativa
- Expressa widgets do Android em código Swift, como ConstraintLayout, VStack, TextView e MaterialButton
- Define diretamente no código restrições de layout, eventos de clique e estilos
Android Manifest escrito em Swift
- O próprio Android Manifest é declarado em código Swift
- Ícone do app, tema, activity e configurações de fragment são gerenciados no nível do código
- O tratamento de eventos do ciclo de vida e a lógica de configuração são integrados em um único arquivo Swift
Documentação e ambiente de desenvolvimento
- Há documentação oficial disponível e ela continua sendo expandida
- Nem todos os recursos do Android estão totalmente documentados, mas os guias existentes são oferecidos de forma refinada
- É possível começar a desenvolver imediatamente por meio do Swift Stream IDE
Escopo de suporte
- Suporte a widgets clássicos do Android
- Suporte a bibliotecas AndroidX
- Suporte a componentes Material Design
- Suporte a layout Flexbox
Status do projeto
- O projeto está em desenvolvimento ativo e evolui rapidamente
- A API segue sendo aprimorada com abertura para expansão, mas a visão central é mantida
- Feedback e participação são fortemente incentivados
1 comentários
Comentários do Hacker News
Foi lançado o Swift Stream IDE v1.17.0. Agora стало possível desenvolver apps Android totalmente nativos só com Swift
Sem precisar mexer em XML, Java ou Kotlin. Internamente, o framework SwifDroid criado pelo autor lida com o ciclo de vida do Android,
Activity,Fragment, widgets de UI (Material, Flexbox etc.) e também gerencia automaticamente as dependências do GradleEle compila o código Swift e gera um projeto que pode ser executado diretamente no Android Studio. Tanto a ferramenta quanto o framework foram publicados sob a licença open source MIT
Foi dito que não é preciso tocar em XML, Java ou Kotlin, mas queria saber se um desenvolvedor Swift sem nenhuma experiência com Android conseguiria criar um app com sucesso
Também queria saber que porcentagem dos apps atuais e dos do próximo ano em Kotlin ou Flutter poderia ser escrita em Swift
Estamos tentando fazer algo parecido com Rust no lugar de Swift
Esse tipo de tentativa no fim das contas precisa passar pelo JNI, então há uma limitação no fato de que 80% da API só é exposta em Java
Esses projetos são sempre interessantes, mas no fim acabam batendo no problema de abstração com vazamento (leaky abstraction)
Assim como no iOS é preciso conhecer Objective-C, e no Windows é preciso conhecer .NET/COM
Pela minha experiência com Unity, o marshaling de C# para C é suave, mas Swift exige muito mais trabalho
Na prática, é preciso tratar cada framework novo separadamente
Usar uma linguagem comum entre plataformas (Swift ou Kotlin) parece bom à primeira vista, mas acho que na prática não é tão eficiente quanto se espera
No fim você acaba mantendo duas bases de código, e há tantas diferenças e contornos que talvez seja melhor cada um simplesmente usar sua própria linguagem como prefere
A maioria dos desenvolvedores constrói a carreira aprendendo várias linguagens, e a transição não é difícil. É só uma opinião pessoal, mas acho o projeto excelente
Eu mesmo passei alguns meses estudando para criar apps nativos Android em Java, mas não foi prazeroso e acabei desistindo
Tenho preferência por desenvolvimento totalmente nativo, e usei frameworks cross-platform por décadas sem nunca ter grande sucesso
Trocar de linguagem sempre traz um custo de troca de contexto. Sempre que desenvolvo alternando entre Swift e PHP, cometo muitos erros de sintaxe
Dá para aprender a linguagem rápido, mas dominar SDK, biblioteca padrão e frameworks leva muito tempo
Especialmente hoje, com ferramentas de IA, a velocidade das tarefas simples já aumentou bastante, então o ganho total de tempo no desenvolvimento não é tão grande
A menos que o app seja basicamente um webapp, eu não recomendaria
Acho o Swift melhor como linguagem, mas o KMP é mais antigo e estável, então na prática eu provavelmente usaria isso
Mas eu evitaria ficar ainda mais preso ao ecossistema de uma big tech específica
Além disso, pessoalmente acho o Swift uma linguagem incômoda, então não tenho vontade de usá-la em outras plataformas
Fiquei curioso sobre como isso se compara ao Skip
Este projeto não parece focado em levar código SwiftUI do iOS para Android, e sim em desenvolvimento Swift voltado exclusivamente para Android
Queria saber se isso pode levar a apps de melhor qualidade e se já existem casos reais
Só o fato de não precisar usar Android Studio ou IntelliJ já me parece uma grande melhora. Trabalho muito legal
A janela de consentimento de cookies parece não estar em conformidade com a legislação europeia
Não entendo por que o desenvolvimento mobile é tão desagradável comparado ao de PC
Queria entender por que até fazer um Hello World em assembly no mobile é tão difícil
Faz um tempo que não acompanho desenvolvimento Android, então resumindo a situação atual
Antes era Swift no iOS e Java no Android
Agora, no lugar de Java, temos Kotlin, além de frameworks cross-platform como Flutter e React Native
Fiquei curioso se Swift on Android é mais uma camada de abstração como essas, ou se é algo mais próximo do nativo
No fim das contas, o mais rápido não é sempre o código nativo?
Pessoalmente, prefiro Flutter. Muitos desenvolvedores Android nativos também dizem que Flutter pode ser o futuro do desenvolvimento Android
Veja esta discussão relacionada nesta thread do Reddit
Este projeto segue uma abordagem diferente de SwiftCrossUI ou Skip
SwiftCrossUI e Skip executam SwiftUI em várias plataformas praticamente como está,
enquanto o SwifDroid propõe escrever UI específica de Android em Swift
O objetivo é criar apps Android completos em Swift usando diretamente o sistema de Views e as APIs do Android, sem Java, Kotlin ou XML
Ou seja, em vez de “escreva uma vez e rode em qualquer lugar”, a ideia é reproduzir a experiência nativa do Android em Swift
Fiquei curioso sobre como lidar de forma idiomática com requisições HTTP e parsing de JSON em Swift