Configurar o ambiente (Kotlin Multiplatform)

O Kotlin Multiplatform (KMP) permite compartilhar códigos Kotlin em diferentes plataformas. Antes de começar a criar apps com o KMP, você precisa configurar o ambiente conforme descrito neste documento. Você também pode consultar a documentação oficial do JetBrain.

Instalar ou atualizar as ferramentas necessárias

  • Instale ou atualize para a versão estável mais recente do Android Studio.
  • Atualize o plug-in do Kotlin que é fornecido com o Android Studio para a versão mais recente para evitar problemas de compatibilidade.
  • (Opcional) Para desenvolvimento iOS, instale o Xcode para criar a interface e adicionar o código Swift ou Objective-C conforme necessário.

Criar um projeto Kotlin Multiplatform

Você pode usar o assistente Kotlin Multiplatform (link em inglês) da JetBrains para criar um novo projeto KMP. Escolha a opção Do not share UI para manter a interface nativa.

Estrutura do projeto

Os projetos do KMP seguem uma estrutura semelhante aos projetos do Android.

Um projeto KMP contém módulos específicos da plataforma e um módulo compartilhado. Adicione o código específico da plataforma ao módulo relevante. Por exemplo, adicione a interface do app Android no módulo androidApp e a interface do app iOS em iosApp. Qualquer código que você queira compartilhar entre plataformas vai para o módulo shared.

O módulo compartilhado usa o Gradle como o sistema de build, assim como o restante do projeto. É possível declarar dependências comuns e específicas da plataforma usando sourcesets. Por exemplo, se o app usa o Ktor para rede, é necessário adicionar uma dependência do OkHttp para Android e uma dependência do Darwin para iOS. Algumas bibliotecas exigem apenas dependências comuns e não precisam de dependências específicas da plataforma.

sourceSets {
   commonMain.dependencies {
       //put your multiplatform dependencies here
       //...
       implementation(libs.ktor.client.core)
       implementation(libs.ktor.client.content.negotiation)
       implementation(libs.ktor.serialization.kotlinx.json)
       //...
   }
   androidMain.dependencies {
       implementation(libs.ktor.client.okhttp)
   }
   iosMain.dependencies {
       implementation(libs.ktor.client.darwin)
   }
}

Ao adicionar uma nova biblioteca ao módulo compartilhado do app, verifique as dependências necessárias para cada plataforma.