يسمح لك Kapt (أداة معالجة التعليقات التوضيحية في Kotlin) باستخدام معالجات تعليقات Java التوضيحية مع رمز Kotlin، حتى إذا لم تكن هذه المعالِجات متوافقة مع لغة Kotlin. يتم ذلك عن طريق إنشاء رموز جافا من ملفات Kotlin التي يمكن للمعالجات قراءتها. يُعد إنشاء الكعب هذا عملية مكلفة وله تأثير كبير على سرعة الإنشاء.
إنّ KSP (معالجة رموز Kotlin) هو البديل الأول بلغة البرمجة Kotlin. ويحلِّل KSP رمز Kotlin مباشرةً، وهو أسرع بمقدار يصل إلى الضعف. كما أن لديها فهمًا أفضل تركيبات لغة Kotlin.
أصبح Kapt الآن في وضع الصيانة، وننصح بالانتقال من Kapt إلى KSP حيثما أمكن ذلك. في معظم الحالات، يتطلب هذا النقل إجراء تغييرات فقط على إعدادات إصدار مشروعك.
يمكنكم تشغيل kapt وKSP جنبًا إلى جنب في مشروعك أثناء النقل، ويمكن إجراء النقل وحدة تلو الأخرى، ثم في مكتبة حسب المكتبة.
في ما يلي نظرة عامة على خطوات نقل البيانات:
- التحقق من المكتبات التي تستخدمها للحصول على دعم برنامج KSP
- إضافة المكون الإضافي لبرنامج KSP إلى مشروعك
- استبدال معالجات التعليقات التوضيحية بـ KSP
- إزالة المكون الإضافي kapt
التحقق من المكتبات التي تستخدمها للحصول على دعم برنامج KSP
للبدء، تحقق مما إذا كانت المكتبات التي تستخدمها مع kapt تدعم بالفعل KSP. وينطبق هذا الأمر على العديد من المكتبات المعروفة (بما في ذلك Dagger وGlide وRoom وMoshi)، وهناك مكتبات أخرى تضيف الدعم.
يمكنك الاطّلاع على قائمة المكتبات المتوافقة في المستندات، أو مراجعة المستندات وأداة تتبّع المشاكل في المكتبات التي تستخدمها.
إضافة المكون الإضافي لبرنامج KSP إلى مشروعك
أولاً، يجب تحديد المكوّن الإضافي لنظام KSP في ملف build.gradle.kts
ذي المستوى الأعلى.
تأكد من اختيار إصدار KSP متوافق مع إصدار Kotlin لمشروعك. يمكنك العثور على قائمة بالإصدارات على صفحة KSP GitHub.
Kotlin
plugins { id("com.google.devtools.ksp") version "1.8.10-1.0.9" apply false }
رائع
plugins { id 'com.google.devtools.ksp' version '1.8.10-1.0.9' apply false }
بعد ذلك، فعِّل KSP في ملف build.gradle.kts
على مستوى الوحدة:
Kotlin
plugins { id("com.google.devtools.ksp") }
رائع
plugins { id 'com.google.devtools.ksp' }
استبدال معالجات التعليقات التوضيحية بـ KSP
عند تفعيل KSP، يمكنك البدء في استبدال استخدامات kapt بـ KSP. بالنسبة إلى غالبية المكتبات، يتطلب هذا الأمر تغيير kapt إلى KSP في بيان التبعية، حيث تشحن كل من معالج التعليقات التوضيحية ومعالج KSP بنفس العنصر.
Kotlin
dependencies {kapt("androidx.room:room-compiler:2.5.0")ksp("androidx.room:room-compiler:2.5.0") }
رائع
dependencies {kapt 'androidx.room:room-compiler:2.5.0'ksp 'androidx.room:room-compiler:2.5.0' }
وبعد الانتقال إلى برنامج KSP، عليك مزامنة مشروعك وتأسيسه لمعرفة ما إذا كان لا يزال يعمل بشكل صحيح.
بعض المشاكل الشائعة التي يجب الانتباه إليها:
- لا تدعم بعض المكتبات مجموعة الميزات نفسها مع kapt وKSP. إذا انكسر الرمز البرمجي بعد نقل البيانات، راجِع مستندات المكتبة.
- لدى برنامج KSP معلومات أكثر دقة عن نوع Kotlin مقارنةً بـ kapt (على سبيل المثال، حول قابلية القيم الفارغة)، وهذا يعني أن معالِجات البرنامج لكي تكون أكثر دقة في ما يتعلق بمتطلبات النوع. وقد يتطلب ذلك إجراء بعض الإصلاحات في رمز المصدر أيضًا، بالإضافة إلى تحديث ملفات الإصدار.
- إذا سبق لك إرسال الوسيطات إلى معالج التعليقات التوضيحية، فستضطر على الأرجح إلى تمرير هذه الوسيطات إلى برنامج مشاركة التعليقات (KSP) الآن. لاحظ أن تنسيق الوسائط قد يختلف بين kapt وKSP. يمكنك مراجعة وثائق برنامج مشاركة المعلومات (KSP) والاطّلاع على مستندات المكتبة التي تستخدمها للحصول على مزيد من المعلومات.
إزالة المكون الإضافي kapt
عندما لا تكون لديك تبعيات مضمنة مع kapt
في وحدتك بعد الآن،
قم بإزالة المكوِّن الإضافي kapt.
في حال تعريف ذلك في مجموعة من المكوّنات الإضافية:
Kotlin
plugins {id("org.jetbrains.kotlin.kapt")}
رائع
plugins {id 'org.jetbrains.kotlin.kapt'}
إذا كان يستخدم بناء جملة تطبيق المكون الإضافي باستخدام Groovy:
apply plugin: 'kotlin-kapt'
يجب أيضًا إزالة أي إعدادات متبقية متعلقة بخدمة kapt، مثل:
Kotlin
kapt { correctErrorTypes = true useBuildCache = true }
رائع
kapt { correctErrorTypes true useBuildCache true }