Anunciado o Swift SDK para Android
(swift.org)- À medida que a linguagem Swift amadureceu e se expandiu para nuvem, Windows, navegadores e microcontroladores, agora foi lançado o Swift SDK para Android
- Este SDK é o resultado de meses de trabalho do Swift Android Workgroup e permite que desenvolvedores criem apps nativos para Android com Swift
- O SDK vem incluído no instalador do Windows ou pode ser baixado separadamente para Linux e macOS, acompanhado de código de exemplo e guias
- Por meio do projeto swift-java, há suporte à interoperabilidade bidirecional entre Swift e Java, com geração automática de bindings para garantir desempenho e segurança
- Este lançamento é visto como um ponto de virada que acelera a expansão do ecossistema multiplataforma do Swift e abre novas possibilidades para o desenvolvimento mobile
Visão geral do Swift SDK for Android
- No contexto em que a linguagem Swift se expandiu nos últimos 10 anos de serviços em nuvem a Windows, navegadores e microcontroladores, sua entrada na plataforma Android agora foi oficializada
- Graças à interoperabilidade (interoperability) do Swift, fica fácil compartilhar código entre várias plataformas
- O Android Workgroup é um grupo aberto do qual qualquer pessoa pode participar, com o objetivo de expandir o Swift para o Android
- Este anúncio representa a divulgação de um build nightly (preview) do Swift SDK for Android, resultado de uma longa colaboração da comunidade
Principais recursos do SDK e forma de distribuição
- Agora os desenvolvedores podem usar Swift para criar diretamente aplicações nativas para Android
- Isso abre novas possibilidades para o desenvolvimento multiplataforma
- O SDK é fornecido embutido no instalador do Windows e também pode ser baixado separadamente para Linux e macOS
- O Swift.org orienta, por meio do guia “Getting Started”, como configurar código Swift em dispositivos Android
- O repositório Swift for Android Examples no GitHub demonstra um fluxo de trabalho completo de app
Compatibilidade de pacotes e expansão da comunidade
- Com o Swift SDK, é possível portar pacotes Swift existentes para Android
- Mais de 25% dos pacotes no Swift Package Index já oferecem suporte a builds para Android
- A página Community Showcase indica se há compatibilidade com Android
- Essa expansão fortalece ainda mais o suporte multiplataforma do ecossistema Swift
Projeto swift-java e interoperabilidade
- O projeto swift-java é uma biblioteca e gerador de código que oferece interoperabilidade (interoperability) entre Swift e Java
- Ele lida automaticamente com a integração bidirecional entre Swift e Java, gerando bindings seguros e de alto desempenho
- Com isso, os desenvolvedores podem levar lógica de negócio para o Android, e mais detalhes podem ser vistos no vídeo da apresentação do Swift Server Side Meetup
Participação da comunidade e roadmap futuro
- Este lançamento preview abriu novas oportunidades para melhorias nas ferramentas e expansão do ecossistema
- É recomendado compartilhar experiências, ideias, ferramentas e apps na categoria Android do fórum Swift
- O anúncio também está sendo discutido na thread oficial do fórum
- O Android Workgroup está atualmente elaborando um documento de visão (vision document), que deverá apresentar as áreas prioritárias e a direção futura do Swift no Android
- É possível acompanhar o progresso principal pelo project board, e a qualidade do SDK é gerenciada com o sistema oficial de CI
- A equipe do Swift incentiva a participação da comunidade e busca fortalecer a presença do Swift no ecossistema Android
1 comentários
Comentários do Hacker News
A questão central de todo framework multiplataforma é como ele lida com a UI
Se você usa um sistema de design que parece estranho em cada plataforma, como o Flex Builder da Adobe, no fim acaba tendo que implementar manualmente a sensação nativa
O Flutter tenta reproduzir perfeitamente o tema Cupertino no iOS, e o React Native aproveita os widgets padrão da plataforma para que elementos como a rolagem pareçam naturais
Fiquei decepcionado que esse ponto importante não foi mencionado no post do blog
Mesmo que a Apple lance Swift para Android, por causa da filosofia de design característica da Apple existe a possibilidade de ele parecer estranho no Android
Acho que o rumo futuro vai depender de este projeto ser liderado diretamente pela Apple ou ser uma tentativa open source centrada na comunidade
Por isso gosto de KMP. No iOS você escreve a UI com SwiftUI, no Android com Kotlin, e compartilha apenas a lógica de negócio
Quando se tenta compartilhar a UI, surge o pesadelo de “escrever uma vez e depurar em todo lugar”
Parece que o Swift for Android também vai permitir esse tipo de compartilhamento de lógica no nível da linguagem
Até nos exemplos eles usam Jetpack Compose normalmente enquanto chamam lógica em Swift
Ele mantém a mesma estrutura do modelo de memória com contagem de referências do Swift, o que traz bastante consistência
Como alguém que trabalha com ferramentas para desenvolvedores na Apple, espero que essa tecnologia sirva de base para novas inovações
O SwiftUI não é originalmente uma “UI nativa”, mas sim uma linguagem declarativa que o sistema interpreta para gerar
UIViewouNSViewA menos que alguém recrie tudo diretamente, como o Flutter, não dá para usar a UI da Apple do mesmo jeito no Android
Em vez disso, projetos como Skip.tools fazem a ponte entre SwiftUI e Jetpack Compose
Você pode ver um exemplo no app Skip Showcase
Eu faço parte do produto Skip e do Swift Android Workgroup, e participei como release manager deste SDK
Fico realmente feliz de ver isso anunciado como um projeto oficial
Já usei RN e Flutter, mas o problema sempre foi a falta de sensação nativa
Existe o KMP também, mas a maioria dos desenvolvedores começa pelo iOS e depois expande para Android
Compartilhar código com Swift Package torna esse fluxo muito mais natural
Em contrapartida, há bem menos desenvolvedores Swift/Objective-C
Fora dos EUA, a participação do iPhone é menor, então as empresas tendem a pensar com foco em Windows ou navegador
O KMP já é usado em grandes apps como o Google Workspace e, com Kotlin e os investimentos da JetBrains, seu nível de maturidade é alto
O ciclo de releases do Flutter era rápido demais e difícil de acompanhar
Com JavaScriptCore ou QuickJS, ela roda em iOS, Android e Web, com suporte a hot reload
Ainda assim, por causa das políticas das app stores, é difícil fazer grandes mudanças de funcionalidade, então isso serve mais para correções de bugs
Considerando como o ciclo de distribuição mobile é lento, acho que essa abordagem representa uma grande oportunidade
Funciona bem como uma arquitetura de biblioteca central compartilhada + projetos de UI nativa em cada plataforma
Fiquei curioso se isso tem relação com o projeto do transpilador SKIP que vi no blog da Skip.tools
Eu queria levar um app em SwiftUI para Android, mas queria evitar RN
A Skip tem dois modos: o modo Lite, que converte código Swift para Kotlin, e o modo Fuse, que compila Swift diretamente para Android
Os dois modos podem ser usados juntos para integração com o ecossistema Kotlin, como Lottie e Firebase
Uma comparação mais detalhada está disponível na documentação da Skip
Fico feliz que, com a chegada do SDK oficial, agora possamos usar a versão oficial em vez de builds próprios
Espero que isso não termine só como um simples proof of concept, como o Swift Embedded
Swift é uma linguagem linda, mas existe um clima de insegurança em relação à liderança da comunidade
guard let self = self else { return }— uma piada familiar para qualquer desenvolvedor SwiftJá deu de RN e Flutter
Estou cansado da UI quadradona e da resposta lenta ao toque
Se a resposta está lenta, provavelmente é problema da implementação do app
A Apple pode simplesmente perder o interesse rapidamente
“You got Kotlin in my iOS.”
“You got Swift in my Android.” — uma formulação espirituosa
Veja a visão geral do Kotlin Native
Este anúncio parece ser uma prova de sucesso do novo sistema de SDK do Swift
Antes, dar suporte a outras plataformas era complicado por causa das amarras com CMake, mas agora, seguindo apenas as regras do SDK, parece possível portar para qualquer plataforma
Além do Android, a expansão deve alcançar Linux, wasm, embarcados e, em breve, Windows
A interoperabilidade com a JVM ainda não está completa, mas é claro que a independência de plataforma aumentou
Eu gosto de Kotlin Multiplatform, mas Swift for Android também é interessante
Compartilhar bibliotecas nativas em Swift para tarefas sensíveis a memória parece útil
Ainda assim, para migrar toda a lógica de negócio para Swift, o KMP continua mais maduro por enquanto
Compartilhar lógica de negócio já era um problema resolvido
A verdadeira dor era ter que escrever a UI duas vezes
Precisamos de um framework de UI comum que não seja incômodo como o React Native
Com Expo, a experiência de desenvolvimento também melhorou muito
Já compartilhei código entre Android e iOS por muito tempo, mas compartilhar UI era um pesadelo
Eu compartilhava apenas a lógica complexa com C/C++/Rust, mas no fim acabava com três linguagens
KMP e Swift for Android deixam compartilhar tudo só com Kotlin/Swift, o que é bem mais limpo
Essa abordagem é muito mais realista e eficiente do que frameworks que tentam forçar o compartilhamento de UI