نقل البيانات من kapt إلى KSP

تتيح لك أداة Kapt (أداة معالجة التعليقات التوضيحية في Kotlin) استخدام معالجات التعليقات التوضيحية في Java مع رمز Kotlin، حتى إذا لم تكن هذه المعالجات متوفّرة مع Kotlin. ويتم ذلك من خلال إنشاء نماذج Java منملفاتك Kotlin التي يمكن للمعالجات قراءتها بعد ذلك. إنّ إنشاء هذه العناصر المصغّرة عملية مكلفة ولها تأثير كبير في سرعة الإنشاء.

KSP (معالجة الرموز في Kotlin) هو بديل برمجي مكتوب بلغة Kotlin لأدوات kapt. يحلّل KSP رمز Kotlin مباشرةً، ما يجعله أسرع مرتين عمّا سبق. ويفهم أيضًا بنية لغة Kotlin بشكل أفضل.

يمكنك تشغيل kapt وKSP جنبًا إلى جنب في مشروعك أثناء عملية نقل البيانات، ويمكن إجراء عملية النقل وحدة تلو الأخرى ومكتبة تلو الأخرى.

في ما يلي نظرة عامة على خطوات نقل البيانات:

  1. التحقّق من المكتبات التي تستخدمها لمعرفة ما إذا كانت متوافقة مع KSP
  2. إضافة مكوّن KSP الإضافي إلى مشروعك
  3. استبدال معالجات التعليقات التوضيحية بـ KSP
  4. إزالة المكوّن الإضافي kapt

التحقّق من المكتبات التي تستخدمها لمعرفة ما إذا كانت متوافقة مع KSP

للبدء، تحقَّق مما إذا كانت المكتبات التي تستخدمها مع kapt متوافقة مع KSP. وينطبق ذلك على العديد من المكتبات الشائعة (بما في ذلك Dagger وGlide وRoom وMoshi)، وتعمل مكتبات أخرى على توفير هذه الميزة.

يمكنك الاطّلاع على قائمة المكتبات المتوافقة في مستندات المساعدة، أو الرجوع إلى مستندات المكتبات التي تستخدمها ونظام تتبُّع المشاكل فيها.

إضافة مكوّن KSP الإضافي إلى مشروعك

أولاً، عليك الإفصاح عن المكوّن الإضافي KSP في ملف build.gradle.kts ذي المستوى الأعلى. احرص على اختيار إصدار KSP متوافق مع إصدار Kotlin في مشروعك. يمكنك العثور على قائمة بالإصدارات على صفحة GitHub الخاصة بـ KSP.

Kotlin

plugins {
    id("com.google.devtools.ksp") version "2.0.21-1.0.27" apply false
}

رائع

plugins {
    id 'com.google.devtools.ksp' version '2.0.21-1.0.27' 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'
}

إذا كان يستخدم بنية تطبيق المكوّن الإضافي باستخدام Groovy:

apply plugin: 'kotlin-kapt'

عليك أيضًا إزالة أي إعدادات متبقية مرتبطة بـ kapt، مثل:

Kotlin


kapt {
    correctErrorTypes = true
    useBuildCache = true
}

رائع


kapt {
    correctErrorTypes true
    useBuildCache true
}

مصادر إضافية