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