O plug-in do Gradle com.android.kotlin.multiplatform.library é a ferramenta oficial
para adicionar um destino do Android a um módulo de biblioteca
do Kotlin Multiplatform (KMP). Ele simplifica a configuração do projeto, melhora
a performance do build e oferece uma melhor integração com o Android Studio.
O uso do plug-in com.android.library para o desenvolvimento de KMP depende de APIs do Plug-in do Android para Gradle que foram descontinuadas e exigem ativação no Plug-in do Android para Gradle 9.0 e versões mais recentes (quarto trimestre de 2025). Essas APIs
vão ser removidas no Plug-in do Android para Gradle 10.0
(segundo semestre de 2026).
Para aplicar esse plug-in, consulte a seção Aplicar o plug-in Android-KMP. Se você precisar migrar das APIs legadas, consulte o Guia de migração.
Para receber ajuda com a migração do AGP 9.0+, use a habilidade do agente criada pela JetBrains para apps KMP. Para mais informações sobre o uso de habilidades no Android Studio, consulte Ampliar o Modo Agente com habilidades. Lembre-se de que os resultados da IA não são totalmente previsíveis.
Principais recursos e diferenças
O plug-in Android-KMP é adaptado especificamente para projetos KMP e difere
do plug-in com.android.library padrão em vários aspectos importantes:
Arquitetura de variante única:o plug-in usa uma única variante, removendo o suporte a variações de produtos e tipos de build, o que simplifica a configuração e melhora o desempenho do build.
Otimizado para KMP:o plug-in foi projetado para bibliotecas KMP, com foco em código Kotlin compartilhado e interoperabilidade, omitindo o suporte a builds nativos específicos do Android, AIDL e RenderScript.
Testes desativados por padrão:os testes de unidade e de dispositivo (instrumentação) são desativados por padrão para aumentar a velocidade do build. É possível ativá-los, se necessário.
Sem extensão do Android de nível superior:a configuração é processada com um bloco
androidna DSL do KMP do Gradle, mantendo uma estrutura de projeto KMP consistente. Não há um bloco de extensãoandroidde nível superior.Ativação da compilação Java:a compilação Java está desativada por padrão. Use
withJava()no blocoandroidpara ativá-lo. Isso melhora os tempos de build quando a compilação Java não é necessária.
Benefícios do plug-in da biblioteca Android-KMP
O plug-in Android-KMP oferece os seguintes benefícios para projetos KMP:
Melhoria no desempenho e na estabilidade do build:ele foi projetado para otimizar as velocidades de build e melhorar a estabilidade em projetos KMP. O foco nos fluxos de trabalho do KMP contribui para um processo de build mais eficiente e confiável.
Integração aprimorada com o ambiente de desenvolvimento integrado:oferece melhor preenchimento de código, navegação, depuração e experiência geral do desenvolvedor ao trabalhar com bibliotecas do Android para KMP.
Configuração simplificada do projeto:o plug-in simplifica a configuração para projetos KMP, removendo complexidades específicas do Android, como variantes de build. Isso resulta em arquivos de build mais limpos e fáceis de manter. Antes, o uso do plug-in
com.android.libraryno projeto KMP podia criar nomes de conjuntos de origem confusos, comoandroidAndroidTest. Essa convenção de nomenclatura era menos intuitiva para desenvolvedores familiarizados com as estruturas de projeto padrão do KMP.
Soluções alternativas para recursos incompatíveis
Em comparação com a integração do KMP com o plug-in com.android.library, alguns
recursos estão ausentes no
plug-in com.android.kotlin.multiplatform.library. Confira as soluções alternativas
para os recursos incompatíveis:
Variantes de build
Não há suporte para tipos de build e variações de produtos. Isso ocorre porque o novo plug-in usa uma arquitetura de variante única, que simplifica a configuração e melhora o desempenho do build.
Se você precisar de variantes de build, recomendamos criar um módulo de biblioteca do Android independente usando o plug-in
com.android.library, configurar tipos de build e variações de produto nesse módulo e, em seguida, consumi-lo como uma dependência de projeto padrão do conjunto de origemandroidMainda biblioteca multiplataforma do Kotlin. Para mais detalhes, consulte Criar uma biblioteca Android e Configurar variantes de build.Vinculação de dados e vinculação de visualizações
Esses são recursos do framework de interface específicos do Android, que estão intimamente ligados ao sistema de visualização do Android e aos layouts XML. Com o novo plug-in de biblioteca do Android-KMP, recomendamos que você processe a interface usando um framework multiplataforma, como o Compose Multiplatform. A vinculação de dados e de visualizações são consideradas detalhes de implementação de um app Android final, não uma biblioteca compartilhável.
Suporte nativo para builds
O novo plug-in se concentra em produzir um AAR padrão para o destino do Android. A integração de código nativo no Kotlin Multiplatform é processada diretamente pelos destinos nativos do KMP (como
androidNativeArm64eandroidNativeX86) e pela interoperabilidade com C. Se você precisar incluir código nativo em C/C++, defina-o como parte de um conjunto de origem comum ou nativo e configure a interoperabilidade em C no blocokotlin, em vez de usar o mecanismoexternalNativeBuildespecífico do Android.Como alternativa, se você precisar de suporte a build nativo via
externalNativeBuild, nossa recomendação é criar um módulocom.android.libraryindependente em que você possa integrar o código nativo e consumir essa biblioteca independente do conjunto de origemandroidMaindo projeto de biblioteca do Kotlin Multiplatform. Para mais detalhes, consulte Criar uma biblioteca do Android e Adicionar código C e C++ ao seu projeto.Classe
BuildConfig(link em inglês)O recurso
BuildConfigé mais útil em ambientes com diversas variantes. Como o novo plug-in da biblioteca multiplataforma do Kotlin é independente de variantes e não oferece suporte a tipos de build e variações de produtos, esse recurso não está implementado. Como alternativa, recomendamos o uso do plug-inBuildKonfigou de soluções semelhantes da comunidade para gerar metadados para todos os destinos.
Pré-requisitos
Para usar o plug-in com.android.kotlin.multiplatform.library, seu projeto precisa
ser configurado com as seguintes versões mínimas ou mais recentes:
- Plug-in do Android para Gradle (AGP): 8.10.0
- Plug-in do Kotlin para Gradle (KGP): 2.0.0
Aplicar o plug-in Android-KMP a um módulo atual
Para aplicar o plug-in Android-KMP a um módulo de biblioteca KMP, siga estas etapas:
Declare plug-ins no catálogo de versões. Abra o arquivo TOML do catálogo de versões (geralmente
gradle/libs.versions.toml) e adicione a seção de definições de plug-ins:# To check the version number of the latest Kotlin release, go to # https://kotlinlang.org/docs/releases.html [versions] androidGradlePlugin = "9.4.0" kotlin = "KOTLIN_VERSION" [plugins] kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } android-kotlin-multiplatform-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "androidGradlePlugin" }Aplique a declaração do plug-in no arquivo de build raiz. Abra o arquivo
build.gradle.ktslocalizado no diretório raiz do projeto. Adicione os aliases do plug-in ao blocopluginsusandoapply false. Isso disponibiliza os aliases do plug-in para todos os subprojetos sem aplicar a lógica do plug-in ao projeto raiz.Kotlin
// Root build.gradle.kts file plugins { alias(libs.plugins.kotlin.multiplatform) apply false // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) apply false }
Groovy
// Root build.gradle file plugins { alias(libs.plugins.kotlin.multiplatform) apply false // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) apply false }
Aplique o plug-in em um arquivo de build do módulo de biblioteca do KMP. Abra o arquivo
build.gradle.ktsno módulo da biblioteca KMP e aplique o plug-in na parte de cima do arquivo, dentro do blocoplugins:Kotlin
// Module-specific build.gradle.kts file plugins { alias(libs.plugins.kotlin.multiplatform) // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) }
Groovy
// Module-specific build.gradle file plugins { alias(libs.plugins.kotlin.multiplatform) // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) }
Configurar o destino do KMP para Android. Configure o bloco do Kotlin Multiplatform (
kotlin) para definir o destino do Android. No blocokotlin, especifique o destino do Android usandoandroid:Kotlin
kotlin { android { namespace = "com.example.kmpfirstlib" compileSdk = 33 minSdk = 24 withJava() // enable java compilation support withHostTestBuilder {}.configure {} withDeviceTestBuilder { sourceSetTreeName = "test" } compilerOptions.configure { jvmTarget.set( org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8 ) } } sourceSets { androidMain { dependencies { // Add Android-specific dependencies here } } getByName("androidHostTest") { dependencies { } } getByName("androidDeviceTest") { dependencies { } } } // ... other targets (JVM, iOS, etc.) ... }
Groovy
kotlin { android { namespace = "com.example.kmpfirstlib" compileSdk = 33 minSdk = 24 withJava() // enable java compilation support withHostTestBuilder {}.configure {} withDeviceTestBuilder { it.sourceSetTreeName = "test" } compilerOptions.options.jvmTarget.set( org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8 ) } sourceSets { androidMain { dependencies { } } androidHostTest { dependencies { } } androidDeviceTest { dependencies { } } } // ... other targets (JVM, iOS, etc.) ... }
Implementar mudanças Depois de aplicar o plug-in e configurar o bloco
kotlin, sincronize o projeto do Gradle para aplicar as mudanças.
Migrar do plug-in legado
Este guia ajuda você a migrar do plug-in legado com.android.library para o
plug-in com.android.kotlin.multiplatform.library.
1. Mover fontes
O plug-in legado permitia usar os conjuntos de origem src/main, src/test
e src/androidTest,
além de src/androidMain, src/androidHostTest e
src/androidDeviceTest. O novo plug-in usa apenas os diretórios de origem
mais recentes. Portanto,
você precisará mover as origens de src/main para src/androidMain, de
src/test para src/androidHostTest e de
src/androidTest para src/androidDeviceTest.
2. Configurar diretórios de origem e de recursos personalizados
Se você tiver origens ou recursos em diretórios não padrão, eles foram configurados
anteriormente usando o bloco sourceSets. Com o novo plug-in, use a
extensão androidComponents para adicionar diretórios de origem estáticos à variante.
Com o novo plug-in, o método addStaticSourceDirectory adiciona
o diretório à lista de diretórios de origem. Com o plug-in legado, o método setSrcDirs substitui a lista, enquanto o método srcDir adiciona a ela.
Android-KMP
Com o novo plug-in, use o bloco onVariants para interagir com as
origens da variante.
// build.gradle.kts
androidComponents {
onVariants { variant ->
// Add a directory for Kotlin sources
variant.sources.kotlin?.addStaticSourceDirectory("other/kotlin")
// Add a directory for Android assets
variant.sources.assets?.addStaticSourceDirectory("other/assets")
}
}
Plug-in legado
Com o plug-in com.android.library, o bloco sourceSets era usado para
definir ou adicionar diretórios de origem.
// build.gradle.kts
android {
sourceSets {
getByName("main") {
// Replaces the directory for Kotlin sources.
kotlin.setSrcDirs(listOf("other/kotlin"))
// Appends a directory for assets.
assets.srcDir("other/assets")
}
}
}
3. Declarar dependências
Uma tarefa comum é declarar dependências para conjuntos de origem específicos do Android. O
novo plug-in exige que eles sejam colocados explicitamente no bloco sourceSets,
ao contrário do bloco geral dependencies usado anteriormente.
Android-KMP
O novo plug-in promove uma estrutura mais limpa ao agrupar as dependências do Android
no conjunto de origem androidMain. Além do conjunto de origem principal,
há dois conjuntos de origem de teste, que são criados sob demanda:
androidDeviceTest e androidHostTest (consulte Configurar testes de host e
dispositivo para mais informações).
// build.gradle.kts
kotlin {
android {}
//... other targets
sourceSets {
commonMain.dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")
}
// Dependencies are now scoped to the specific Android source set
androidMain.dependencies {
implementation("androidx.appcompat:appcompat:1.7.0")
implementation("com.google.android.material:material:1.11.0")
}
}
}
Os conjuntos de origem têm compilações
do Kotlin correspondentes chamadas main, deviceTest
e hostTest. Os conjuntos de origem e as compilações podem ser configurados no
script de build desta forma:
// build.gradle.kts
kotlin {
android {
compilations.getByName("deviceTest") {
kotlinOptions.languageVersion = "2.0"
}
}
}
Plug-in legado
Com o plug-in legado, era possível declarar dependências específicas do Android no bloco de dependências de nível superior, o que às vezes podia ser confuso em um módulo multiplataforma.
// build.gradle.kts
kotlin {
androidTarget()
//... other targets
}
// Dependencies for all source sets were often mixed in one block
dependencies {
// Common dependencies
commonMainImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")
// Android-specific dependencies
implementation("androidx.appcompat:appcompat:1.7.0")
implementation("com.google.android.material:material:1.11.0")
}
4. Ativar recursos do Android
O suporte a recursos do Android (pastas res) não é ativado por padrão com o
novo plug-in para otimizar o desempenho do build. Para usar, é preciso fazer a ativação. Essa
mudança ajuda a garantir que os projetos que não exigem recursos específicos do Android
não sejam sobrecarregados pela sobrecarga de build associada.
Android-KMP
É preciso ativar explicitamente o processamento de recursos do Android. Os recursos precisam
ser colocados em src/androidMain/res.
// build.gradle.kts
kotlin {
android {
// ...
// Enable Android resource processing
androidResources {
enable = true
}
}
}
// Project Structure
// └── src
// └── androidMain
// └── res
// ├── values
// │ └── strings.xml
// └── drawable
// └── icon.xml
Plug-in legado
O processamento de recursos foi ativado por padrão. Você pode adicionar imediatamente um diretório
res em src/main e começar a adicionar drawables XML, valores etc.
// build.gradle.kts
android {
namespace = "com.example.library"
compileSdk = 34
// No extra configuration was needed to enable resources.
}
// Project Structure
// └── src
// └── main
// └── res
// ├── values
// │ └── strings.xml
// └── drawable
// └── icon.xml
5. Configurar testes de host e de dispositivo
Por padrão, o novo plug-in desativa os testes do Android do lado do host (unidade) e do lado do dispositivo (instrumentados). É necessário ativar explicitamente a criação dos conjuntos de origem e das configurações de teste, enquanto o plug-in legado os criava automaticamente.
Esse modelo de ativação ajuda a verificar se o projeto permanece enxuto e inclui apenas a lógica de build e os conjuntos de origem que você usa ativamente.
Android-KMP
Com o novo plug-in, você ativa e configura testes dentro do
bloco kotlin.android. Isso torna a configuração mais explícita e evita
a criação de componentes de teste não utilizados. O conjunto de origem androidUnitTest se torna
androidHostTest (o diretório de teste muda de src/androidUnitTest para
src/androidHostTest), e androidInstrumentedTest se torna
androidDeviceTest (o diretório de teste muda de
src/androidInstrumentedTest para src/androidDeviceTest).
// build.gradle.kts
kotlin {
android {
// ...
// Opt-in to enable and configure host-side (unit) tests
withHostTest {
isIncludeAndroidResources = true
}
// Opt-in to enable and configure device-side (instrumented) tests
withDeviceTest {
instrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
execution = "HOST"
}
}
}
// Project Structure (After Opt-in)
// └── src
// ├── androidHostTest
// └── androidDeviceTest
Plug-in legado
Com o plug-in com.android.library, os conjuntos de origem androidUnitTest e
androidInstrumentedTest são criados por padrão. Configure
o comportamento deles dentro do bloco android, normalmente usando a
DSL testOptions.
// build.gradle.kts
android {
defaultConfig {
// Runner was configured in defaultConfig
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
testOptions {
// Configure unit tests (for the 'test' source set)
unitTests.isIncludeAndroidResources = true
// Configure device tests (for the 'androidTest' source set)
execution = "HOST"
}
}
// Project Structure (Defaults)
// └── src
// ├── test
// └── androidTest
6. Ativar a compilação de origem Java
Se a biblioteca KMP precisar compilar fontes Java para o destino do Android, ative explicitamente essa funcionalidade com o novo plug-in. Isso ativa a compilação para arquivos Java localizados diretamente no projeto, não para as dependências dele. O método para definir a versão de destino da JVM do compilador Java e Kotlin também muda.
Android-KMP
É preciso ativar a compilação do Java chamando withJava(). O destino da JVM
agora é configurado diretamente dentro do bloco kotlin { android {} }
para uma configuração mais unificada. Definir jvmTarget aqui se aplica à compilação do Kotlin
e do Java para o destino do Android.
// build.gradle.kts
kotlin {
android {
// Opt-in to enable Java source compilation
withJava()
// Configure the JVM target for both Kotlin and Java sources
compilerOptions {
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8)
}
}
// ...
}
// Project Structure:
// └── src
// └── androidMain
// ├── kotlin
// │ └── com/example/MyKotlinClass.kt
// └── java
// └── com.example/MyJavaClass.java
Plug-in legado
A compilação Java foi ativada por padrão. O destino da JVM para as origens Java e Kotlin foi definido no bloco android usando compileOptions.
// build.gradle.kts
android {
// ...
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}
kotlin {
androidTarget {
compilations.all {
kotlinOptions.jvmTarget = "1.8"
}
}
}
7. Interagir com variantes de build usando androidComponents
A extensão androidComponents ainda está disponível para interagir com artefatos de build de forma programática. Embora grande parte da API Variant permaneça igual,
a nova interface AndroidKotlinMultiplatformVariant é mais limitada porque
o plug-in produz apenas uma única variante.
Consequentemente, as propriedades relacionadas a tipos de build e variações de produto não estão mais disponíveis no objeto de variante.
Android-KMP
O bloco onVariants agora itera em uma única variante. Ainda é possível
acessar propriedades comuns, como name e artifacts, mas não
as específicas do tipo de build.
// build.gradle.kts
androidComponents {
onVariants { variant ->
val artifacts = variant.artifacts
}
}
Plug-in legado
Com várias variantes, é possível acessar propriedades específicas do tipo de build para configurar tarefas.
// build.gradle.kts
androidComponents {
onVariants(selector().withBuildType("release")) { variant ->
// ...
}
}
8. Selecionar variantes de dependências da biblioteca do Android
Sua biblioteca KMP produz uma única variante para Android. No entanto, você pode
depender de uma biblioteca Android padrão (com.android.library) que tenha várias
variantes (por exemplo, variações de produto free/paid). Controlar como o projeto
seleciona uma variante dessa dependência é um requisito comum.
Android-KMP
O novo plug-in centraliza e esclarece essa lógica no bloco
kotlin.android.localDependencySelection. Isso deixa muito
mais claro quais variantes de dependências externas serão selecionadas para sua
biblioteca KMP de variante única.
// build.gradle.kts
kotlin {
android {
localDependencySelection {
// For dependencies with multiple build types, select 'debug' first, and 'release' in case 'debug' is missing
selectBuildTypeFrom.set(listOf("debug", "release"))
// For dependencies with a 'type' flavor dimension...
productFlavorDimension("type") {
// ...select the 'typeone' flavor.
selectFrom.set(listOf("typeone"))
}
}
}
}
Plug-in legado
Você configurou estratégias de seleção de dependências dentro dos blocos buildTypes and
productFlavors. Isso geralmente envolvia o uso de missingDimensionStrategy
para fornecer uma variação padrão para uma dimensão que sua biblioteca não tinha
ou matchingFallbacks em uma variação específica para definir uma ordem de pesquisa.
Consulte Resolver erros de correspondência para mais informações detalhadas sobre o uso da API.
9. Adicionar dependências de prévia do Compose
Normalmente, queremos ter bibliotecas específicas com escopo para nosso ambiente de desenvolvimento local para evitar que ferramentas internas vazem para o artefato publicado final. Isso se torna um desafio com o novo plug-in do Android para KMP, porque ele remove a arquitetura de tipo de build usada para separar as dependências de desenvolvimento do código de lançamento.
Android-KMP
Para adicionar uma dependência apenas para desenvolvimento e teste locais, adicione-a
diretamente à configuração do caminho de classe de execução (no bloco dependencies
de nível superior) da compilação principal do Android. Isso ajuda a garantir que a
dependência esteja disponível no momento da execução (por exemplo, para ferramentas como
Compose Preview), mas não faça parte do caminho de classe de compilação
ou da API publicada da sua biblioteca.
// build.gradle.kts
dependencies {
"androidRuntimeClasspath"(libs.androidx.compose.ui.tooling)
}
Plug-in legado
Os projetos multiplataforma do Kotlin que usam o plug-in com.android.library
para o destino do Android precisam usar a configuração debugImplementation,
que define o escopo da dependência para o tipo de build de depuração e impede que ela
seja incluída na variante de lançamento da biblioteca usada pelos consumidores.
// build.gradle.kts
dependencies {
debugImplementation(libs.androidx.compose.ui.tooling)
}
10. Configurar o destino da JVM para o destino do Android do KMP
O plug-in do Android para KMP define o destino da JVM usando
android.compilerOptions.jvmTarget, que se aplica ao Java e ao
Kotlin, simplificando a configuração em comparação com os blocos
compileOptions e kotlinOptions separados em projetos puros do Android.
Android-KMP
Ao trabalhar com um projeto do Kotlin Multiplatform (KMP) que inclui um destino do Android, há várias maneiras de configurar a versão de destino da JVM para os compiladores Kotlin e Java. Entender o escopo e a hierarquia dessas configurações é fundamental para gerenciar a compatibilidade de bytecode do seu projeto.
Confira as três principais maneiras de definir o destino da JVM, ordenadas da menor para a maior precedência. Os valores de destino da JVM que têm maior precedência se aplicam a um subconjunto menor dos alvos configurados e substituem os valores que têm menor precedência. Isso significa que é possível definir diferentes versões da JVM para diferentes destinos e compilações dentro de destinos no seu projeto.
Como usar o conjunto de ferramentas do Kotlin (menor precedência)
A maneira mais geral de definir o destino da JVM é especificando o conjunto de ferramentas
no bloco kotlin do arquivo build.gradle.kts. Essa abordagem define
o destino para as tarefas de compilação do Kotlin e do Java em todos os destinos baseados em JVM
no seu projeto, incluindo o Android.
// build.gradle.kts
kotlin {
jvmToolchain(21)
}
Essa configuração faz com que kotlinc e javac segmentem a JVM 21. Essa é uma ótima maneira de estabelecer uma referência consistente para todo o projeto.
Como usar as opções do compilador de nível de destino do Android (prioridade média)
É possível especificar o destino da JVM especificamente para o destino do KMP do Android
no bloco android. Essa configuração substitui a configuração jvmToolchain
em todo o projeto e se aplica a todas as compilações do Android.
// build.gradle.kts
kotlin {
android {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_11)
}
}
}
Nesse caso, mesmo que um jvmToolchain seja definido como uma versão diferente, o
código Kotlin e Java do destino do Android será compilado para segmentar a JVM 11.
Como usar opções do compilador no nível da compilação (precedência mais alta)
Para ter o controle mais granular, configure as opções do compilador por
compilação (por exemplo, apenas em androidMain ou
androidHostTest). Isso é útil se uma compilação específica precisar segmentar uma versão diferente
da JVM. Essa configuração substitui o conjunto de ferramentas do Kotlin e as
opções de nível de destino do Android.
// build.gradle.kts
kotlin {
android {
compilations.all {
compileTaskProvider.configure {
compilerOptions.jvmTarget.set(JvmTarget.JVM_11)
}
}
}
}
Essa configuração ajuda a garantir que todas as compilações no destino do Android usem a JVM 11, oferecendo um controle detalhado.
Plug-in legado
Em um projeto KMP que usa o plug-in padrão da biblioteca do Android
(com.android.library), a configuração é um pouco diferente de quando
você usa o plug-in do Android para KMP, mas conceitualmente semelhante.
Como usar o conjunto de ferramentas do Kotlin
O método kotlin.jvmToolchain() funciona de maneira idêntica, definindo
sourceCompatibility e targetCompatibility para Java e
jvmTarget para Kotlin. Recomendamos o uso dessa abordagem.
// build.gradle.kts
kotlin {
jvmToolchain(21)
}
compileOptions e kotlinOptions
Se você não usar o conjunto de ferramentas do Kotlin, vai precisar configurar os destinos da JVM usando blocos separados para Java e Kotlin.
// build.gradle.kts
android {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
}
11. Publicar regras de retenção do consumidor
Se a biblioteca KMP precisar enviar regras de manutenção do consumidor (como regras do ProGuard para o R8) para os consumidores, será necessário ativar explicitamente a publicação com o novo plug-in. Antes, as regras de retenção do consumidor eram publicadas por padrão, se especificadas.
Android-KMP
Com o novo plug-in, é necessário definir
optimization.consumerKeepRules.publish = true e especificar arquivos de regras
no bloco consumerKeepRules para publicar regras de manutenção do consumidor.
// build.gradle.kts
kotlin {
android {
optimization {
consumerKeepRules.apply {
publish = true
file("consumer-proguard-rules.pro")
}
}
}
}
Plug-in legado
Com com.android.library, todos os arquivos de regras especificados com
consumerProguardFiles em android.defaultConfig são publicados nos
artefatos da biblioteca por padrão.
// build.gradle.kts
android {
defaultConfig {
consumerProguardFiles("consumer-proguard-rules.pro")
}
}
12. Publicar sua biblioteca no Maven
Se você planeja publicar sua biblioteca KMP no Maven para consumo por outros projetos, o processo varia dependendo se você está usando o novo plug-in Android-KMP ou o plug-in legado.
Android-KMP
O plug-in com.android.kotlin.multiplatform.library se integra aos
mecanismos de publicação padrão do Kotlin Multiplatform. Não há
etapas específicas do Android além do processo padrão de publicação da biblioteca
KMP.
Para publicar sua biblioteca, siga a documentação oficial da JetBrains: Configurar a publicação de uma biblioteca multiplataforma (link em inglês).
Plug-in legado
Ao usar com.android.library para o destino do Android em um projeto KMP,
siga o guia padrão de publicação de bibliotecas do Android para
preparar e publicar o artefato específico do Android (.aar).
Para instruções detalhadas, consulte Preparar sua biblioteca para lançamento.
Referência da API do plug-in
O novo plug-in tem uma plataforma de API diferente de com.android.library. Para
informações detalhadas sobre a nova DSL e as interfaces, consulte as referências da API:
KotlinMultiplatformAndroidLibraryExtensionKotlinMultiplatformAndroidLibraryTargetKotlinMultiplatformAndroidDeviceTestKotlinMultiplatformAndroidHostTestKotlinMultiplatformAndroidVariant
Problemas conhecidos com o plug-in da biblioteca Android-KMP
Estes são os problemas conhecidos que podem ocorrer ao aplicar o novo
plug-in com.android.kotlin.multiplatform.library:
A visualização do Compose falha ao usar o novo plug-in android-KMP
- Corrigido em
Android Studio Otter 2 Feature Drop | 2025.2.2 Canary 3eAndroid Gradle Plugin 9.0.0-alpha13
- Corrigido em
-
- Corrigido em
Android Studio Otter 2 Feature Drop | 2025.2.2 Canary 3eAndroid Gradle Plugin 9.0.0-alpha13
- Corrigido em
-
- Corrigido em
Kotlin Gradle Plugin 2.3.0-Beta2
- Corrigido em
Suporte a sourceSetTree instrumentado para o destino androidLibrary
- Corrigido em
Android Studio Otter 2 Feature Drop | 2025.2.2 Canary 3eAndroid Gradle Plugin 9.0.0-alpha13
- Corrigido em
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Configurar o ambiente
- Adicionar um módulo KMP a um projeto