Trình bổ trợ Android cho Gradle 9.0 giới thiệu tính năng hỗ trợ Kotlin tích hợp và bật tính năng này theo mặc định. Điều đó có nghĩa là bạn không cần áp dụng trình bổ trợ org.jetbrains.kotlin.android
(hoặc kotlin-android
) trong các tệp bản dựng để biên dịch tệp nguồn Kotlin nữa.
Với Kotlin tích hợp, các tệp bản dựng của bạn sẽ đơn giản hơn và bạn có thể tránh được các vấn đề về khả năng tương thích giữa AGP và trình bổ trợ kotlin-android
.
Bật Kotlin tích hợp
Bạn cần AGP 9.0 trở lên để có chế độ hỗ trợ Kotlin tích hợp.
AGP 9.0 đã bật Kotlin tích hợp cho tất cả các mô-đun mà bạn áp dụng AGP, vì vậy, bạn không cần làm gì để bật Kotlin. Tuy nhiên, nếu trước đây bạn đã chọn không sử dụng Kotlin tích hợp bằng cách đặt android.builtInKotlin=false
trong tệp gradle.properties
, thì bạn cần xoá chế độ cài đặt đó hoặc đặt android.builtInKotlin=true
để bật chế độ này.
Kotlin tích hợp yêu cầu bạn thực hiện một số thay đổi đối với dự án của mình. Vì vậy, sau khi bật Kotlin tích hợp, hãy làm theo các bước tiếp theo để di chuyển dự án.
Các bước di chuyển
Sau khi nâng cấp dự án từ phiên bản AGP cũ lên AGP 9.0 hoặc sau khi bạn tự bật Kotlin tích hợp, bạn có thể thấy thông báo lỗi sau:
Failed to apply plugin 'org.jetbrains.kotlin.android'.
> Cannot add extension with name 'kotlin', as there is an extension already registered with that name.
...hoặc
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.
Đó là do Kotlin tích hợp sẵn yêu cầu bạn thực hiện một số thay đổi đối với dự án của mình. Để giải quyết lỗi này, hãy thực hiện các bước sau.
- Xoá trình bổ trợ
kotlin-android
- Di chuyển trình bổ trợ
kotlin-kapt
nếu cần - Di chuyển khối
kotlinOptions{}
nếu cần
1. Xoá trình bổ trợ kotlin-android
Xoá trình bổ trợ org.jetbrains.kotlin.android
(hoặc kotlin-android
) khỏi các tệp bản dựng cấp mô-đun mà bạn áp dụng.
Đoạn mã chính xác cần xoá phụ thuộc vào việc bạn có đang sử dụng danh mục phiên bản để khai báo trình bổ trợ hay không.
Có danh mục phiên bản
Kotlin
// Module-level build file plugins {alias(libs.plugins.kotlin.android)}
Groovy
// Module-level build file plugins {alias(libs.plugins.kotlin.android)}
Không có danh mục phiên bản
Kotlin
// Module-level build file plugins {id("org.jetbrains.kotlin.android")}
Groovy
// Module-level build file plugins {id 'org.jetbrains.kotlin.android'}
Sau đó, hãy xoá trình bổ trợ khỏi tệp bản dựng cấp cao nhất:
Có danh mục phiên bản
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}
Không có danh mục phiên bản
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}
Nếu bạn đang sử dụng danh mục phiên bản, hãy xoá định nghĩa trình bổ trợ khỏi tệp TOML của danh mục phiên bản (thường là gradle/libs.versions.toml
):
[plugins]kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "KOTLIN_VERSION" }
2. Di chuyển trình bổ trợ kotlin-kapt
nếu cần
Nếu bạn đang sử dụng org.jetbrains.kotlin.kapt
(hoặc kotlin-kapt
) trong các tệp bản dựng, thì trình bổ trợ này sẽ không tương thích với Kotlin tích hợp. Bạn cần thay thế trình bổ trợ này bằng trình bổ trợ com.android.legacy-kapt
, sử dụng cùng phiên bản với trình bổ trợ Android Gradle hiện tại.
Ví dụ: với danh mục phiên bản, hãy cập nhật tệp TOML danh mục phiên bản như sau:
[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" }
Sau đó, hãy cập nhật tệp bản dựng:
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. Di chuyển khối kotlinOptions{}
nếu cần
Nếu đang sử dụng DSL android.kotlinOptions{}
, bạn cần di chuyển DSL này sang DSL kotlin.compilerOptions{}
.
Ví dụ: hãy cập nhật mã này:
Kotlin
android { kotlinOptions { languageVersion = "2.0" jvmTarget = "11" } }
Groovy
android { kotlinOptions { languageVersion = "2.0" jvmTarget = "11" } }
...sang DSL mới:
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 } }
Báo cáo vấn đề
Sau khi hoàn tất các bước trước đó, nếu bạn gặp vấn đề, hãy xem các vấn đề đã biết trong phần mô tả của vấn đề #438678642 và gửi ý kiến phản hồi cho chúng tôi nếu cần.
Chọn không sử dụng Kotlin tích hợp
Nếu không thể di chuyển dự án để sử dụng Kotlin tích hợp, hãy đặt android.builtInKotlin = false
trong tệp gradle.properties
để tạm thời tắt Kotlin tích hợp.
Khi đó, bản dựng sẽ cho thấy một cảnh báo nhắc bạn di chuyển sang Kotlin tích hợp vì bạn sẽ không thể tắt Kotlin tích hợp trong phiên bản AGP 9.x trong tương lai trước AGP 10.0.
Di chuyển theo từng mô-đun
Thuộc tính android.builtInKotlin
của Gradle cho phép bạn bật hoặc tắt Kotlin tích hợp cho tất cả các mô-đun mà bạn áp dụng AGP.
Nếu gặp khó khăn khi di chuyển tất cả các mô-đun cùng một lúc, bạn có thể di chuyển từng mô-đun một:
Đặt
android.builtInKotlin = false
trong tệpgradle.properties
để tắt Kotlin tích hợp cho tất cả các mô-đun.Áp dụng trình bổ trợ
com.android.experimental.built-in-kotlin
cho mô-đun mà bạn muốn bật Kotlin tích hợp, sử dụng cùng phiên bản với trình bổ trợ Android cho Gradle hiện tại.Thực hiện các bước di chuyển trước đó để di chuyển mô-đun này sang Kotlin tích hợp.
Sau khi bạn di chuyển tất cả các mô-đun, hãy xoá chế độ cài đặt
android.builtInKotlin = false
tronggradle.properties
và trình bổ trợcom.android.experimental.built-in-kotlin
trong các tệp bản dựng.