Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução ao Kotlin Multiplatform Mobile

Introdução ao Kotlin Multiplatform Mobile

Nesta talk vamos conhecer o que é o Kotlin Multiplatform Mobile (KMM) e seu diferencial em relação a outras iniciativas multiplataforma.

Avatar for Rafael Sermenho

Rafael Sermenho

August 22, 2021

Other Decks in Technology

Transcript

  1. Carioca e flamenguista Morei por 10 anos em Brasília Atualmente,

    estou em Campinas Desenvolvedor há mais de 17 anos Já trabalhei com Delphi, Cobol, PHP, Java, Kotlin e um pouco de Swift Desde 2013, desenvolvo para Android E desde 2018, atuo na Dextra
  2. Kotlin /* Create a POJO with getters, setters, `equals()`, `hashCode()`,

    `toString()` and `copy()` in a single line: */ data class Customer(val name: String, val email: String, val company: String) // Or filter a list using a lambda expression: val positiveNumbers = list.filter { it > 0 } // Want a singleton? Create an object: object ThisIsASingleton { val companyName: String = "JetBrains" }
  3. Kotlin /* Get rid of those pesky NullPointerExceptions, you know,

    The Billion Dollar Mistake */ var output: String output = null // Compilation error // Kotlin protects you from mistakenly operating on nullable types val name: String? = null // Nullable type println(name.length()) // Compilation error // And if you check a type is right, the compiler will auto-cast it for you fun calculateTotal(obj: Any) { if (obj is Invoice) obj.calculateTotal() }
  4. O que NÃO é? • Mais uma bala de prata

    • Vai matar desenvolvimento nativo • Solução completa para aplicações multiplataforma • Promessa de simplificar ou recriar camada de UI • Framework para gerar apps híbridos
  5. Principais Concorrentes • Flutter: solução ponta a ponta em DART.

    O mesmo código é usado para gerar apps Android e iOS com a mesma camada de UI • React Native: solução ponta a ponta que usa React (JavaScript) • Xamarin Native: solução da Microsoft mais próxima do KMM, mas usa C#
  6. Requisitos • Módulo compartilhado ou Android - qualquer computador que

    rode o Android Studio • Código iOS ou testes no iOS - Mac • Android Studio 4.2 (ou superior) - Xcode 11.3 (para código iOS) • Plugin Kotlin 1.5.10 (ou compatível) • Plugin do Kotlin Multiplatform Mobile 0.2.7 (ou compatível)
  7. Estrutura de Projetos Root Project • Projeto gradle que contém

    módulo compartilhado e app Android Shared Module • Código comum para ambas as plataformas • Se divide em 3 partes: ◦ commomMain: código comum para ambas as plataformas, incluindo "expected" ◦ androidMain: código específico de Android, incluindo implementações "actual" ◦ iOSMain: código específico de iOS, incluindo implementações "actual" Android App • Projeto Android que usa o módulo compartilhado como dependência iOS App • Projeto iOS criado pelo Xcode num diretório separado DENTRO do root project
  8. Usando o KMM KMM Application • Projeto Android • Projeto

    iOS • Módulo compartilhado • Código de exemplo • Pronto para rodar (Android e iOS) KMM Shared Module • Requer configuração no Xcode • Pode ser necessária a criação de um projeto para iOS
  9. • A solução está evoluindo bem rápido • A JetBrains

    tem interesse que a solução seja adotada em escala • Pode ser uma opção interessante e rápida para lançamentos de apps multiplataforma • Curva muito suave para quem é desenvolvedor Android • Curva suave para quem usa swift • Tratamento de concorrência pode ser problemático Conclusão
  10. Referências • Multiplatform programming • Kotlin Multiplatform Mobile • Connect

    to platform-specific APIs • Have you tried Kotlin Multiplatform? • Blog do Matheus Castiglioni | React Native é nativo? • Xamarin.Android - Xamarin • Download Android Studio and SDK tools • Xcode on the Mac App Store • JDK 14.0.2 GA Release • KMM documentation • JetBrains • Netflix Android and iOS Studio Apps — now powered by Kotlin Multiplatform