به افزونه کتابخانه Android-KMP مهاجرت کنید

Kotlin Multiplatform دارای یک پلاگین Gradle برای پیکربندی ماژول کتابخانه است.

افزونه com.android.kotlin.multiplatform.library جایگزین رسمی روش قبلی برای افزودن اهداف Android به کتابخانه های KMP با استفاده از پلاگین معمولی کتابخانه اندروید Gradle ( com.android.library ) است.

رویکرد قبلی اکنون به نفع این افزونه منسوخ شده است که به آن افزونه Android-KMP نیز گفته می شود. ادامه استفاده از افزونه com.android.library برای KMP دیگر توسط JetBrains پشتیبانی نمی‌شود و از به‌روزرسانی‌ها و بهبودهای آینده بهره‌مند نخواهد شد.

برای مهاجرت به این افزونه به قسمت Apply the Android-KMP افزونه مراجعه کنید.

ویژگی ها و تفاوت های کلیدی

افزونه Android-KMP به طور خاص برای پروژه های KMP طراحی شده است و از چندین جنبه کلیدی با پلاگین استاندارد com.android.library متفاوت است:

  • معماری تک نوع: این افزونه از یک نوع استفاده می‌کند، که پشتیبانی از طعم‌های محصول و انواع ساخت را حذف می‌کند، که پیکربندی را ساده می‌کند و عملکرد ساخت را افزایش می‌دهد.

  • بهینه‌سازی شده برای KMP: این افزونه برای کتابخانه‌های KMP طراحی شده است، با تمرکز بر روی کد Kotlin مشترک و قابلیت همکاری، پشتیبانی از ساخت‌های بومی خاص اندروید، AIDL و RenderScript را حذف می‌کند.

  • تست‌ها به‌طور پیش‌فرض غیرفعال می‌شوند: تست‌های واحد و دستگاه (دستگاه ابزار دقیق) به‌طور پیش‌فرض غیرفعال هستند تا سرعت ساخت را افزایش دهند. در صورت نیاز می توانید آنها را فعال کنید.

  • بدون برنامه افزودنی اندروید سطح بالا: پیکربندی با یک بلوک androidLibrary در Gradle KMP DSL انجام می شود و ساختار پروژه KMP یکنواخت را حفظ می کند. هیچ بلوک برنامه افزودنی android در سطح بالا وجود ندارد.

  • Opt-in Compilation Java: کامپایل جاوا به طور پیش فرض غیرفعال است. withJava() در بلوک androidLibrary برای فعال کردن آن استفاده کنید. این باعث بهبود زمان‌های ساخت زمانی می‌شود که به کامپایل جاوا نیازی نیست.

مزایای افزونه کتابخانه Android-KMP

افزونه Android-KMP مزایای زیر را برای پروژه های KMP فراهم می کند:

  • عملکرد و پایداری ساخت بهبود یافته: برای سرعت ساخت بهینه و پایداری افزایش یافته در پروژه های KMP مهندسی شده است. تمرکز آن بر گردش کار KMP به فرآیند ساخت کارآمدتر و قابل اعتمادتر کمک می کند.

  • یکپارچه سازی IDE پیشرفته: تکمیل کد، پیمایش، اشکال زدایی و تجربه کلی توسعه دهنده را هنگام کار با کتابخانه های KMP Android فراهم می کند.

  • پیکربندی پروژه ساده شده: این افزونه با حذف پیچیدگی های خاص اندروید مانند انواع ساخت، پیکربندی پروژه های KMP را ساده می کند. این منجر به ساخت فایل های تمیزتر و قابل نگهداری تر می شود. قبلاً، استفاده از افزونه com.android.library در پروژه KMP می‌توانست نام مجموعه منبع گیج‌کننده‌ای مانند androidAndroidTest ایجاد کند. این قرارداد نامگذاری برای توسعه دهندگانی که با ساختارهای استاندارد پروژه KMP آشنا بودند کمتر بصری بود.

افزونه Android-KMP را روی یک ماژول موجود اعمال کنید

برای اعمال افزونه Android-KMP در یک ماژول کتابخانه 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 اعمال کنید. فایل build.gradle.kts را در ماژول کتابخانه KMP خود باز کنید و افزونه را در بالای فایل خود در بلوک 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 ، هدف Android را با استفاده از 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 ، پروژه Gradle خود را برای اعمال تغییرات همگام کنید.

{% کلمه به کلمه %} {% آخر کلمه %} {% کلمه به کلمه %} {% آخر کلمه %}