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