Spark é um dos aplicativos de E-mail mais populares disponíveis gratuitamente no iPhone, iPad, Mac e Apple Watch. Para os milhões de usuários na plataforma Android, o momento em que o Spark ajuda você a amar seu e-mail não está muito longe. Enquanto isso, queremos compartilhar com você uma nova cadeia de ferramentas incrível que criamos e que tira a dor e os aborrecimentos de trabalhar com o Swift para Android. Essa cadeia de ferramentas ajuda as equipes de desenvolvimento a utilizar o código que escreveram para as plataformas iOS ou Mac para criar ótimos aplicativos Android.

o compilador Apple Swift tem a capacidade de compilar código para a plataforma Android há alguns anos, mas não fez muitos amigos na comunidade de desenvolvedores devido à sua complexidade. Nossa cadeia de ferramentas foi projetada para resolver esse problema, tirando a complexidade e as dores de cabeça do processo, para que você possa se concentrar na criação de ótimos aplicativos para seus usuários.

Quando começamos a trabalhar no desenvolvimento do Android versão do Spark, estávamos procurando uma plataforma de linguagem que pode ser usada tanto para o Android & o desenvolvimento do iOS, além de ser fácil de migrar a partir da nossa objective-C codebase.

Foi nessa época que o Swift se tornou um projeto de código aberto e, depois de um curto período, também conseguiu compilar o código para a plataforma Android. Exploramos nossas opções e era bastante óbvio para nós que deveríamos nos mover nessa direção.

como funciona o compilador Swift Android?

a resposta para isso é simples: máquina virtual de baixo nível.

o LLVM é uma infraestrutura De compilador baseada nos conceitos de design trifásico com re-targetability. Em termos simples, isso significa que qualquer linguagem que tenha um compilador LLVM front-end pode ser compilada para qualquer destino que tenha um compilador de back-end LLVM.

o Google já faz uso do LLVM compiladores nativos do Android com o desenvolvimento de C/C++. É por isso que, do ponto de vista de um dispositivo Android, não há diferença nas bibliotecas compiladas a partir de C/C++ ou código Swift. Além disso, é realmente melhor para os desenvolvedores, porque eles podem reutilizar a maioria dos instrumentos que foram criados para o desenvolvimento C/C++-ferramentas de criação de perfil do Android ou um depurador de baixo nível do Android (com uma limitação na avaliação do código swift).

quais frameworks estão disponíveis?

bem…não há muitos. Só temos acesso ao SwiftCore, Dispatch e SwiftFoundation em nossa cadeia de ferramentas. SwiftCore e Dispatch são praticamente idênticos às versões iOS e Mac. Mas SwiftFoundation, por outro lado, não é a mesma base que a Apple usa para suas próprias plataformas; é uma reimplementação de todas as classes da biblioteca original. É por isso que o SwiftFoundation ainda está faltando alguns recursos, mas cobre todas as necessidades básicas, como executar solicitações de rede, analisar JSON/XML, armazenar dados no disco, etc.

obviamente, o UIKit ou quaisquer estruturas de alto nível não estão disponíveis, portanto, seu aplicativo Swift para iOS não pode ser executado magicamente no Android — você pode usar o Swift para código de lógica de negócios, mas terá que reescrever todas as partes dependentes da interface do Usuário e do sistema operacional especificamente para Android.

quais são as limitações do compilador Swift Android?

  • no momento, o compilador Swift suporta apenas a plataforma ARM-v7a Android.
  • versão mínima do Android suportado é v5.0 (Lollipop).
  • e uma das limitações mais significativas são os arquivos de geração 32MB + APK, porque a compilação deve incluir SwiftCode, SwiftFoundation e libDispatch.

apresentando o Swift Android Toolchain

um dos maiores obstáculos no uso do Swift compiler para Android é a falta de suporte oficial da Apple, o que significa que não há integrações contínuas ou nenhuma compilação oficial. Percebemos que poderíamos otimizar os muitos aborrecimentos presentes no desenvolvimento do Swift para Android e, ao mesmo tempo, melhorar a experiência de nossos desenvolvedores nessa área. Queríamos evitar todas as dores de cabeça que os desenvolvedores do Android normalmente têm que sofrer ao trabalhar com essas ferramentas.

é por isso que temos o Swift Android Toolchain – uma coleção de ferramentas que dá aos desenvolvedores Android a capacidade de usar o Swift em seus projetos confortavelmente e sem aborrecimentos. É um projeto de código aberto baseado no compilador Apple Swift e nos projetos SwiftJava e SwiftAndroid. Você pode baixar o conjunto de ferramentas diretamente do Bintray (somente Mac) ou compilar por conta própria no GitHub.

atualmente, estamos usando a versão bifurcada do Swift. Nosso fork contém a opção de desativar @ objc e recursos dinâmicos no compilador porque não funciona corretamente em plataformas Não Darwin. Ele também contém algumas pequenas correções. Estamos trabalhando para poder usar o repositório Swift oficial no futuro.

além disso, usamos o Swift Package Manager (SPM) como o sistema de compilação do Swift. É o sistema de compilação que a Apple usa no compilador e em outras bibliotecas Swift. Essa ferramenta fornece a capacidade de conectar dependências, compilar código, vincular artefatos (bibliotecas dinâmicas ou executáveis) e executar testes. Junto com nossa cadeia de ferramentas, fornecemos scripts para SPM que automatizarão todos os processos de desenvolvimento e teste de aplicativos Android.

plugin Gradle

claro, é ótimo construir código Swift a partir da linha de comando, mas é simplesmente mais natural para os desenvolvedores Android usarem o Android Studio IDE. Felizmente, o Android IDE usa um sistema de compilação muito flexível chamado ‘Gradle’.

criamos um plugin Gradle para adicionar uma etapa de compilação de Compilação Swift. Ele nos dá a capacidade de construir projetos mistos Swift/Java/Kotlin com apenas um botão.

interoperabilidade JVM

todos os aplicativos Android são executados na máquina virtual Java. Caso qualquer desenvolvedor prefira código nativo( C / C++), ele deve carregar a biblioteca dentro de um aplicativo e interagir com ele por meio da interface nativa Java (JNI). Swift não é exceção. Assim, para usar o código Swift no JVM, devemos carregar as bibliotecas e escrever uma ponte JNI.

depende inteiramente de você qual linguagem JVM (Java ou Kotlin) você usa e como escreve o código de ponte, mas recomendamos que você dê uma olhada em nosso processador de anotação Swift que gera todo o código JNI das classes e interfaces Java.

projeto Blueprint

a equipe do Android no Readdle criou um aplicativo Swift de exemplo para experimentar a cadeia de ferramentas Swift Android em ação. Se você quiser experimentar o Swift para Android, este é um excelente projeto para começar. O projeto Blueprint é um aplicativo simples de fazer com lógica de negócios escrita em Swift, enquanto a IU foi feita em Java.

Teste

Swift projeto já inclui uma estrutura de teste chamado XCTest e já pode ser usado para testar código Swift na plataforma Android. O Swift Package Manager permite compilar testes em um executável binário fat; depois disso, os desenvolvedores podem fazer upload de executáveis binários em dispositivos Android e executá-lo através do shell Android.

BÔNUS: o Nosso conjunto de ferramentas automatiza todas as fases do processo de teste. E o projeto Blueprint inclui alguns testes simples para você tentar.

o que vem a seguir?

ainda temos muito a fazer para Swift toolchain:

  • ARM64 compilador (tentativa prazo: agosto de 2019)
  • X86, X86_64 compilador (Chromebooks suporte)
  • LLDB com Swift suporte: cliente e servidor

esperamos que nossa cadeia de ferramentas Swift Android o ajude a tornar seu processo de desenvolvimento fácil e sem complicações. A linguagem Swift tem evoluído muito nos últimos dois anos e os desenvolvedores que já codificam para as plataformas iOS e Mac usando o Swift agora podem facilmente ter o Android em seu radar também.

fontes

  1. Introdução ao Swift no Android https://github.com/apple/swift/blob/master/docs/Android.md
  2. a arquitetura de aplicativos de código aberto: LLVM http://www.aosabook.org/en/llvm.html
  3. Swift Android Toolchain https://github.com/readdle/swift-android-toolchain
  4. Swift Android Buildtools https://github.com/readdle/swift-android-buildtools
  5. Gradle plugin for building Swift code for Android https://github.com/readdle/swift-android-gradle
  6. Swift Java Code generation annotation processor https://github.com/readdle/swift-java-codegen
  7. Swift Android Blueprint project https://github.com/readdle/swift-android-architecture

Deixe uma resposta

O seu endereço de email não será publicado.