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 موجود، این مراحل را دنبال کنید:
پلاگین ها را در کاتالوگ نسخه اعلام کنید. فایل 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" }
اعلان پلاگین را در فایل ساخت ریشه اعمال کنید. فایل
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 }
افزونه را در فایل ساخت ماژول کتابخانه 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) }
هدف 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.) ... }
اعمال تغییرات پس از اعمال افزونه و پیکربندی بلوک
kotlin
، پروژه Gradle خود را برای اعمال تغییرات همگام کنید.
برای شما توصیه می شود
- توجه: وقتی جاوا اسکریپت خاموش است، متن پیوند نمایش داده می شود
- محیط خود را تنظیم کنید
- ماژول KMP را به پروژه اضافه کنید