מעבר מ-kapt ל-KSP

המעבר הזה דורש רק שינויים בהגדרות הבנייה של הפרויקט.

Kapt (הכלי לעיבוד הערות של Kotlin) מאפשר לכם להשתמש במעבדי הערות של Java עם קוד Kotlin, גם אם למעבדים האלה אין תמיכה ספציפית ב-Kotlin. הפעולה הזו מתבצעת על ידי יצירת קובצי stub של Java מקובצי Kotlin, שהמעבדים יכולים לקרוא. יצירת ה-stub היא פעולה יקרה שמשפיעה באופן משמעותי על מהירות הבנייה.

KSP (Kotlin Symbol Processing) היא חלופה שמתמקדת ב-Kotlin ל-kapt. ‫KSP מנתח קוד Kotlin ישירות, ולכן הוא מהיר פי 2. הוא גם מבין טוב יותר את מבני השפה של 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, מסנכרנים את הפרויקט ומבצעים build כדי לבדוק אם הוא עדיין פועל בצורה תקינה.

ריכזנו כאן כמה בעיות נפוצות שכדאי לבדוק:

  • חלק מהספריות לא תומכות באותה קבוצה בדיוק של תכונות עם kapt ו-KSP. אם הקוד נשבר אחרי ההעברה, כדאי לעיין במסמכי התיעוד של הספרייה.
  • ל-KSP יש מידע מדויק יותר על סוגי Kotlin מאשר ל-kapt (לדוגמה, לגבי אפשרות קבלת ערך null), מה שאומר שמעבדי KSP יכולים להיות מדויקים יותר לגבי דרישות הסוג. יכול להיות שיהיה צורך לבצע תיקונים בקוד המקור, בנוסף לעדכון קובצי ה-build.
  • אם בעבר העברתם ארגומנטים למעבד ההערות, סביר להניח שתצטרכו להעביר את הארגומנטים האלה ל-KSP עכשיו. שימו לב שהפורמט של הארגומנטים עשוי להיות שונה בין kapt לבין KSP. מידע נוסף זמין במאמרי העזרה של KSP ובמאמרי העזרה של הספרייה שבה אתם משתמשים.

הסרת הפלאגין kapt

אם לא נכללות יותר תלויות ב-kapt במודול, צריך להסיר את הפלאגין kapt.

אם היא הוגדרה בבלוק plugins:

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
}

מקורות מידע נוספים