Android Gradle eklentisi 9.0, yerleşik Kotlin desteği sunar ve bu desteği varsayılan olarak etkinleştirir. Bu nedenle, Kotlin kaynak dosyalarını derlemek için artık derleme dosyalarınızda org.jetbrains.kotlin.android
(veya kotlin-android
) eklentisini uygulamanız gerekmez.
Yerleşik Kotlin ile derleme dosyalarınız daha basittir ve AGP ile kotlin-android
eklentisi arasındaki uyumluluk sorunlarını önleyebilirsiniz.
Yerleşik Kotlin'i etkinleştirme
Yerleşik Kotlin desteği için AGP 9.0 veya sonraki bir sürüm gerekir.
AGP 9.0, AGP'yi uyguladığınız tüm modüllerinizde yerleşik Kotlin'i zaten etkinleştirir. Bu nedenle, Kotlin'i etkinleştirmek için herhangi bir işlem yapmanız gerekmez. Ancak daha önce gradle.properties
dosyasında android.builtInKotlin=false
ayarını yaparak yerleşik Kotlin'i devre dışı bıraktıysanız bu ayarı kaldırmanız veya android.builtInKotlin=true
olarak ayarlayarak etkinleştirmeniz gerekir.
Yerleşik Kotlin'i kullanmak için projenizde bazı değişiklikler yapmanız gerekir. Bu nedenle, yerleşik Kotlin'i etkinleştirdikten sonra projenizi taşımak için sonraki adımları uygulayın.
Taşıma adımları
Projenizi eski bir AGP sürümünden AGP 9.0'a yükselttikten veya yerleşik Kotlin'i manuel olarak etkinleştirdikten sonra aşağıdaki hata mesajını görebilirsiniz:
Failed to apply plugin 'org.jetbrains.kotlin.android'.
> Cannot add extension with name 'kotlin', as there is an extension already registered with that name.
...veya
Failed to apply plugin 'com.jetbrains.kotlin.android'
> The 'org.jetbrains.kotlin.android' plugin is no longer required for Kotlin support since AGP 9.0.
Bunun nedeni, yerleşik Kotlin'in projenizde bazı değişiklikler yapmanızı gerektirmesidir. Bu hatayı düzeltmek için aşağıdaki adımları uygulayın.
kotlin-android
eklentisini kaldırma- Gerekirse
kotlin-kapt
eklentisini taşıyın - Gerekirse
kotlinOptions{}
bloğunu taşıyın
1. kotlin-android
eklentisini kaldırın
org.jetbrains.kotlin.android
(veya kotlin-android
) eklentisini, uyguladığınız modül düzeyindeki derleme dosyalarından kaldırın.
Kaldırılacak kod, eklentileri bildirmek için sürüm kataloglarını kullanıp kullanmadığınıza bağlıdır.
Sürüm kataloglarıyla
Kotlin
// Module-level build file plugins {alias(libs.plugins.kotlin.android)}
Groovy
// Module-level build file plugins {alias(libs.plugins.kotlin.android)}
Sürüm kataloğu yok
Kotlin
// Module-level build file plugins {id("org.jetbrains.kotlin.android")}
Groovy
// Module-level build file plugins {id 'org.jetbrains.kotlin.android'}
Ardından, eklentiyi üst düzey derleme dosyanızdan kaldırın:
Sürüm kataloglarıyla
Kotlin
// Top-level build file plugins {alias(libs.plugins.kotlin.android) apply false}
Groovy
// Top-level build file plugins {alias(libs.plugins.kotlin.android) apply false}
Sürüm kataloğu yok
Kotlin
// Top-level build file plugins {id("org.jetbrains.kotlin.android") version "KOTLIN_VERSION" apply false}
Groovy
// Top-level build file plugins {id 'org.jetbrains.kotlin.android' version 'KOTLIN_VERSION' apply false}
Sürüm katalogları kullanıyorsanız eklenti tanımını sürüm kataloğu TOML dosyasından (genellikle gradle/libs.versions.toml
) da kaldırın:
[plugins]kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "KOTLIN_VERSION" }
2. Gerekirse kotlin-kapt
eklentisini taşıyın
Derleme dosyalarınızda org.jetbrains.kotlin.kapt
(veya kotlin-kapt
) kullanıyorsanız bu eklenti yerleşik Kotlin ile uyumlu olmaz. Bu eklentiyi, mevcut Android Gradle eklentinizle aynı sürümü kullanarak com.android.legacy-kapt
eklentisiyle değiştirmeniz gerekir.
Örneğin, sürüm kataloglarında sürüm kataloğu TOML dosyanızı aşağıdaki gibi güncelleyin:
[plugins] android-application = { id = "com.android.application", version.ref = "AGP_VERSION" } # Add the following plugin definition legacy-kapt = { id = "com.android.legacy-kapt", version.ref = "AGP_VERSION" } # Remove the following plugin definitionkotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "KOTLIN_VERSION" }
Ardından, derleme dosyalarınızı güncelleyin:
Kotlin
// Top-level build file plugins { alias(libs.plugins.legacy.kapt) apply falsealias(libs.plugins.kotlin.kapt) apply false}
Groovy
// Top-level build file plugins { alias(libs.plugins.legacy.kapt) apply falsealias(libs.plugins.kotlin.kapt) apply false}
Kotlin
// Module-level build file plugins { alias(libs.plugins.legacy.kapt)alias(libs.plugins.kotlin.kapt)}
Groovy
// Module-level build file plugins { alias(libs.plugins.legacy.kapt)alias(libs.plugins.kotlin.kapt)}
3. Gerekirse kotlinOptions{}
bloğunu taşıyın
android.kotlinOptions{}
DSL'yi kullanıyorsanız kotlin.compilerOptions{}
DSL'ye taşımanız gerekir.
Örneğin, şu kodu güncelleyin:
Kotlin
android { kotlinOptions { languageVersion = "2.0" jvmTarget = "11" } }
Groovy
android { kotlinOptions { languageVersion = "2.0" jvmTarget = "11" } }
...yeni DSL'ye:
Kotlin
kotlin { compilerOptions { languageVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0 // Optional: Set jvmTarget // jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11 } }
Groovy
kotlin { compilerOptions { languageVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0 // Optional: Set jvmTarget // jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11 } }
Sorun bildir
Önceki adımları tamamladıktan sonra sorunlarla karşılaşırsanız 438678642 numaralı sorunun açıklamasındaki bilinen sorunlara göz atın ve gerekirse bize geri bildirim gönderin.
Yerleşik Kotlin'i devre dışı bırakma
Projenizi yerleşik Kotlin'i kullanacak şekilde taşıyamıyorsanız gradle.properties
dosyasında android.builtInKotlin = false
değerini ayarlayarak yerleşik Kotlin'i geçici olarak devre dışı bırakın.
Bu işlemi yaptığınızda derlemede, AGP 10.0'dan önce AGP 9.x'in gelecekteki bir sürümünde yerleşik Kotlin'i devre dışı bırakamayacağınız için yerleşik Kotlin'e geçmenizi hatırlatan bir uyarı gösterilir.
Modül modül taşıma
android.builtInKotlin
Gradle özelliği, AGP'yi uyguladığınız tüm modüllerinizde yerleşik Kotlin'i etkinleştirmenize veya devre dışı bırakmanıza olanak tanır.
Tüm modüllerinizi tek seferde taşımak zor geliyorsa modülleri teker teker taşıyabilirsiniz:
android.builtInKotlin = false
dosyasındagradle.properties
değerini ayarlayarak tüm modüller için yerleşik Kotlin'i devre dışı bırakın.Mevcut Android Gradle eklentinizle aynı sürümü kullanarak yerleşik Kotlin'i etkinleştirmek istediğiniz modüle
com.android.experimental.built-in-kotlin
eklentisini uygulayın.Bu modülü yerleşik Kotlin'e taşımak için önceki taşıma adımlarını uygulayın.
Tüm modüllerinizi taşıdıktan sonra
gradle.properties
içindekiandroid.builtInKotlin = false
ayarını ve derleme dosyalarınızdakicom.android.experimental.built-in-kotlin
eklentisini kaldırın.