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.