في السابق، كانت الطريقة الوحيدة لدمج Android في مشروع KMP هي استخدام
المكوّن الإضافي العادي لنظام Gradle المتوافق مع مكتبة Android: com.android.library
. ومع ذلك، تمّ الآن إيقاف
هذا الأسلوب نهائيًا لصالح المكوّن الإضافي المخصّص
com.android.kotlin.multiplatform.library
، والذي يُشار إليه أيضًا باسم
مكوّن Android-KMP الإضافي. يشرح هذا الدليل كيفية نقل البيانات إلى الإضافة الجديدة.
الميزات الرئيسية والاختلافات
تم تصميم المكوّن الإضافي لنظام التشغيل Android (com.android.kotlin.multiplatform.library
)
خصيصًا لمشاريع KMP، ويختلف عن المكوّن الإضافي التقليدي
com.android.library
في عدة جوانب رئيسية:
- بنية الصيغة الواحدة: يعمل المكوّن الإضافي باستخدام صيغة واحدة، ويؤدي ذلك إلى تبسيط عملية الإنشاء من خلال إزالة التوافق مع أنواع الإصدارات المخصّصة للمنتج وأنواع الإنشاء الشائعة في مشاريع مكتبة Android العادية. وهذا الإجراء يبسّط عملية الإعداد ويُحسّن أداء عملية إنشاء مكتبات KMP Android.
- محسَّن لـ KMP: تم تصميم المكوّن الإضافي خصيصًا لمكتبات Kotlin المتعددة المنصات، مع التركيز على رمز Kotlin المشترَك والتشغيل التفاعلي. ونتيجةً لذلك، لا تتيح هذه الميزة استخدام الإصدارات الأصلية المخصّصة لنظام التشغيل Android وAIDL (لغة تعريف واجهة Android) وRenderScript، والتي لا تتعلّق عادةً بسياق الرمز المشترَك في KMP.
- الاختبارات غير مفعّلة تلقائيًا: لتحسين سرعة الإنشاء في بيئة متعددة المنصات، تكون الاختبارات غير مفعّلة تلقائيًا. يمكنك تحديدًا تفعيل الاختبارات إذا لزم الأمر لمشروعك. وينطبق ذلك على كلّ من الاختبارات على المضيف (اختبارات الوحدة) والاختبارات على الجهاز (اختبارات الأدوات).
- عدم توفّر إضافة Android ذات المستوى الأعلى: لا ينشئ المكوّن الإضافي إضافة
android
ذات مستوى أعلى في ملفات إنشاء Gradle. تتم معالجة الإعداد باستخدام وحدةandroidLibrary
ضمن لغة Kotlin DSL المخصّصة للأنظمة الأساسية المتعددة، مع الحفاظ على هيكل مشروع KMP متّسق. - تفعيل ميزة تجميع Java: لا تكون ميزة تجميع Java مفعّلة تلقائيًا. إذا كانت مكتبة KMP تحتاج إلى تجميع رمز برمجي يستند إلى Java، عليك تفعيلها صراحةً باستخدام واجهة برمجة التطبيقات
withJava()
ضمن كتلة الإعداداتandroidLibrary
في كتلةkotlin
. يتيح ذلك التحكّم بشكل أدق في عملية الترجمة compiling ويمكن أن يُحسِّن أوقات التصميم عندما لا يكون ترجمة الرمز البرمجي المستنِد إلى Java مطلوبة.
مزايا نقل البيانات
يوفّر المكوّن الإضافي لنظام Android-KMP المزايا التالية لمشاريع KMP:
- تحسين أداء عملية الإنشاء وثباتها: تم تصميم المكوّن الإضافي لـ Android-KMP لتحسين سرعات الإنشاء وتعزيز الثبات في مشاريع KMP. تساهم بنيته المبسّطة وتركيزه على سير عمل "إدارة الأداء في التسويق" في توفير عملية إنشاء أكثر فعالية وموثوقية.
- دمج محسّن لواجهة بيئة التطوير المتكاملة: يقدّم المكوّن الإضافي عملية دمج ممتازة مع IDE لأجل IDE وKotlin الأخرى. ويؤدي ذلك إلى تحسين إكمال الرموز البرمجية، والتنقّل، وتصحيح الأخطاء، وتجربة المطوّر بشكل عام عند العمل مع مكتبات KMP Android.
- إعداد المشروع المبسّط: من خلال إزالة الصعوبات المتعلّقة بنظام Android، مثل الأسعار المتغيرة، يسهّل المكوّن الإضافي لنظام Android-KMP عملية الإعداد لمشاريع KMP. ويؤدي ذلك إلى إنشاء ملفات إنشاء أكثر وضوحًا وسهولة في الصيانة، وإلى تقليل منحنى التعلّم للمطوّرين الجدد في مجال تطوير تطبيقات Android باستخدام KMP.
في السابق، عند دمج Android في مشروع KMP باستخدام المكوّن الإضافي
com.android.library
، كان التفاعل بين المكوّن الإضافي لنظام Gradle المتوافق مع Android والمكوّن الإضافي لنظام Gradle المتوافق مع Kotlin ضمن بنية الأنظمة الأساسية المتعددة يؤدي في بعض الأحيان إلى ظهور أسماء مضلِّلة لمجموعات المصادر. على سبيل المثال، تم تسمية مجموعة المصادر المخصّصة لضبط اختبارات Android المزوّدة بأدوات قياسandroidAndroidTest
. كان نظام التسمية هذا أقل سهولة للمطوّرين الملمّين بتصاميم مشاريع KMP العادية. - الحلّ الرسمي والمُقترَح: المكوّن الإضافي
com.android.kotlin.multiplatform.library
هو البديل الرسمي للطريقة السابقة لإضافة استهدافات Android إلى مكتبات KMP باستخدام المكوّن الإضافيcom.android.library
. لن تعود شركة JetBrains توفّر الدعم لاستخدام المكوّنcom.android.library
الإضافي في KMP، ولن تستفيد من التحديثات والتحسينات المستقبلية.
تطبيق المكوّن الإضافي Android-KMP على مشروع
هناك طريقتان أساسيتان لتطبيق المكوّن الإضافي لـ Android-KMP على مشروعك: * بالنسبة إلى وحدات مكتبة KMP الحالية، يمكنك تعديل ملفات Gradle يدويًا. * بالنسبة إلى وحدات مكتبة KMP الجديدة، يمكنك إنشاء الوحدة الجديدة مباشرةً من واجهة مستخدم "استوديو Android".
تطبيق المكوّن الإضافي على وحدة حالية
لتطبيق المكوّن الإضافي Android-KMP على وحدة مكتبة KMP حالية، اتّبِع الخطوات التالية:
افتح ملف TOML الخاص بقائمة الإصدارات وأضِف ما يلي إلى القسم
plugins
:[plugins] kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "KOTLIN_PLUGIN_VERSION" } android-kotlin-multiplatform-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "ANDROID_KMP_PLUGIN_VERSION" }
استبدِل KOTLIN_PLUGIN_VERSION و ANDROID_KMP_PLUGIN_VERSION بالإصدارَين الحاليَين اللذَين تستخدمهما.
افتح ملف
build.gradle.kts
(Kotlin) أوbuild.gradle
(Groovy) في ملف ملف ملف ملف جذر وحدة مكتبة KMP.طبِّق المكوّن الإضافي في أعلى ملفك ضمن العنصر
plugins
:Kotlin
plugins { alias(libs.plugins.kotlin.multiplatform) apply false // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) apply false }
رائع
plugins { alias(libs.plugins.kotlin.multiplatform) apply false // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) apply false }
اضبط كتلة Kotlin Multiplatform (
kotlin
) لتحديد هدف Android. ضمن العنصرkotlin
، حدِّد هدف Android باستخدامandroidLibrary
: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.) ... }
بعد تطبيق المكوّن الإضافي وضبط مجموعة
kotlin
، يمكنك مزامنة مشروع Gradle لتطبيق التغييرات.
إنشاء وحدة جديدة باستخدام المكوّن الإضافي
يمكنك أيضًا إنشاء وحدة مكتبة Kotlin Multiplatform جديدة مباشرةً في IDE Android Studio. يؤدي ذلك إلى تطبيق المكوّنات الإضافية اللازمة تلقائيًا، بما في ذلك المكوّن الإضافي Android-KMP. للحصول على مزيد من الإرشادات حول كيفية إنشاء ملف برمجي جديد لنظام KMP أو وحدة باستخدام Android Studio، اطّلِع على مقالة إضافة Kotlin Multiplatform إلى مشروع حالي.
لمزيد من المعلومات حول المنظومة المتكاملة الشاملة للأنظمة الأساسية المتعددة والإعدادات المتقدّمة، اطّلِع على مستندات Kotlin Multiplatform الرسمية.