با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
Kapt (ابزار پردازش حاشیه نویسی Kotlin) به شما امکان می دهد از پردازنده های حاشیه نویسی جاوا با کد Kotlin استفاده کنید، حتی اگر آن پردازنده ها پشتیبانی خاصی از Kotlin نداشته باشند. این کار با تولید خرد جاوا از فایلهای Kotlin شما انجام میشود که پردازندهها میتوانند سپس بخوانند. این نسل خرد یک عملیات گران قیمت است و تاثیر بسزایی در سرعت ساخت دارد.
KSP (پردازش نماد Kotlin) اولین جایگزین کاتلین برای kapt است. KSP کد Kotlin را مستقیماً تجزیه و تحلیل می کند که تا 2 برابر سریعتر است. همچنین درک بهتری از ساختارهای زبان کاتلین دارد.
در حین مهاجرت می توانید kapt و KSP را در کنار یکدیگر در پروژه خود اجرا کنید، و انتقال را می توان ماژول به ماژول، کتابخانه به کتابخانه انجام داد.
در اینجا یک نمای کلی از مراحل مهاجرت آورده شده است:
کتابخانه هایی را که برای پشتیبانی KSP استفاده می کنید بررسی کنید
افزونه KSP را به پروژه خود اضافه کنید
پردازنده های حاشیه نویسی را با KSP جایگزین کنید
افزونه kapt را حذف کنید
کتابخانه هایی را که برای پشتیبانی KSP استفاده می کنید بررسی کنید
برای شروع، بررسی کنید که آیا کتابخانههایی که با kapt استفاده میکنید قبلاً از KSP پشتیبانی میکنند یا خیر. این مورد برای بسیاری از کتابخانههای محبوب (از جمله Dagger ، Glide ، Room ، و Moshi ) است و دیگران در حال اضافه کردن پشتیبانی هستند.
میتوانید فهرست کتابخانههای پشتیبانیشده را در اسناد بررسی کنید، یا به اسناد و ردیاب مسائل کتابخانههایی که استفاده میکنید مراجعه کنید.
افزونه KSP را به پروژه خود اضافه کنید
ابتدا پلاگین KSP را در فایل build.gradle.kts سطح بالای خود اعلام کنید. اطمینان حاصل کنید که یک نسخه KSP را با نسخه Kotlin پروژه خود تراز کرده اید. میتوانید فهرستی از نسخهها را در صفحه KSP GitHub پیدا کنید.
سپس، KSP را در فایل build.gradle.kts در سطح ماژول خود فعال کنید:
کاتلین
plugins{id("com.google.devtools.ksp")}
شیار
plugins{id'com.google.devtools.ksp'}
پردازنده های حاشیه نویسی را با KSP جایگزین کنید
با فعال بودن KSP، می توانید جایگزینی استفاده از kapt با KSP را شروع کنید. برای اکثریت قریب به اتفاق کتابخانه ها، این فقط مستلزم تغییر kapt به ksp در اعلان وابستگی است، زیرا آنها پردازنده حاشیه نویسی و پردازنده KSP خود را در یک مصنوع ارسال می کنند.
پس از انتقال به KSP، پروژه خود را همگام سازی کرده و بسازید تا ببینید آیا هنوز درست کار می کند یا خیر.
برخی از مسائل رایج که باید به آنها توجه کرد:
برخی از کتابخانهها دقیقاً از همان مجموعه ویژگیها با kapt و KSP پشتیبانی نمیکنند. اگر کد شما پس از انتقال خراب شد، اسناد کتابخانه را بررسی کنید.
KSP اطلاعات نوع Kotlin دقیق تری نسبت به kapt دارد (مثلاً در مورد پوچ پذیری)، به این معنی که پردازنده های KSP می توانند در مورد نیازهای نوع دقیق تر باشند. این ممکن است به برخی اصلاحات در کد منبع شما نیز نیاز داشته باشد، علاوه بر آن بهروزرسانی فایلهای ساخت شما.
اگر قبلاً آرگومانهایی را به پردازشگر حاشیهنویسی ارسال میکردید، احتمالاً اکنون باید آن آرگومانها را به KSP ارسال کنید. توجه داشته باشید که قالب آرگومان ها ممکن است بین kapt و KSP متفاوت باشد. اسناد KSP را ببینید و برای کسب اطلاعات بیشتر به اسناد کتابخانه ای که استفاده می کنید مراجعه کنید.
افزونه kapt را حذف کنید
وقتی دیگر هیچ وابستگی با kapt در ماژول خود ندارید، افزونه kapt را حذف کنید.
اگر در بلوک افزونه ها اعلام شده بود:
کاتلین
plugins{id("org.jetbrains.kotlin.kapt")}
شیار
plugins{id'org.jetbrains.kotlin.kapt'}
اگر از دستور افزونه application با استفاده از Groovy استفاده می کرد:
apply plugin: 'kotlin-kapt'
همچنین باید هر گونه پیکربندی باقیمانده مربوط به kapt را حذف کنید، مانند:
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Migrate from kapt to KSP\n\n| **Note:** Kapt is now in maintenance mode, and we recommend that you migrate from kapt to KSP for all processors that support it. In most cases, this migration only requires changes to your project's build configuration.\n\n[Kapt (the Kotlin Annotation Processing Tool)](https://kotlinlang.org/docs/kapt.html) lets you use\nJava annotation processors with Kotlin code, even if those processors don't have\nspecific support for Kotlin. This is done by generating Java stubs from your\nKotlin files that the processors can then read. This stub generation is an\nexpensive operation and has a significant impact on build speed.\n\n[KSP (Kotlin Symbol Processing)](https://github.com/google/ksp) is a Kotlin-first alternative to\nkapt. KSP analyzes Kotlin code directly, which is [up to 2x\nfaster](https://android-developers.googleblog.com/2021/09/accelerated-kotlin-build-times-with.html). It also has a better understanding of Kotlin\nlanguage constructs.\n\nYou can run kapt and KSP alongside each other in your project while you're\nmigrating, and the migration can be done module by module, library by library.\n| **Note:** If a module has any kapt processors remaining, stubs are still generated in that module. This means that the majority of performance improvement will occur only when all usages of kapt are removed from the module.\n\nHere's an overview of the migration steps:\n\n1. Check the libraries you use for KSP support\n2. Add the KSP plugin to your project\n3. Replace annotation processors with KSP\n4. Remove the kapt plugin\n\nCheck the libraries you use for KSP support\n-------------------------------------------\n\nTo get started, check if the libraries you're using with kapt already have KSP\nsupport. This is the case for many popular libraries (including\n[Dagger](https://github.com/google/dagger/issues/2349), [Glide](https://bumptech.github.io/glide/doc/download-setup.html#kotlin---ksp), [Room](/jetpack/androidx/releases/room#declaring_dependencies),\nand [Moshi](https://github.com/square/moshi#codegen)), and others are adding support.\n\nYou can check the [list of supported libraries](https://kotlinlang.org/docs/ksp-overview.html#supported-libraries) in the\ndocumentation, or refer to the documentation and issue tracker of the libraries\nyou're using.\n| **Note:** While not a traditionally-included library dependency, [Data Binding](/topic/libraries/data-binding) also uses an annotation processor to provide its functionality, and [KSP support\n| for Data Binding is not planned](https://issuetracker.google.com/issues/173030256#comment10). You can mitigate the impact of kapt on your build by isolating the usages of Data Binding to separate modules.\n\nAdd the KSP plugin to your project\n----------------------------------\n\nFirst, declare the KSP plugin in your top level `build.gradle.kts` file.\nMake sure that you choose a KSP version aligned with your project's Kotlin\nversion. You can find a list of releases on the [KSP GitHub\npage](https://github.com/google/ksp/releases).\n**Note:** The first part of the KSP version must match the version of Kotlin being used in your build. For example, if you're using Kotlin `2.0.21`, the KSP version must be one of the `2.0.21-x.y.z` releases. \n\n### Kotlin\n\n```kotlin\nplugins {\n id(\"com.google.devtools.ksp\") version \"2.0.21-1.0.27\" apply false\n}\n```\n\n### Groovy\n\n```groovy\nplugins {\n id 'com.google.devtools.ksp' version '2.0.21-1.0.27' apply false\n}\n```\n\nThen, enable KSP in your module-level `build.gradle.kts` file: \n\n### Kotlin\n\n```kotlin\nplugins {\n id(\"com.google.devtools.ksp\")\n}\n```\n\n### Groovy\n\n```groovy\nplugins {\n id 'com.google.devtools.ksp'\n}\n```\n\nReplace annotation processors with KSP\n--------------------------------------\n\nWith KSP enabled, you can start replacing usages of kapt with KSP. For a vast\nmajority of libraries, this just requires changing kapt to ksp at the dependency\ndeclaration, as they ship their annotation processor and KSP processor in the\nsame artifact.\n**Note:** Some libraries (such as [Glide](https://bumptech.github.io/glide/doc/download-setup.html#kotlin---ksp)) might require you to change the dependency to a different artifact as well. Make sure to consult their documentation. \n\n### Kotlin\n\n```kotlin\ndependencies {\n kapt(\"androidx.room:room-compiler:2.5.0\")\n ksp(\"androidx.room:room-compiler:2.5.0\")\n}\n```\n\n### Groovy\n\n```groovy\ndependencies {\n kapt 'androidx.room:room-compiler:2.5.0'\n ksp 'androidx.room:room-compiler:2.5.0'\n}\n```\n\nAfter moving to KSP, sync and build your project to see if it still works\ncorrectly.\n\nSome common issues to look out for:\n\n- Some libraries don't support the exact same set of features with kapt and KSP. If your code breaks after migrating, check the library's documentation.\n- KSP has more accurate Kotlin type information than kapt (for example, about nullability), which means that KSP processors can be more precise about type requirements. This might require some fixes in your source code as well, in addition to updating your build files.\n- If you were previously passing in arguments to the annotation processor, you'll likely need to pass in those arguments to KSP now. Note that the format of the arguments might differ between kapt and KSP. See the [KSP\n documentation](https://kotlinlang.org/docs/ksp-quickstart.html#pass-options-to-processors) and consult the documentation of the library you're using to learn more.\n\nRemove the kapt plugin\n----------------------\n\nWhen you have no dependencies included with `kapt` in your module anymore,\nremove the kapt plugin.\n| **Note:** [Data Binding](/topic/libraries/data-binding) also requires kapt to be enabled in the module. In modules where Data Binding is used, kapt can't be removed.\n\nIf it was declared in a plugins block: \n\n### Kotlin\n\n```kotlin\nplugins {\n id(\"org.jetbrains.kotlin.kapt\")\n}\n```\n\n### Groovy\n\n```groovy\nplugins {\n id 'org.jetbrains.kotlin.kapt'\n}\n```\n\nIf it was using the apply plugin syntax using Groovy: \n\n```\napply plugin: 'kotlin-kapt'\n```\n\nYou should also remove any leftover configuration related to kapt, such as: \n\n### Kotlin\n\n```kotlin\n\nkapt {\n correctErrorTypes = true\n useBuildCache = true\n}\n```\n\n### Groovy\n\n```groovy\n\nkapt {\n correctErrorTypes true\n useBuildCache true\n}\n```\n\nAdditional resources\n--------------------\n\n- [KSP documentation on Kotlinlang.org](https://kotlinlang.org/docs/ksp-overview.html)\n- [KSP on GitHub](https://github.com/google/ksp)\n- [kapt on Kotlinlang.org](https://kotlinlang.org/docs/kapt.html) --\\\u003e"]]