Kotlin Multiplatform para Kotlin: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é Kotlin Multiplatform e para que serve?

\n\n

Kotlin Multiplatform (KMP) não é uma biblioteca no sentido clássico, mas uma tecnologia (SDK e conjunto de ferramentas) da JetBrains, que permite escrever código comum em Kotlin e compilá-lo para várias plataformas: JVM (Android, servidores), JavaScript (navegadores web, Node.js), Native (iOS, macOS, Windows, Linux, watchOS, tvOS).

\n\n

Para que serve? No desenvolvimento moderno, muitas vezes é necessário criar aplicativos para diferentes plataformas. Tradicionalmente, isso significava escrever código em diferentes linguagens (Swift para iOS, Java/Kotlin para Android, JavaScript para web). O Kotlin Multiplatform resolve esse problema, permitindo que a lógica de negócios (requisições de rede, trabalho com banco de dados, validação de dados, serialização) seja colocada em um módulo comum, usado em todas as plataformas. O código específico da plataforma (UI, trabalho com câmera, sensores) permanece nativo, mas seu volume é significativamente reduzido.

\n\n

Principais vantagens:

\n
    \n
  • Redução do tempo de desenvolvimento: Escreva a lógica uma vez e use em todos os lugares.
  • \n
  • Base de código unificada: Menos bugs, mais fácil de manter e refatorar.
  • \n
  • Desempenho nativo: Ao contrário do React Native ou Flutter, o KMP compila para código nativo, não funciona através de uma camada intermediária.
  • \n
  • Flexibilidade: Você pode começar pequeno — extrair apenas uma biblioteca (por exemplo, para requisições de rede) e expandir gradualmente o código comum.
  • \n
  • Uso de código existente: É possível conectar bibliotecas nativas através do mecanismo expect/actual.
  • \n
\n\n

Kotlin Multiplatform é ideal para: aplicativos móveis (Android + iOS), aplicativos de servidor (Ktor + KMP), aplicativos web (Kotlin/JS), aplicativos desktop (Compose Multiplatform) e bibliotecas que precisam funcionar em todos os lugares.

\n\n

Instalação e configuração

\n\n

Kotlin Multiplatform não é instalado via pip ou npm. É uma ferramenta de build configurada através do sistema de build Gradle. Abaixo está o processo padrão para criar um projeto com KMP.

\n\n

1. Instalação do IntelliJ IDEA ou Android Studio

\n

Recomenda-se usar IntelliJ IDEA Ultimate (a Community Edition também funciona, mas com limitações) ou Android Studio com o plugin Kotlin Multiplatform.

\n\n

2. Criação do projeto

\n

A maneira mais simples é usar o Kotlin Multiplatform Wizard (ferramenta online da JetBrains): https://kmp.jetbrains.com/. Selecione as plataformas desejadas (Android, iOS, Desktop, Web) e baixe o template pronto.

\n\n

3. Estrutura do projeto (Gradle)

\n

O principal arquivo de configuração é o build.gradle.kts (raiz e módulos). Plugins principais:

\n
// build.gradle.kts raiz\nplugins {\n    kotlin("multiplatform") version "1.9.22" apply false\n    kotlin("plugin.serialization") version "1.9.22" apply false\n    id("com.android.application") version "8.2.0" apply false\n    id("org.jetbrains.compose") version "1.5.11" apply false\n}\n\n// Módulo shared (código comum)\nplugins {\n    kotlin("multiplatform")\n    kotlin("plugin.serialization")\n    id("com.android.library")\n}\n\nkotlin {\n    androidTarget {\n        compilations.all {\n            kotlinOptions {\n                jvmTarget = "1.8"\n            }\n        }\n    }\n\n    listOf(\n        iosX64(),\n        iosArm64(),\n        iosSimulatorArm64()\n    ).forEach {\n        it.binaries.framework {\n            baseName = "shared"\n            isStatic = true\n        }\n    }\n\n    sourceSets {\n        val commonMain by getting {\n            dependencies {\n                implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")\n                implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")\                    

Recommendations