KMP এর জন্য Android Gradle Library Plugin সেট আপ করুন

com.android.kotlin.multiplatform.library Gradle প্লাগইন হল Kotlin Multiplatform (KMP) লাইব্রেরি মডিউলে একটি অ্যান্ড্রয়েড টার্গেট যোগ করার জন্য আনুষ্ঠানিকভাবে সমর্থিত টুল। এটি প্রকল্পের কনফিগারেশনকে সহজ করে, বিল্ড কর্মক্ষমতা উন্নত করে এবং অ্যান্ড্রয়েড স্টুডিওর সাথে আরও ভাল ইন্টিগ্রেশন অফার করে।

KMP ডেভেলপমেন্টের জন্য com.android.library প্লাগইন ব্যবহার করা Android Gradle Plugin API গুলির উপর নির্ভর করে যেগুলি অপ্রচলিত এবং Android Gradle plugin 9.0 এবং উচ্চতর (Q4 2025) অপ্ট-ইন করার প্রয়োজন । এই API গুলি Android Gradle plugin 10.0 (2026 সালের দ্বিতীয়ার্ধে) থেকে সরানো হবে বলে আশা করা হচ্ছে

এই প্লাগইনটি প্রয়োগ করতে, "Apply the Android-KMP plugin" বিভাগটি দেখুন। যদি আপনার লিগ্যাসি API গুলি থেকে মাইগ্রেট করার প্রয়োজন হয়, তাহলে মাইগ্রেশন গাইডটি দেখুন।

মূল বৈশিষ্ট্য এবং পার্থক্য

অ্যান্ড্রয়েড-কেএমপি প্লাগইনটি বিশেষভাবে কেএমপি প্রকল্পের জন্য তৈরি করা হয়েছে এবং বেশ কয়েকটি গুরুত্বপূর্ণ দিক থেকে স্ট্যান্ডার্ড com.android.library প্লাগইন থেকে আলাদা:

  • একক বৈকল্পিক আর্কিটেকচার: প্লাগইনটি একটি একক বৈকল্পিক ব্যবহার করে, পণ্যের স্বাদ এবং বিল্ড প্রকারের জন্য সমর্থন সরিয়ে দেয়, যা কনফিগারেশনকে সহজ করে এবং বিল্ড কর্মক্ষমতা উন্নত করে।

  • KMP-এর জন্য অপ্টিমাইজ করা: প্লাগইনটি KMP লাইব্রেরির জন্য ডিজাইন করা হয়েছে, শেয়ার্ড কোটলিন কোড এবং ইন্টারঅপারেবিলিটির উপর ফোকাস করে, অ্যান্ড্রয়েড-নির্দিষ্ট নেটিভ বিল্ড, AIDL এবং রেন্ডারস্ক্রিপ্টের জন্য সমর্থন বাদ দেয়।

  • ডিফল্টরূপে পরীক্ষা নিষ্ক্রিয় করা হয়েছে: বিল্ড গতি বাড়ানোর জন্য ইউনিট এবং ডিভাইস (যন্ত্র) উভয় পরীক্ষাই ডিফল্টরূপে নিষ্ক্রিয় করা আছে। প্রয়োজনে আপনি এগুলি সক্ষম করতে পারেন।

  • কোনও শীর্ষ-স্তরের অ্যান্ড্রয়েড এক্সটেনশন নেই: কনফিগারেশনটি গ্র্যাডেল কেএমপি ডিএসএল-এর মধ্যে একটি androidLibrary ব্লকের মাধ্যমে পরিচালিত হয়, যা একটি সামঞ্জস্যপূর্ণ কেএমপি প্রকল্প কাঠামো বজায় রাখে। কোনও শীর্ষ-স্তরের android এক্সটেনশন ব্লক নেই।

  • অপ্ট-ইন জাভা কম্পাইলেশন: জাভা কম্পাইলেশন ডিফল্টরূপে অক্ষম থাকে। এটি সক্রিয় করতে androidLibrary ব্লকে withJava() ব্যবহার করুন। এটি যখন জাভা কম্পাইলেশনের প্রয়োজন হয় না তখন বিল্ড টাইম উন্নত করে।

অ্যান্ড্রয়েড-কেএমপি লাইব্রেরি প্লাগইনের সুবিধা

KMP প্রকল্পগুলির জন্য Android-KMP প্লাগইন নিম্নলিখিত সুবিধাগুলি প্রদান করে:

  • উন্নত বিল্ড কর্মক্ষমতা এবং স্থিতিশীলতা: এটি KMP প্রকল্পের মধ্যে অপ্টিমাইজড বিল্ড গতি এবং বর্ধিত স্থিতিশীলতার জন্য তৈরি করা হয়েছে। এটি KMP কর্মপ্রবাহের উপর দৃষ্টি নিবদ্ধ করে আরও দক্ষ এবং নির্ভরযোগ্য বিল্ড প্রক্রিয়ায় অবদান রাখে।

  • উন্নত IDE ইন্টিগ্রেশন: এটি KMP অ্যান্ড্রয়েড লাইব্রেরির সাথে কাজ করার সময় আরও ভাল কোড সমাপ্তি, নেভিগেশন, ডিবাগিং এবং সামগ্রিক ডেভেলপার অভিজ্ঞতা প্রদান করে।

  • সরলীকৃত প্রকল্প কনফিগারেশন: প্লাগইনটি বিল্ড ভেরিয়েন্টের মতো অ্যান্ড্রয়েড-নির্দিষ্ট জটিলতাগুলি সরিয়ে KMP প্রকল্পগুলির জন্য কনফিগারেশনকে সহজ করে তোলে। এর ফলে আরও পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য বিল্ড ফাইল তৈরি হয়। পূর্বে, KMP প্রকল্পে com.android.library প্লাগইন ব্যবহার করলে androidAndroidTest এর মতো বিভ্রান্তিকর উৎস সেট নাম তৈরি হতে পারে। স্ট্যান্ডার্ড KMP প্রকল্প কাঠামোর সাথে পরিচিত ডেভেলপারদের জন্য এই নামকরণের প্রথাটি কম স্বজ্ঞাত ছিল।

অ্যান্ড্রয়েড-কেএমপি লাইব্রেরি প্লাগইনে জ্ঞাত সমস্যা

নতুন com.android.kotlin.multiplatform.library প্লাগইনটি প্রয়োগ করার সময় যেসব সমস্যা দেখা দিতে পারে, সেগুলি হল:

পূর্বশর্ত

com.android.kotlin.multiplatform.library প্লাগইন ব্যবহার করার জন্য, আপনার প্রকল্পটি নিম্নলিখিত ন্যূনতম সংস্করণ বা উচ্চতর সংস্করণ দিয়ে কনফিগার করা আবশ্যক:

  • অ্যান্ড্রয়েড গ্রেডল প্লাগইন (এজিপি) : ৮.১০.০
  • কোটলিন গ্রেডল প্লাগইন (কেজিপি) : 2.0.0

একটি বিদ্যমান মডিউলে Android-KMP প্লাগইন প্রয়োগ করুন

বিদ্যমান KMP লাইব্রেরি মডিউলে Android-KMP প্লাগইন প্রয়োগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. ভার্সন ক্যাটালগে প্লাগইন ঘোষণা করুন। ভার্সন ক্যাটালগ TOML ফাইলটি খুলুন (সাধারণত gradle/libs.versions.toml ) এবং প্লাগইন সংজ্ঞা বিভাগটি যোগ করুন:

    # To check the version number of the latest Kotlin release, go to
    # https://kotlinlang.org/docs/releases.html
    
    [versions]
    androidGradlePlugin = "8.13.0"
    kotlin = "KOTLIN_VERSION"
    
    [plugins]
    kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
    android-kotlin-multiplatform-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "androidGradlePlugin" }
    
  2. রুট বিল্ড ফাইলে প্লাগইন ঘোষণাটি প্রয়োগ করুন। আপনার প্রকল্পের রুট ডিরেক্টরিতে অবস্থিত build.gradle.kts ফাইলটি খুলুন। apply false ব্যবহার করে plugins ব্লকে প্লাগইন উপনামগুলি যুক্ত করুন। এর ফলে প্লাগইন উপনামগুলি রুট প্রকল্পে প্লাগইন লজিক প্রয়োগ না করেই সমস্ত সাবপ্রজেক্টের জন্য উপলব্ধ হয়।

    কোটলিন

    // Root build.gradle.kts file
    
    plugins {
       alias(libs.plugins.kotlin.multiplatform) apply false
    
       // Add the following
       alias(libs.plugins.android.kotlin.multiplatform.library) apply false
    }

    খাঁজকাটা

    // Root build.gradle file
    
    plugins {
       alias(libs.plugins.kotlin.multiplatform) apply false
    
       // Add the following
       alias(libs.plugins.android.kotlin.multiplatform.library) apply false
    }
  3. KMP লাইব্রেরি মডিউল বিল্ড ফাইলে প্লাগইনটি প্রয়োগ করুন। আপনার KMP লাইব্রেরি মডিউলে build.gradle.kts ফাইলটি খুলুন এবং plugins ব্লকের মধ্যে আপনার ফাইলের শীর্ষে প্লাগইনটি প্রয়োগ করুন:

    কোটলিন

    // Module-specific build.gradle.kts file
    
    plugins {
       alias(libs.plugins.kotlin.multiplatform)
    
       // Add the following
       alias(libs.plugins.android.kotlin.multiplatform.library)
    }

    খাঁজকাটা

    // Module-specific build.gradle file
    
    plugins {
       alias(libs.plugins.kotlin.multiplatform)
    
       // Add the following
       alias(libs.plugins.android.kotlin.multiplatform.library)
    }
  4. অ্যান্ড্রয়েড কেএমপি টার্গেট কনফিগার করুন। অ্যান্ড্রয়েড টার্গেট নির্ধারণ করতে কোটলিন মাল্টিপ্ল্যাটফর্ম ব্লক ( kotlin ) কনফিগার করুন। kotlin ব্লকের মধ্যে, androidLibrary ব্যবহার করে অ্যান্ড্রয়েড টার্গেট নির্দিষ্ট করুন:

    কোটলিন

    kotlin {
       androidLibrary {
           namespace = "com.example.kmpfirstlib"
           compileSdk = 33
           minSdk = 24
    
           withJava() // enable java compilation support
           withHostTestBuilder {}.configure {}
           withDeviceTestBuilder {
               sourceSetTreeName = "test"
           }
    
           compilations.configureEach {
               compilerOptions.configure {
                   jvmTarget.set(
                       org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8
                   )
               }
           }
       }
    
       sourceSets {
           androidMain {
               dependencies {
                   // Add Android-specific dependencies here
               }
           }
           getByName("androidHostTest") {
               dependencies {
               }
           }
    
           getByName("androidDeviceTest") {
               dependencies {
               }
           }
       }
       // ... other targets (JVM, iOS, etc.) ...
    }

    খাঁজকাটা

    kotlin {
       androidLibrary {
           namespace = "com.example.kmpfirstlib"
           compileSdk = 33
           minSdk = 24
    
           withJava() // enable java compilation support
           withHostTestBuilder {}.configure {}
           withDeviceTestBuilder {
               it.sourceSetTreeName = "test"
           }
    
           compilations.configureEach {
               compilerOptions.options.jvmTarget.set(
                   org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8
               )
           }
       }
    
       sourceSets {
           androidMain {
               dependencies {
               }
           }
           androidHostTest {
               dependencies {
               }
           }
           androidDeviceTest {
               dependencies {
               }
           }
       }
       // ... other targets (JVM, iOS, etc.) ...
    }
  5. পরিবর্তনগুলি প্রয়োগ করুন। প্লাগইনটি প্রয়োগ এবং kotlin ব্লক কনফিগার করার পরে, পরিবর্তনগুলি প্রয়োগ করতে আপনার গ্র্যাডেল প্রকল্পটি সিঙ্ক করুন।

লিগ্যাসি প্লাগইন থেকে মাইগ্রেট করুন

এই নির্দেশিকাটি আপনাকে লিগ্যাসি com.android.library প্লাগইন থেকে com.android.kotlin.multiplatform.library প্লাগইনে স্থানান্তর করতে সাহায্য করবে।

১. নির্ভরতা ঘোষণা করা

একটি সাধারণ কাজ হল অ্যান্ড্রয়েড-নির্দিষ্ট সোর্স সেটের জন্য নির্ভরতা ঘোষণা করা। নতুন প্লাগইনটির জন্য এগুলিকে স্পষ্টভাবে sourceSets ব্লকের মধ্যে স্থাপন করা প্রয়োজন, পূর্বে ব্যবহৃত সাধারণ dependencies ব্লকের বিপরীতে।

অ্যান্ড্রয়েড-কেএমপি

নতুন প্লাগইনটি androidMain সোর্স সেটের মধ্যে অ্যান্ড্রয়েড নির্ভরতাগুলিকে গোষ্ঠীভুক্ত করে একটি পরিষ্কার কাঠামো তৈরি করে। প্রধান সোর্স সেট ছাড়াও, দুটি পরীক্ষামূলক সোর্স সেট রয়েছে, যা চাহিদা অনুসারে তৈরি করা হয়: androidDeviceTest এবং androidHostTest (আরও তথ্যের জন্য কনফিগারিং হোস্ট এবং ডিভাইস পরীক্ষাগুলি দেখুন)।

// build.gradle.kts

kotlin {
    android {}
    //... other targets

    sourceSets {
        commonMain.dependencies {
            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")
        }

        // Dependencies are now scoped to the specific Android source set
        androidMain.dependencies {
            implementation("androidx.appcompat:appcompat:1.7.0")
            implementation("com.google.android.material:material:1.11.0")
        }
    }
}

সোর্স সেটগুলিতে main , deviceTest এবং hostTest নামে সংশ্লিষ্ট কোটলিন সংকলন রয়েছে। সোর্স সেট এবং সংকলনগুলি বিল্ড স্ক্রিপ্টে এইভাবে কনফিগার করা যেতে পারে:

// build.gradle.kts

kotlin {
    androidLibrary {
        compilations.getByName("deviceTest") {
            kotlinOptions.languageVersion = "2.0"
        }
    }
}

লিগ্যাসি প্লাগইন

পুরাতন প্লাগইনের সাহায্যে, আপনি শীর্ষ-স্তরের নির্ভরতা ব্লকে অ্যান্ড্রয়েড-নির্দিষ্ট নির্ভরতা ঘোষণা করতে পারেন, যা কখনও কখনও একটি মাল্টিপ্ল্যাটফর্ম মডিউলে বিভ্রান্তিকর হতে পারে।

// build.gradle.kts

kotlin {
  androidTarget()
  //... other targets
}

// Dependencies for all source sets were often mixed in one block
dependencies {
  // Common dependencies
  commonMainImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")

  // Android-specific dependencies
  implementation("androidx.appcompat:appcompat:1.7.0")
  implementation("com.google.android.material:material:1.11.0")
}

2. অ্যান্ড্রয়েড রিসোর্স সক্রিয় করা

নতুন প্লাগইনে বিল্ড পারফর্ম্যান্স অপ্টিমাইজ করার জন্য অ্যান্ড্রয়েড রিসোর্সেস ( res ফোল্ডার) এর জন্য সাপোর্ট ডিফল্টরূপে সক্ষম করা নেই। এগুলি ব্যবহার করার জন্য আপনাকে অবশ্যই অপ্ট-ইন করতে হবে। এই পরিবর্তনটি নিশ্চিত করতে সাহায্য করে যে অ্যান্ড্রয়েড-নির্দিষ্ট রিসোর্সের প্রয়োজন নেই এমন প্রকল্পগুলি সংশ্লিষ্ট বিল্ড ওভারহেডের দ্বারা বোঝা না হয়।

অ্যান্ড্রয়েড-কেএমপি

আপনাকে অবশ্যই স্পষ্টভাবে অ্যান্ড্রয়েড রিসোর্স প্রসেসিং সক্ষম করতে হবে। রিসোর্সগুলি src/androidMain/res এ স্থাপন করা উচিত।

// build.gradle.kts

kotlin {
  android {
    // ...
    // Enable Android resource processing
    androidResources {
      enable = true
    }
  }
}

// Project Structure
// └── src
//     └── androidMain
//         └── res
//             ├── values
//             │   └── strings.xml
//             └── drawable
//                 └── icon.xml

লিগ্যাসি প্লাগইন

রিসোর্স প্রসেসিং ডিফল্টরূপে সক্রিয় ছিল। আপনি অবিলম্বে src/main এ একটি res ডিরেক্টরি যোগ করতে পারেন এবং XML ড্রয়েবল, মান ইত্যাদি যোগ করা শুরু করতে পারেন।

// build.gradle.kts

android {
    namespace = "com.example.library"
    compileSdk = 34
    // No extra configuration was needed to enable resources.
}

// Project Structure
// └── src
//     └── main
//         └── res
//             ├── values
//             │   └── strings.xml
//             └── drawable
//                 └── icon.xml

৩. হোস্ট এবং ডিভাইস পরীক্ষা কনফিগার করা

নতুন প্লাগইনের একটি উল্লেখযোগ্য পরিবর্তন হল যে অ্যান্ড্রয়েড হোস্ট-সাইড (ইউনিট) এবং ডিভাইস-সাইড (ইনস্ট্রুমেন্টেড) পরীক্ষাগুলি ডিফল্টরূপে অক্ষম করা আছে । পরীক্ষার উৎস সেট এবং কনফিগারেশন তৈরি করতে আপনাকে স্পষ্টভাবে অপ্ট-ইন করতে হবে, যেখানে পুরানো প্লাগইন স্বয়ংক্রিয়ভাবে এগুলি তৈরি করেছিল।

এই অপ্ট-ইন মডেলটি যাচাই করতে সাহায্য করে যে আপনার প্রকল্পটি এখনও দুর্বল এবং এতে শুধুমাত্র আপনার সক্রিয়ভাবে ব্যবহৃত বিল্ড লজিক এবং সোর্স সেটগুলি অন্তর্ভুক্ত রয়েছে।

অ্যান্ড্রয়েড-কেএমপি

নতুন প্লাগইনে, আপনি kotlin.android ব্লকের ভিতরে পরীক্ষাগুলি সক্ষম এবং কনফিগার করতে পারবেন। এটি সেটআপটিকে আরও স্পষ্ট করে তোলে এবং অব্যবহৃত পরীক্ষার উপাদান তৈরি করা এড়ায়। test উৎস সেটটি androidHostTest হয়ে যায়, এবং androidTest androidDeviceTest হয়ে যায়।

// build.gradle.kts

kotlin {
  android {
    // ...

    // Opt-in to enable and configure host-side (unit) tests
    withHostTest {
      isIncludeAndroidResources = true
    }

    // Opt-in to enable and configure device-side (instrumented) tests
    withDeviceTest {
      instrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
      execution = "ANDROIDX_TEST_ORCHESTRATOR"
    }
  }
}

// Project Structure (After Opt-in)
// └── src
//     ├── androidHostTest
//     └── androidDeviceTest

লিগ্যাসি প্লাগইন

com.android.library প্লাগইনের সাহায্যে, test এবং androidTest সোর্স সেটগুলি ডিফল্টভাবে তৈরি করা হত। আপনি সাধারণত testOptions DSL ব্যবহার করে android ব্লকের ভিতরে তাদের আচরণ কনফিগার করতে পারেন।

// build.gradle.kts

android {
  defaultConfig {
    // Runner was configured in defaultConfig
    testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
  }

  testOptions {
    // Configure unit tests (for the 'test' source set)
    unitTests.isIncludeAndroidResources = true

    // Configure device tests (for the 'androidTest' source set)
    execution = "ANDROIDX_TEST_ORCHESTRATOR"
  }
}

// Project Structure (Defaults)
// └── src
//     ├── test
//     └── androidTest

৪. জাভা সোর্স কম্পাইলেশন সক্ষম করুন

যদি আপনার KMP লাইব্রেরির অ্যান্ড্রয়েড টার্গেটের জন্য জাভা সোর্স কম্পাইল করার প্রয়োজন হয়, তাহলে নতুন প্লাগইন দিয়ে আপনাকে স্পষ্টভাবে এই কার্যকারিতাটি সক্ষম করতে হবে। মনে রাখবেন যে এটি আপনার প্রোজেক্টের মধ্যে সরাসরি অবস্থিত জাভা ফাইলগুলির জন্য কম্পাইলেশন সক্ষম করে, এর নির্ভরতার জন্য নয়। জাভা এবং কোটলিন কম্পাইলারের JVM টার্গেট সংস্করণ সেট করার পদ্ধতিও পরিবর্তিত হয়।

অ্যান্ড্রয়েড-কেএমপি

আপনাকে withJava() কল করে জাভা কম্পাইলেশনে অপ্ট-ইন করতে হবে। আরও একীভূত সেটআপের জন্য JVM টার্গেট এখন সরাসরি kotlin { androidLibrary {} } ব্লকের ভিতরে কনফিগার করা হয়েছে। এখানে jvmTarget সেট করা অ্যান্ড্রয়েড টার্গেটের জন্য Kotlin এবং Java কম্পাইলেশন উভয়ের ক্ষেত্রেই প্রযোজ্য।

// build.gradle.kts

kotlin {
  android {
    //  Opt-in to enable Java source compilation
    withJava()
    // Configure the JVM target for both Kotlin and Java sources
    compilerOptions {
      jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8)
    }
  }
  // ...
}

// Project Structure:
// └── src
//     └── androidMain
//         ├── kotlin
//         │   └── com/example/MyKotlinClass.kt
//         └── java
//             └── com.example/MyJavaClass.java

লিগ্যাসি প্লাগইন

জাভা কম্পাইলেশন ডিফল্টরূপে সক্রিয় ছিল। জাভা এবং কোটলিন উভয় উৎসের জন্য JVM টার্গেটটি compileOptions ব্যবহার করে অ্যান্ড্রয়েড ব্লকে সেট করা হয়েছিল।

// build.gradle.kts

android {
  // ...
  compileOptions {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
  }
}

kotlin {
  androidTarget {
    compilations.all {
      kotlinOptions.jvmTarget = "1.8"
    }
  }
}

৫. androidComponents ব্যবহার করে বিল্ড ভেরিয়েন্টের সাথে ইন্টারঅ্যাক্ট করুন

androidComponents এক্সটেনশনটি এখনও প্রোগ্রাম্যাটিকভাবে বিল্ড আর্টিফ্যাক্টের সাথে ইন্টারঅ্যাক্ট করার জন্য উপলব্ধ। যদিও Variant API এর বেশিরভাগ অংশ একই থাকে, নতুন AndroidKotlinMultiplatformVariant ইন্টারফেসটি আরও সীমিত কারণ প্লাগইনটি শুধুমাত্র একটি একক ভেরিয়েন্ট তৈরি করে।

ফলস্বরূপ, বিল্ডের ধরণ এবং পণ্যের স্বাদ সম্পর্কিত বৈশিষ্ট্যগুলি আর ভেরিয়েন্ট অবজেক্টে উপলব্ধ নেই।

অ্যান্ড্রয়েড-কেএমপি

onVariants ব্লকটি এখন একটি একক ভেরিয়েন্টের মাধ্যমে পুনরাবৃত্তি হয়। আপনি এখনও name এবং artifacts মতো সাধারণ বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারবেন, কিন্তু বিল্ড-টাইপ-নির্দিষ্ট বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারবেন না।

// build.gradle.kts

androidComponents {
  onVariants { variant ->
      val artifacts = variant.artifacts
  }
}

লিগ্যাসি প্লাগইন

একাধিক ভেরিয়েন্টের সাহায্যে, আপনি কাজগুলি কনফিগার করার জন্য বিল্ড-টাইপ-নির্দিষ্ট বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারেন।

// build.gradle.kts

androidComponents {
  onVariants(selector().withBuildType("release")) { variant ->
    // ...
  }
}

৬. অ্যান্ড্রয়েড লাইব্রেরি নির্ভরতার ধরণ নির্বাচন করুন

আপনার KMP লাইব্রেরি অ্যান্ড্রয়েডের জন্য একটি মাত্র ভেরিয়েন্ট তৈরি করে। তবে, আপনি একটি স্ট্যান্ডার্ড অ্যান্ড্রয়েড লাইব্রেরির ( com.android.library ) উপর নির্ভর করতে পারেন যার একাধিক ভেরিয়েন্ট রয়েছে (যেমন, free/paid পণ্যের স্বাদ)। আপনার প্রকল্পটি সেই নির্ভরতা থেকে একটি ভেরিয়েন্ট কীভাবে নির্বাচন করে তা নিয়ন্ত্রণ করা একটি সাধারণ প্রয়োজন।

অ্যান্ড্রয়েড-কেএমপি

নতুন প্লাগইনটি kotlin.android.localDependencySelection ব্লকের মধ্যে এই যুক্তিটিকে কেন্দ্রীভূত এবং স্পষ্ট করে তোলে। এটি আপনার একক-ভেরিয়েন্ট KMP লাইব্রেরির জন্য কোন বহিরাগত নির্ভরতার রূপগুলি নির্বাচন করা হবে তা আরও স্পষ্ট করে তোলে।

// build.gradle.kts
kotlin {
  android {
    localDependencySelection {
      // For dependencies with multiple build types, select 'debug' first, and 'release' in case 'debug' is missing
      selectBuildTypeFrom.set(listOf("debug", "release"))

      // For dependencies with a 'type' flavor dimension...
      productFlavorDimension("type") {
        // ...select the 'typeone' flavor.
        selectFrom.set(listOf("typeone"))
      }
    }
  }
}

লিগ্যাসি প্লাগইন

আপনি buildTypes and productFlavors ব্লকের ভিতরে নির্ভরতা নির্বাচন কৌশলগুলি কনফিগার করেছেন। এর মধ্যে প্রায়শই missingDimensionStrategy ব্যবহার করে আপনার লাইব্রেরিতে নেই এমন একটি মাত্রার জন্য একটি ডিফল্ট ফ্লেভার প্রদান করা, অথবা একটি নির্দিষ্ট ফ্লেভারের মধ্যে matchingFallbacks একটি অনুসন্ধান ক্রম নির্ধারণ করা জড়িত।

API ব্যবহারের আরও বিস্তারিত তথ্যের জন্য "Resolve Matching Errors" দেখুন।

প্লাগইন API রেফারেন্স

নতুন প্লাগইনটির API সারফেস com.android.library থেকে আলাদা। নতুন DSL এবং ইন্টারফেস সম্পর্কে বিস্তারিত তথ্যের জন্য, API রেফারেন্সগুলি দেখুন:

{% অক্ষরে অক্ষরে %} {% এন্ডভারব্যাটিম %} {% অক্ষরে অক্ষরে %} {% এন্ডভারব্যাটিম %}