Mengintegrasikan Pemproses KSP ke dalam Binaan Gradle
Konfigurasikan KSP dalam Gradle, tambah sumber yang dijana dan nyahpepijat output pemproses.
Mengintegrasikan Pemproses KSP ke dalam Binaan Gradle ialah pelajaran Kotlin Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kotlin Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kotlin Academy merangkumi sejumlah 4 pelajaran.
Struktur Berbilang Modul
Persediaan KSP yang lazim mempunyai sekurang-kurangnya dua modul: :annotation (mengandungi kelas anotasi anda) dan :processor (mengandungi SymbolProcessor). Modul pengguna menggunakan pemalam KSP serta mengisytiharkan kebergantungan ksp dan implementation.
Menggunakan Pemalam KSP
Dalam modul yang menggunakan pemalam, iaitu build.gradle.kts:
plugins {
kotlin("jvm") // or android, multiplatform
id("com.google.devtools.ksp") version "2.0.0-1.0.21"
}Mengisytiharkan Kebergantungan ksp
Gunakan konfigurasi ksp (bukan implementation) untuk menambahkan pemproses KSP. Pemproses hanya dijalankan pada masa binaan dan tidak disertakan dalam artifak akhir:
dependencies {
implementation(project(":annotation"))
ksp(project(":processor"))
}Direktori Sumber yang Dijana
KSP menulis fail yang dijana di bawah build/generated/ksp/<sourceSet>/kotlin/. Pemalam KSP menambahkan direktori ini secara automatik ke dalam set sumber Kotlin, jadi kelas yang dijana boleh diakses oleh kod anda tanpa konfigurasi manual.
Menghantar Pilihan kepada Pemproses
Hantar pilihan masa binaan daripada Gradle kepada pemproses anda melalui ksp { arg("key", "value") }. Baca pilihan tersebut dalam pemproses melalui environment.options["key"]:
// build.gradle.kts (consumer)
ksp {
arg("generateMocks", "true")
arg("outputPackage", "com.example.generated")
}Membaca Pilihan dalam Pemproses
Dalam kaedah SymbolProcessorProvider.create(), akses pilihan daripada persekitaran:
class MyProcessorProvider : SymbolProcessorProvider {
override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor {
val genMocks = environment.options["generateMocks"] == "true"
return MyProcessor(environment.codeGenerator, environment.logger, genMocks)
}
}Binaan Berperingkat
KSP menjejaki kebergantungan antara masukan dan keluaran. Kaitkan setiap fail yang dijana dengan simbol sumbernya apabila memanggil codeGenerator.createNewFile(). KSP kemudian melangkau pemprosesan semula apabila tiada satu pun masukan yang dijejaki berubah.
val deps = Dependencies(aggregating = false, *symbols.map { it.containingFile!! }.toTypedArray())
codeGenerator.createNewFile(deps, packageName, fileName)KSP dengan Android
Untuk projek Android, gantikan kapt dengan ksp dalam pengisytiharan pemalam dan kebergantungan. Gunakan konfigurasi yang mengambil kira varian seperti kspDebug atau kspRelease jika anda memerlukan tingkah laku pemproses yang berbeza antara jenis binaan.
KSP dengan Kotlin Multiplatform
Dalam projek KMP, gunakan pemalam KSP dan gunakan add(kotlinCompilation.defaultSourceSetName + "ksp", project(":processor")) atau bentuk ringkas kspCommonMainMetadata, kspJvmMain dan sebagainya, bergantung pada sasaran yang disokong oleh pemproses anda.
Melihat Fail yang Dijana
Selepas menjalankan ./gradlew build (atau kspKotlin / kspDebugKotlin untuk Android), periksa build/generated/ksp/. IntelliJ dan Android Studio menandakan folder ini sebagai sumber yang dijana serta membenarkan navigasi daripada penggunaan ke pengisytiharan yang dijana.
Menyahpepijat Pemproses
Jalankan tugas Gradle dengan --debug atau tambahkan jvmArgs("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005") kepada konfigurasi ksp untuk menyambungkan penyahpepijat jauh kepada JVM pemprosesan anotasi.
Semakan Pantas
Konfigurasi Gradle manakah yang digunakan untuk menambahkan pemproses KSP yang dijalankan pada masa binaan tetapi tidak disertakan dalam laluan kelas masa jalan?
Ringkasan: Mengintegrasikan KSP ke dalam Binaan Gradle
Ringkasan penting:
- Gunakan pemalam
com.google.devtools.ksp; tambahkan pemproses dengan kebergantunganksp() - Sumber yang dijana berada dalam
build/generated/ksp/dan ditambahkan secara automatik ke dalam set sumber - Hantar pilihan daripada Gradle melalui
ksp { arg() }; baca pilihan tersebut melaluienvironment.options - Gunakan
DependenciesdengancreateNewFile()untuk binaan semula berperingkat yang tepat - Berfungsi dengan Android (konfigurasi varian) dan Kotlin Multiplatform
Pelajari Kotlin dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “Mengintegrasikan Pemproses KSP ke dalam Binaan Gradle” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kotlin Academy, termasuk “Mengintegrasikan Pemproses KSP ke dalam Binaan Gradle”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Kotlin Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Mengintegrasikan Pemproses KSP ke dalam Binaan Gradle”?
Konfigurasikan KSP dalam Gradle, tambah sumber yang dijana dan nyahpepijat output pemproses. Anda berlatih Kotlin Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Kotlin Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Kotlin Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Mengintegrasikan Pemproses KSP ke dalam Binaan Gradle” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kotlin Academy ini?
Ya. Setiap pelajaran Kotlin Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- KSP berbanding KAPT: Mengapa KSP Lebih Pantas
- Menulis SymbolProcessor Pertama Anda
- Menjana Fail Sumber Kotlin dengan KotlinPoet
- Mengintegrasikan Pemproses KSP ke dalam Binaan Gradle