نقل البيانات من 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 على GitHub.

Kotlin

plugins {
    id("com.google.devtools.ksp") version "2.3.4" apply false
}

Groovy

plugins {
    id 'com.google.devtools.ksp' version '2.3.4' apply false
}

بعد ذلك، فعِّل KSP في ملف build.gradle.kts على مستوى الوحدة:

Kotlin

plugins {
    id("com.google.devtools.ksp")
}

Groovy

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")
}

Groovy

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 الآن. يُرجى العِلم أنّ تنسيق وسيطات KSP قد يختلف عن تنسيق وسيطات kapt. لمزيد من المعلومات، يمكنك الاطّلاع على مستندات KSP ومراجعة مستندات المكتبة التي تستخدمها.

إزالة المكوّن الإضافي kapt

عندما لا يكون لديك أي تبعيات مضمّنة مع kapt في الوحدة، عليك إزالة مكوّن kapt الإضافي.

إذا تم الإعلان عنه في قسم المكوّنات الإضافية:

Kotlin

plugins {
    id("org.jetbrains.kotlin.kapt")
}

Groovy

plugins {
    id 'org.jetbrains.kotlin.kapt'
}

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

apply plugin: 'kotlin-kapt'

يجب أيضًا إزالة أي إعدادات متبقية ذات صلة بـ kapt، مثل:

Kotlin


kapt {
    correctErrorTypes = true
    useBuildCache = true
}

Groovy


kapt {
    correctErrorTypes true
    useBuildCache true
}

مراجع إضافية