অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৯.০ বিল্ট-ইন কোটলিন সাপোর্ট চালু করে এবং ডিফল্টভাবে এটি সক্ষম করে। এর অর্থ হল কোটলিন সোর্স ফাইলগুলি কম্পাইল করার জন্য আপনাকে আর আপনার বিল্ড ফাইলগুলিতে org.jetbrains.kotlin.android
(অথবা kotlin-android
) প্লাগইন প্রয়োগ করতে হবে না। বিল্ট-ইন কোটলিনের সাহায্যে, আপনার বিল্ড ফাইলগুলি সহজতর হয় এবং আপনি AGP এবং kotlin-android
প্লাগইনের মধ্যে সামঞ্জস্যের সমস্যা এড়াতে পারেন।
বিল্ট-ইন কোটলিন সক্ষম করুন
বিল্ট-ইন কোটলিন সাপোর্ট পেতে আপনার AGP 9.0 বা তার উচ্চতর সংস্করণের প্রয়োজন। AGP 9.0 ইতিমধ্যেই আপনার সমস্ত মডিউলের জন্য বিল্ট-ইন কোটলিন সক্ষম করে যেখানে আপনি AGP প্রয়োগ করেন, তাই এটি সক্ষম করার জন্য আপনাকে কিছু করার প্রয়োজন নেই। তবে, যদি আপনি পূর্বে gradle.properties
ফাইলে android.builtInKotlin=false
সেট করে বিল্ট-ইন কোটলিন থেকে বেরিয়ে আসেন , তাহলে আপনাকে হয় সেই সেটিংটি সরিয়ে ফেলতে হবে অথবা android.builtInKotlin=true
সেট করতে হবে।
বিল্ট-ইন কোটলিনের জন্য আপনার প্রোজেক্টে কিছু পরিবর্তন প্রয়োজন, তাই বিল্ট-ইন কোটলিন সক্ষম করার পরে, আপনার প্রোজেক্টটি স্থানান্তর করার জন্য পরবর্তী পদক্ষেপগুলি অনুসরণ করুন।
মাইগ্রেশনের ধাপগুলি
আপনার প্রকল্পটি পুরোনো 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-android
প্লাগইনটি সরান - প্রয়োজনে
kotlin-kapt
প্লাগইনটি মাইগ্রেট করুন - প্রয়োজনে
kotlinOptions{}
ব্লকটি স্থানান্তর করুন।
১. kotlin-android
প্লাগইনটি সরান
মডিউল-স্তরের বিল্ড ফাইল থেকে org.jetbrains.kotlin.android
(অথবা kotlin-android
) প্লাগইনটি সরিয়ে ফেলুন যেখানে আপনি এটি প্রয়োগ করবেন। কোন কোডটি সরাতে হবে তা নির্ভর করে আপনি প্লাগইন ঘোষণা করার জন্য সংস্করণ ক্যাটালগ ব্যবহার করছেন কিনা তার উপর।
সংস্করণ ক্যাটালগ সহ
কোটলিন
// Module-level build file plugins {alias(libs.plugins.kotlin.android)}
খাঁজকাটা
// Module-level build file plugins {alias(libs.plugins.kotlin.android)}
কোনও সংস্করণ ক্যাটালগ নেই
কোটলিন
// Module-level build file plugins {id("org.jetbrains.kotlin.android")}
খাঁজকাটা
// Module-level build file plugins {id 'org.jetbrains.kotlin.android'}
তারপর, আপনার শীর্ষ-স্তরের বিল্ড ফাইল থেকে প্লাগইনটি সরিয়ে ফেলুন:
সংস্করণ ক্যাটালগ সহ
কোটলিন
// Top-level build file plugins {alias(libs.plugins.kotlin.android) apply false}
খাঁজকাটা
// Top-level build file plugins {alias(libs.plugins.kotlin.android) apply false}
কোনও সংস্করণ ক্যাটালগ নেই
কোটলিন
// Top-level build file plugins {id("org.jetbrains.kotlin.android") version "KOTLIN_VERSION" apply false}
খাঁজকাটা
// 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 এর সাথে সামঞ্জস্যপূর্ণ হবে না। আমরা আপনাকে আপনার প্রকল্পটি KSP এ স্থানান্তর করার পরামর্শ দিচ্ছি।
তবে, যদি আপনি এখনও KSP ব্যবহার করার জন্য প্রস্তুত না হন, তাহলে আপনার বর্তমান Android Gradle প্লাগইনের মতো একই সংস্করণ ব্যবহার করে kotlin-kapt
প্লাগইনটি com.android.legacy-kapt
প্লাগইন দিয়ে প্রতিস্থাপন করতে হবে।
উদাহরণস্বরূপ, সংস্করণ ক্যাটালগের সাথে, আপনার সংস্করণ ক্যাটালগ 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" }
তারপর, আপনার বিল্ড ফাইলগুলি আপডেট করুন:
কোটলিন
// Top-level build file plugins { alias(libs.plugins.legacy.kapt) apply falsealias(libs.plugins.kotlin.kapt) apply false}
খাঁজকাটা
// Top-level build file plugins { alias(libs.plugins.legacy.kapt) apply falsealias(libs.plugins.kotlin.kapt) apply false}
কোটলিন
// Module-level build file plugins { alias(libs.plugins.legacy.kapt)alias(libs.plugins.kotlin.kapt)}
খাঁজকাটা
// Module-level build file plugins { alias(libs.plugins.legacy.kapt)alias(libs.plugins.kotlin.kapt)}
৩. প্রয়োজনে kotlinOptions{}
ব্লকটি মাইগ্রেট করুন।
যদি আপনি android.kotlinOptions{}
DSL ব্যবহার করেন, তাহলে আপনাকে এটি kotlin.compilerOptions{}
DSL-এ স্থানান্তর করতে হবে।
উদাহরণস্বরূপ, এই কোডটি আপডেট করুন:
কোটলিন
android { kotlinOptions { languageVersion = "2.0" jvmTarget = "11" } }
খাঁজকাটা
android { kotlinOptions { languageVersion = "2.0" jvmTarget = "11" } }
...নতুন DSL-এর কাছে:
কোটলিন
kotlin { compilerOptions { languageVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0 // Optional: Set jvmTarget // jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11 } }
খাঁজকাটা
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 এর বিবরণে জ্ঞাত সমস্যাগুলি পর্যালোচনা করুন এবং প্রয়োজনে আমাদের প্রতিক্রিয়া জানান।
বিল্ট-ইন কোটলিন থেকে বেরিয়ে আসুন
যদি আপনি আপনার প্রোজেক্টকে বিল্ট-ইন কোটলিন ব্যবহারে মাইগ্রেট করতে না পারেন, তাহলে gradle.properties
ফাইলে android.builtInKotlin = false
সেট করে সাময়িকভাবে এটি নিষ্ক্রিয় করুন। যখন আপনি এটি করবেন, তখন বিল্ডটি আপনাকে বিল্ট-ইন কোটলিনে মাইগ্রেট করার কথা মনে করিয়ে দেবে কারণ আপনি AGP 10.0 এর আগে AGP 9.x এর ভবিষ্যতের সংস্করণে বিল্ট-ইন কোটলিন নিষ্ক্রিয় করতে পারবেন না।
একবার আপনি আপনার প্রকল্পটি স্থানান্তর করার জন্য প্রস্তুত হয়ে গেলে, বিল্ট-ইন কোটলিন ( নতুন DSL সহ) সক্ষম করুন এবং স্থানান্তরের ধাপগুলি অনুসরণ করুন।
মডিউল-বাই-মডিউল মাইগ্রেশন
android.builtInKotlin
Gradle প্রপার্টি আপনাকে আপনার সমস্ত মডিউলের জন্য বিল্ট-ইন Kotlin সক্ষম বা নিষ্ক্রিয় করতে দেয় যেখানে আপনি AGP প্রয়োগ করেন।
যদি একসাথে সব মডিউল মাইগ্রেট করা চ্যালেঞ্জিং হয়, তাহলে আপনি একবারে একটি মডিউল মাইগ্রেট করতে পারেন:
সকল মডিউলের জন্য বিল্ট-ইন কোটলিন নিষ্ক্রিয় করতে
gradle.properties
ফাইলেandroid.builtInKotlin = false
সেট করুন।আপনার বর্তমান অ্যান্ড্রয়েড গ্রেডল প্লাগইনের মতো একই সংস্করণ ব্যবহার করে, আপনি যে মডিউলে বিল্ট-ইন কোটলিন সক্ষম করতে চান তাতে
com.android.experimental.built-in-kotlin
প্লাগইনটি প্রয়োগ করুন।এই মডিউলটি বিল্ট-ইন কোটলিনে স্থানান্তর করতে পূর্ববর্তী মাইগ্রেশন ধাপগুলি অনুসরণ করুন।
আপনার সমস্ত মডিউল স্থানান্তরিত হয়ে গেলে,
gradle.properties
থেকেandroid.builtInKotlin = false
সেটিংটি এবং আপনার বিল্ড ফাইল থেকেcom.android.experimental.built-in-kotlin
প্লাগইনটি সরিয়ে ফেলুন।