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

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

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

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

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

  1. التحقّق من المكتبات التي تستخدمها للتوافق مع KSP
  2. إضافة المكوّن الإضافي KSP إلى مشروعك
  3. استبدال معالجات التعليقات التوضيحية بـ KSP
  4. إزالة المكوّن الإضافي 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
}

مراجع إضافية