Android-KMP लाइब्रेरी प्लगिन पर माइग्रेट करना

Kotlin Multiplatform में, लाइब्रेरी मॉड्यूल को कॉन्फ़िगर करने के लिए Gradle प्लगिन होता है.

com.android.kotlin.multiplatform.library प्लगिन, KMP लाइब्रेरी में Android टारगेट जोड़ने के पिछले तरीके का आधिकारिक तौर पर विकल्प है. इसके लिए, सामान्य Android लाइब्रेरी Gradle प्लगिन (com.android.library) का इस्तेमाल किया जाता था.

अब प्लगिन का इस्तेमाल किया जाता है. इसे Android-KMP प्लगिन भी कहा जाता है. JetBrains, KMP के लिए com.android.library प्लगिन का इस्तेमाल जारी रखने की सुविधा नहीं देगा. साथ ही, आपको आने वाले समय में होने वाले अपडेट और सुधारों का फ़ायदा नहीं मिलेगा.

इस प्लगिन पर माइग्रेट करने के लिए, Android-KMP प्लगिन लागू करें सेक्शन देखें.

मुख्य सुविधाएं और अंतर

Android-KMP प्लगिन को खास तौर पर KMP प्रोजेक्ट के लिए बनाया गया है. यह कई मामलों में, स्टैंडर्ड com.android.library प्लगिन से अलग है:

  • सिंगल वैरिएंट आर्किटेक्चर: यह प्लगिन, एक ही वैरिएंट का इस्तेमाल करता है. इससे प्रॉडक्ट फ़्लेवर और बिल्ड टाइप के लिए सहायता हट जाती है. इससे कॉन्फ़िगरेशन आसान हो जाता है और बिल्ड की परफ़ॉर्मेंस बेहतर हो जाती है.

  • KMP के लिए ऑप्टिमाइज़ किया गया: इस प्लगइन को KMP लाइब्रेरी के लिए डिज़ाइन किया गया है. इसमें शेयर किए गए Kotlin कोड और इंटरोऑपरेबिलिटी पर फ़ोकस किया गया है. साथ ही, इसमें Android के लिए खास तौर पर बनाए गए नेटिव बिल्ड, AIDL, और RenderScript के लिए सहायता शामिल नहीं है.

  • डिफ़ॉल्ट रूप से बंद की गई जांचें: बिल्ड की स्पीड को बेहतर बनाने के लिए, यूनिट और डिवाइस (इंस्ट्रुमेंटेशन), दोनों तरह की जांचें डिफ़ॉल्ट रूप से बंद होती हैं. अगर ज़रूरी हो, तो इन्हें चालू किया जा सकता है.

  • कोई टॉप-लेवल Android एक्सटेंशन नहीं: कॉन्फ़िगरेशन को Gradle KMP DSL में मौजूद androidLibrary ब्लॉक से मैनेज किया जाता है. इससे KMP प्रोजेक्ट का स्ट्रक्चर एक जैसा बना रहता है. android के टॉप-लेवल एक्सटेंशन पर कोई रोक नहीं है.

  • Java कंपाइलेशन के लिए ऑप्ट-इन करें: Java कंपाइलेशन डिफ़ॉल्ट रूप से बंद होता है. इसे चालू करने के लिए, androidLibrary ब्लॉक में withJava() का इस्तेमाल करें. इससे Java कंपाइलेशन की ज़रूरत न होने पर, बिल्ड के समय में सुधार होता है.

Android-KMP लाइब्रेरी प्लगिन के फ़ायदे

Android-KMP प्लगिन, KMP प्रोजेक्ट के लिए ये फ़ायदे देता है:

  • बिल्ड की परफ़ॉर्मेंस और स्थिरता को बेहतर बनाया गया है: इसे KMP प्रोजेक्ट में, बिल्ड की स्पीड को ऑप्टिमाइज़ करने और स्थिरता को बेहतर बनाने के लिए डिज़ाइन किया गया है. यह KMP वर्कफ़्लो पर फ़ोकस करता है. इससे, ज़्यादा बेहतर और भरोसेमंद तरीके से बिल्ड प्रोसेस पूरी की जा सकती है.

  • बेहतर IDE इंटिग्रेशन: यह KMP Android लाइब्रेरी के साथ काम करते समय, कोड को अपने-आप पूरा होने, नेविगेशन, डीबग करने, और डेवलपर के अनुभव को बेहतर बनाता है.

  • प्रोजेक्ट को आसानी से कॉन्फ़िगर करना: यह प्लगिन, KMP प्रोजेक्ट को आसानी से कॉन्फ़िगर करने में मदद करता है. इसके लिए, यह Android से जुड़ी जटिलताओं को दूर करता है. जैसे, बिल्ड वैरिएंट. इससे, बिल्ड फ़ाइलें ज़्यादा व्यवस्थित और रखरखाव में आसान हो जाती हैं. पहले, KMP प्रोजेक्ट में com.android.library प्लगिन का इस्तेमाल करने पर, सोर्स सेट के नाम गलत हो सकते थे. जैसे, androidAndroidTest. नाम रखने का यह तरीका, स्टैंडर्ड KMP प्रोजेक्ट स्ट्रक्चर के बारे में जानने वाले डेवलपर के लिए कम सहज था.

किसी मौजूदा मॉड्यूल पर 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 ब्लॉक में जोड़ें. इससे प्लगइन के एलियास, सभी सबप्रोजेक्ट के लिए उपलब्ध हो जाते हैं. इसके लिए, प्लगइन के लॉजिक को रूट प्रोजेक्ट पर लागू करने की ज़रूरत नहीं होती.

    Kotlin

    // 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 ब्लॉक में अपनी फ़ाइल के सबसे ऊपर प्लगिन लागू करें:

    Kotlin

    // 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 टारगेट को कॉन्फ़िगर करें. Android टारगेट तय करने के लिए, Kotlin Multiplatform ब्लॉक (kotlin) को कॉन्फ़िगर करें. kotlin ब्लॉक में, androidLibrary का इस्तेमाल करके Android टारगेट तय करें:

    Kotlin

    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 ब्लॉक को कॉन्फ़िगर करने के बाद, बदलाव लागू करने के लिए अपने Gradle प्रोजेक्ट को सिंक करें.