Configurar o ambiente (Kotlin Multiplatform)

O Kotlin Multiplatform (KMP) permite compartilhar código Kotlin em diferentes plataformas. Antes de começar a criar apps com o KMP, é preciso configurar seu ambiente conforme descrito neste documento. Você também pode consultar a documentação oficial do Jetbrain (link em inglês).

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 acompanha o Android Studio para a versão mais recente a fim de evitar problemas de compatibilidade.
  • (Opcional) Para desenvolvimento em iOS, instale o Xcode para criar a IU e adicionar o código Swift ou Objective-C conforme necessário.

Criar um projeto Kotlin Multiplatform

Use o assistente Kotlin Multiplatform da Jetbrains para criar um novo projeto KMP. Escolha a opção Não compartilhar interface para manter a interface nativa.

Estrutura do projeto

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

Um projeto KMP contém módulos específicos da plataforma com 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. Todo código que você quiser compartilhar entre plataformas fica no módulo shared.

O módulo compartilhado usa o Gradle como sistema de build, assim como o restante do projeto. Você pode declarar dependências comuns e específicas da plataforma usando conjuntos de origem. Por exemplo, se o app usa o Ktor para redes, é necessário adicionar uma dependência OkHttp para Android e uma dependência 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 seu app, verifique as dependências necessárias para cada plataforma.