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

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

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

أصبح Kapt الآن في وضع الصيانة، وننصح بالانتقال من Kapt إلى KSP حيثما أمكن ذلك. في معظم الحالات، يتطلب هذا النقل إجراء تغييرات فقط على إعدادات إصدار مشروعك.

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

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

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

مراجع إضافية