Kapt (เครื่องมือประมวลผลคําอธิบายประกอบ Kotlin) ช่วยให้คุณใช้เครื่องมือประมวลผลคําอธิบายประกอบ Java กับโค้ด Kotlin ได้ แม้ว่าเครื่องมือเหล่านั้นจะไม่รองรับ Kotlin โดยเฉพาะก็ตาม ซึ่งทำได้ด้วยการสร้างสแต็บ Java จากไฟล์ Kotlin ที่ตัวประมวลผลจะอ่านได้ การสร้างสแต็บนี้เป็นการดําเนินการที่สิ้นเปลืองและมีผลกระทบอย่างมากต่อความเร็วในการสร้าง
KSP (การประมวลผลสัญลักษณ์ Kotlin) เป็นทางเลือกสำหรับ 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 เวอร์ชันที่สอดคล้องกับเวอร์ชัน Kotlin ของโปรเจ็กต์ คุณดูรายการรุ่นได้ในหน้า GitHub ของ KSP
Kotlin
plugins { id("com.google.devtools.ksp") version "2.0.21-1.0.27" apply false }
Groovy
plugins { id 'com.google.devtools.ksp' version '2.0.21-1.0.27' 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 (เช่น เกี่ยวกับความจําเป็นในการระบุค่า Null) ซึ่งหมายความว่าตัวประมวลผล KSP จะระบุข้อกําหนดประเภทได้อย่างแม่นยํายิ่งขึ้น ซึ่งอาจต้องมีการแก้ไขซอร์สโค้ดด้วย นอกเหนือจากการอัปเดตไฟล์บิลด์
- หากก่อนหน้านี้คุณส่งอาร์กิวเมนต์ไปยังโปรแกรมประมวลผลคำอธิบายประกอบ ก็อาจต้องส่งอาร์กิวเมนต์เหล่านั้นไปยัง KSP โปรดทราบว่ารูปแบบของอาร์กิวเมนต์อาจแตกต่างกันระหว่าง kapt กับ KSP ดูข้อมูลเพิ่มเติมในเอกสารประกอบ KSP และเอกสารประกอบของไลบรารีที่คุณใช้
นำปลั๊กอิน kapt ออก
เมื่อไม่มี Dependency ที่รวมอยู่กับ kapt
ในโมดูลแล้ว ให้นำปลั๊กอิน kapt ออก
หากประกาศไว้ในบล็อกปลั๊กอิน ให้ทำดังนี้
Kotlin
plugins {id("org.jetbrains.kotlin.kapt")}
Groovy
plugins {id 'org.jetbrains.kotlin.kapt'}
หากใช้ไวยากรณ์ apply plugin โดยใช้ Groovy ให้ทำดังนี้
apply plugin: 'kotlin-kapt'
นอกจากนี้ คุณควรนําการกําหนดค่าที่เหลืออยู่ซึ่งเกี่ยวข้องกับ kapt ออกด้วย เช่น
Kotlin
kapt { correctErrorTypes = true useBuildCache = true }
Groovy
kapt { correctErrorTypes true useBuildCache true }