Android Gradle प्लग इन 9.0 में, Kotlin के लिए पहले से मौजूद सहायता की सुविधा जोड़ी गई है. साथ ही, इसे डिफ़ॉल्ट रूप से चालू किया गया है. इसका मतलब है कि अब आपको Kotlin सोर्स फ़ाइलों को कंपाइल करने के लिए, अपनी बिल्ड फ़ाइलों में org.jetbrains.kotlin.android
(या kotlin-android
) प्लगिन लागू करने की ज़रूरत नहीं है.
Kotlin पहले से मौजूद होने की वजह से, आपकी बिल्ड फ़ाइलें आसान होती हैं. साथ ही, AGP और kotlin-android
प्लगिन के बीच कंपैटिबिलिटी से जुड़ी समस्याओं से बचा जा सकता है.
Kotlin को चालू करना
Kotlin के साथ काम करने के लिए, आपको AGP 9.0 या इसके बाद के वर्शन की ज़रूरत होगी.
AGP 9.0 में, उन सभी मॉड्यूल के लिए Kotlin पहले से ही चालू होती है जिनमें AGP लागू किया जाता है. इसलिए, इसे चालू करने के लिए आपको कुछ भी करने की ज़रूरत नहीं है. हालांकि, अगर आपने gradle.properties
फ़ाइल में android.builtInKotlin=false
सेट करके, पहले से मौजूद Kotlin का इस्तेमाल बंद कर दिया था, तो आपको इस सेटिंग को हटाना होगा या इसे चालू करने के लिए android.builtInKotlin=true
सेट करना होगा.
Kotlin के बिल्ट-इन वर्शन का इस्तेमाल करने के लिए, आपको अपने प्रोजेक्ट में कुछ बदलाव करने होंगे. इसलिए, Kotlin के बिल्ट-इन वर्शन को चालू करने के बाद, अपने प्रोजेक्ट को माइग्रेट करने के लिए अगले चरण पूरे करें.
माइग्रेशन के चरण
अपने प्रोजेक्ट को AGP के पुराने वर्शन से AGP 9.0 या इसके बाद के वर्शन पर अपग्रेड करने के बाद, आपको यह गड़बड़ी का मैसेज दिख सकता है. इसके अलावा, बिल्ट-इन Kotlin को मैन्युअल तरीके से चालू करने के बाद भी यह मैसेज दिख सकता है:
Failed to apply plugin 'org.jetbrains.kotlin.android'.
> Cannot add extension with name 'kotlin', as there is an extension already registered with that name.
...या
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.
ऐसा इसलिए है, क्योंकि Kotlin में पहले से मौजूद सुविधा के लिए, आपको अपने प्रोजेक्ट में कुछ बदलाव करने होंगे. इस गड़बड़ी को ठीक करने के लिए, यह तरीका अपनाएं.
kotlin-android
प्लगिन हटाना- अगर ज़रूरी हो, तो
kotlin-kapt
प्लगिन को माइग्रेट करें - अगर ज़रूरी हो, तो
kotlinOptions{}
ब्लॉक को माइग्रेट करें
1. kotlin-android
प्लगिन हटाना
org.jetbrains.kotlin.android
(या kotlin-android
) प्लगिन को मॉड्यूल-लेवल की उन बिल्ड फ़ाइलों से हटाएं जहां आपने इसे लागू किया है.
प्लगिन हटाने के लिए इस्तेमाल किया जाने वाला कोड, इस बात पर निर्भर करता है कि प्लगिन के बारे में जानकारी देने के लिए वर्शन कैटलॉग का इस्तेमाल किया जा रहा है या नहीं.
वर्शन कैटलॉग के साथ
Kotlin
// Module-level build file plugins {alias(libs.plugins.kotlin.android)}
Groovy
// Module-level build file plugins {alias(libs.plugins.kotlin.android)}
कोई वर्शन कैटलॉग नहीं है
Kotlin
// Module-level build file plugins {id("org.jetbrains.kotlin.android")}
Groovy
// Module-level build file plugins {id 'org.jetbrains.kotlin.android'}
इसके बाद, प्लगिन को सबसे ऊपर लेवल की बिल्ड फ़ाइल से हटाएं:
वर्शन कैटलॉग के साथ
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}
कोई वर्शन कैटलॉग नहीं है
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}
अगर वर्शन कैटलॉग का इस्तेमाल किया जा रहा है, तो प्लगिन डेफ़िनिशन को वर्शन कैटलॉग की TOML फ़ाइल (आम तौर पर gradle/libs.versions.toml
) से भी हटाएं:
[plugins]kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "KOTLIN_VERSION" }
2. अगर ज़रूरी हो, तो kotlin-kapt
प्लगिन माइग्रेट करें
अगर आपने अपनी बिल्ड फ़ाइलों में org.jetbrains.kotlin.kapt
(या kotlin-kapt
) का इस्तेमाल किया है, तो यह प्लगिन, Kotlin में पहले से मौजूद सुविधाओं के साथ काम नहीं करेगा. आपको इस प्लगिन को com.android.legacy-kapt
प्लगिन से बदलना होगा. इसके लिए, Android Gradle प्लगिन के मौजूदा वर्शन का इस्तेमाल करें.
उदाहरण के लिए, वर्शन कैटलॉग की मदद से, वर्शन कैटलॉग की TOML फ़ाइल को इस तरह अपडेट करें:
[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" }
इसके बाद, अपनी बिल्ड फ़ाइलें अपडेट करें:
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. अगर ज़रूरी हो, तो kotlinOptions{}
ब्लॉक को माइग्रेट करें
अगर android.kotlinOptions{}
डीएसएल का इस्तेमाल किया जा रहा है, तो आपको इसे kotlin.compilerOptions{}
डीएसएल पर माइग्रेट करना होगा.
उदाहरण के लिए, इस कोड को अपडेट करें:
Kotlin
android { kotlinOptions { languageVersion = "2.0" jvmTarget = "11" } }
Groovy
android { kotlinOptions { languageVersion = "2.0" jvmTarget = "11" } }
...को नए डीएसएल में बदलें:
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 } }
समस्याओं की शिकायत करें
ऊपर दिए गए चरणों को पूरा करने के बाद, अगर आपको कोई समस्या आती है, तो समस्या #438678642 के ब्यौरे में जाकर, ज्ञात समस्याएं देखें. अगर ज़रूरी हो, तो हमें सुझाव/राय दें या शिकायत करें.
Kotlin के बिल्ट-इन वर्शन से ऑप्ट आउट करना
अगर आपको अपने प्रोजेक्ट को माइग्रेट करने में समस्या आ रही है, ताकि बिल्ट-इन Kotlin का इस्तेमाल किया जा सके, तो gradle.properties
फ़ाइल में android.builtInKotlin = false
सेट करें. इससे बिल्ट-इन Kotlin को कुछ समय के लिए बंद किया जा सकेगा.
ऐसा करने पर, बिल्ड में एक चेतावनी दिखेगी. इसमें आपको बिल्ट-इन Kotlin पर माइग्रेट करने के लिए कहा जाएगा. ऐसा इसलिए, क्योंकि AGP 10.0 से पहले, AGP 9.x के आने वाले वर्शन में बिल्ट-इन Kotlin को बंद नहीं किया जा सकेगा.
मॉड्यूल के हिसाब से माइग्रेशन
android.builtInKotlin
Gradle प्रॉपर्टी की मदद से, उन सभी मॉड्यूल के लिए बिल्ट-इन Kotlin को चालू या बंद किया जा सकता है जहां AGP लागू किया जाता है.
अगर आपको एक साथ सभी मॉड्यूल माइग्रेट करने में मुश्किल हो रही है, तो एक-एक करके मॉड्यूल माइग्रेट किए जा सकते हैं:
सभी मॉड्यूल के लिए, पहले से मौजूद Kotlin को बंद करने के लिए,
gradle.properties
फ़ाइल मेंandroid.builtInKotlin = false
सेट करें.जिस मॉड्यूल में आपको Kotlin को पहले से उपलब्ध कराना है उस पर
com.android.experimental.built-in-kotlin
प्लग इन लागू करें. इसके लिए, Android Gradle प्लग इन के मौजूदा वर्शन का इस्तेमाल करें.इस मॉड्यूल को Kotlin में माइग्रेट करने के लिए, माइग्रेशन के पिछले चरण पूरे करें.
सभी मॉड्यूल माइग्रेट करने के बाद,
gradle.properties
मेंandroid.builtInKotlin = false
सेटिंग और अपनी बिल्ड फ़ाइलों मेंcom.android.experimental.built-in-kotlin
प्लगिन हटाएं.