অন্তর্নির্মিত কোটলিনে স্থানান্তর করুন

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0 বিল্ট-ইন কোটলিন সমর্থন প্রবর্তন করে এবং এটি ডিফল্টরূপে সক্ষম করে। তার মানে কোটলিন সোর্স ফাইল কম্পাইল করার জন্য আপনাকে আর আপনার বিল্ড ফাইলে 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.

কারণ বিল্ট-ইন কোটলিনের জন্য আপনাকে আপনার প্রকল্পে কিছু পরিবর্তন করতে হবে। এই ত্রুটিটি সমাধান করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন।

  1. kotlin-android প্লাগইন সরান
  2. প্রয়োজনে kotlin-kapt প্লাগইন মাইগ্রেট করুন
  3. প্রয়োজনে kotlinOptions{} ব্লক মাইগ্রেট করুন

1. 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-এর সাথে সামঞ্জস্যপূর্ণ হবে না। আপনার বর্তমান অ্যান্ড্রয়েড গ্রেডল প্লাগইনের মতো একই সংস্করণ ব্যবহার করে আপনাকে এই প্লাগইনটি 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 definition
kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "KOTLIN_VERSION" }

তারপর, আপনার বিল্ড ফাইল আপডেট করুন:

কোটলিন

// Top-level build file
plugins {
    alias(libs.plugins.legacy.kapt) apply false
    alias(libs.plugins.kotlin.kapt) apply false
}

গ্রোভি

// Top-level build file
plugins {
    alias(libs.plugins.legacy.kapt) apply false
    alias(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)
}

3. প্রয়োজনে kotlinOptions{} ব্লক মাইগ্রেট করুন

আপনি যদি android.kotlinOptions{} DSL ব্যবহার করেন, তাহলে আপনাকে এটিকে kotlin.compilerOptions{} DSL-এ স্থানান্তর করতে হবে।

উদাহরণস্বরূপ, এই কোড আপডেট করুন:

কোটলিন

android {
    kotlinOptions {
        languageVersion = "2.0"
        jvmTarget = "11"
    }
}

গ্রোভি

android {
    kotlinOptions {
        languageVersion = "2.0"
        jvmTarget = "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
    }
}

গ্রোভি

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 ব্যবহার করার জন্য আপনার প্রকল্প স্থানান্তর করতে অক্ষম হন, তাহলে অন্তর্নির্মিত Kotlin অস্থায়ীভাবে নিষ্ক্রিয় করতে gradle.properties ফাইলে android.builtInKotlin = false সেট করুন। আপনি যখন এটি করেন, বিল্ডটি আপনাকে বিল্ট-ইন কোটলিনে স্থানান্তরিত করার জন্য একটি সতর্কতা দেখায় কারণ আপনি AGP 10.0 এর আগে AGP 9.x এর ভবিষ্যতের সংস্করণে বিল্ট-ইন Kotlin অক্ষম করতে পারবেন না।

মডিউল-বাই-মডিউল মাইগ্রেশন

android.builtInKotlin Gradle সম্পত্তি আপনাকে আপনার সমস্ত মডিউলের জন্য বিল্ট-ইন Kotlin সক্ষম বা নিষ্ক্রিয় করতে দেয় যেখানে আপনি AGP প্রয়োগ করেন৷

যদি একবারে আপনার সমস্ত মডিউল স্থানান্তর করা চ্যালেঞ্জিং হয়, আপনি একবারে একটি মডিউল স্থানান্তর করতে পারেন:

  1. সমস্ত মডিউলের জন্য বিল্ট-ইন কোটলিন নিষ্ক্রিয় করতে gradle.properties ফাইলে android.builtInKotlin = false সেট করুন।

  2. আপনার বর্তমান অ্যান্ড্রয়েড গ্রেডল প্লাগইনের মতো একই সংস্করণ ব্যবহার করে আপনি বিল্ট-ইন কোটলিন সক্ষম করতে চান এমন মডিউলটিতে com.android.experimental.built-in-kotlin প্লাগইনটি প্রয়োগ করুন।

  3. এই মডিউলটি অন্তর্নির্মিত Kotlin-এ স্থানান্তর করতে পূর্ববর্তী মাইগ্রেশন পদক্ষেপগুলি সম্পাদন করুন৷

  4. একবার আপনি আপনার সমস্ত মডিউল স্থানান্তরিত করার পরে, আপনার বিল্ড ফাইলগুলিতে android.builtInKotlin = gradle.propertiesandroid.builtInKotlin = false সেটিং এবং com.android.experimental.built-in-kotlin প্লাগইন সরিয়ে ফেলুন।