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

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

পূর্ববর্তী পদ্ধতিটি এখন প্লাগইনের পক্ষে অবহেলিত হয়েছে, এটিকে Android-KMP প্লাগইনও বলা হয়। KMP-এর জন্য com.android.library প্লাগইন ব্যবহার চালিয়ে যাওয়া জেটব্রেইন দ্বারা আর সমর্থিত হবে না এবং ভবিষ্যতের আপডেট এবং উন্নতি থেকে উপকৃত হবে না।

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

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

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

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

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

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

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

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

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

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

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

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

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

পূর্বশর্ত

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

  • অ্যান্ড্রয়েড গ্রেডল প্লাগইন (এজিপি) : 8.10.0
  • Kotlin Gradle Plugin (KGP) : 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.12.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. Android KMP লক্ষ্য কনফিগার করুন। অ্যান্ড্রয়েড লক্ষ্য নির্ধারণ করতে Kotlin মাল্টিপ্ল্যাটফর্ম ব্লক ( kotlin ) কনফিগার করুন। kotlin ব্লকের মধ্যে, androidLibrary ব্যবহার করে Android লক্ষ্য নির্দিষ্ট করুন:

    কোটলিন

    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 প্লাগইন-এ স্থানান্তর করতে সাহায্য করে।

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

একটি সাধারণ কাজ হল অ্যান্ড্রয়েড-নির্দিষ্ট উৎস সেটগুলির জন্য নির্ভরতা ঘোষণা করা। নতুন প্লাগইনের জন্য এগুলিকে 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 ফোল্ডার) এর জন্য সমর্থন ডিফল্টরূপে সক্রিয় করা হয় না৷ সেগুলি ব্যবহার করার জন্য আপনাকে অবশ্যই অপ্ট-ইন করতে হবে৷ এই পরিবর্তনটি নিশ্চিত করতে সাহায্য করে যে প্রকল্পগুলির জন্য Android-নির্দিষ্ট সংস্থানগুলির প্রয়োজন নেই সংশ্লিষ্ট বিল্ড ওভারহেড দ্বারা বোঝা না হয়৷

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

আপনাকে অবশ্যই স্পষ্টভাবে Android রিসোর্স প্রক্রিয়াকরণ সক্ষম করতে হবে। সম্পদ 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

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

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

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

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

নতুন প্লাগইনে, আপনি 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

4. জাভা উৎস সংকলন সক্ষম করুন

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

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

withJava() কল করে আপনাকে অবশ্যই জাভা সংকলনে অপ্ট-ইন করতে হবে। আরও ইউনিফাইড সেটআপের জন্য JVM টার্গেট এখন সরাসরি kotlin { androidLibrary {} } ব্লকের ভিতরে কনফিগার করা হয়েছে। এখানে jvmTarget সেট করা Android টার্গেটের জন্য 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 লক্ষ্য কম্পাইল অপশন ব্যবহার করে অ্যান্ড্রয়েড ব্লকে সেট করা হয়েছিল।

// build.gradle.kts

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

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

5. 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 ->
    // ...
  }
}

6. অ্যান্ড্রয়েড লাইব্রেরি নির্ভরতার রূপগুলি নির্বাচন করুন৷

আপনার KMP লাইব্রেরি Android এর জন্য একটি একক বৈকল্পিক তৈরি করে। যাইহোক, আপনি একটি স্ট্যান্ডার্ড অ্যান্ড্রয়েড লাইব্রেরির উপর নির্ভর করতে পারেন ( 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 ব্যবহার সম্পর্কে আরও বিশদ তথ্যের জন্য ম্যাচিং ত্রুটিগুলি সমাধান করুন দেখুন৷

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

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

{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}