Kapt (Kotlin एनोटेशन प्रोसेसिंग टूल) की मदद से, Kotlin कोड के साथ Java एनोटेशन प्रोसेसर का इस्तेमाल किया जा सकता है. भले ही, उन प्रोसेसर में Kotlin के लिए खास सहायता न हो. ऐसा करने के लिए, आपकी Kotlin फ़ाइलों से Java स्टब जनरेट किए जाते हैं. प्रोसेसर, इन स्टब को पढ़ सकते हैं. स्टब जनरेशन की प्रोसेस में काफ़ी समय लगता है और इससे बिल्ड की स्पीड पर काफ़ी असर पड़ता है.
KSP (Kotlin Symbol Processing), kapt का एक ऐसा विकल्प है जिसमें Kotlin का इस्तेमाल पहले किया जाता है. KSP, Kotlin कोड का सीधे तौर पर विश्लेषण करता है. यह दो गुना ज़्यादा तेज़ होता है. यह Kotlin भाषा के कॉन्स्ट्रक्ट को भी बेहतर तरीके से समझता है.
माइग्रेट करने के दौरान, अपने प्रोजेक्ट में kapt और KSP को एक साथ चलाया जा सकता है. साथ ही, माइग्रेशन को मॉड्यूल और लाइब्रेरी के हिसाब से किया जा सकता है.
माइग्रेशन के चरणों के बारे में खास जानकारी यहां दी गई है:
- KSP की सहायता के लिए इस्तेमाल की जाने वाली लाइब्रेरी देखें
- अपने प्रोजेक्ट में KSP प्लग इन जोड़ना
- एनोटेशन प्रोसेसर को KSP से बदलना
- kapt प्लग इन हटाना
KSP की सहायता के लिए इस्तेमाल की जाने वाली लाइब्रेरी देखें
शुरू करने के लिए, देखें कि kapt के साथ इस्तेमाल की जा रही लाइब्रेरी में पहले से ही KSP की सुविधा है या नहीं. यह कई लोकप्रिय लाइब्रेरी के लिए सही है. इनमें Dagger, Glide, Room, और Moshi शामिल हैं. साथ ही, अन्य लाइब्रेरी भी इस सुविधा को जोड़ रही हैं.
दस्तावेज़ में, काम करने वाली लाइब्रेरी की सूची देखी जा सकती है. इसके अलावा, इस्तेमाल की जा रही लाइब्रेरी के दस्तावेज़ और समस्या ट्रैकर को भी देखा जा सकता है.
अपने प्रोजेक्ट में KSP प्लग इन जोड़ना
सबसे पहले, अपनी टॉप लेवल build.gradle.kts
फ़ाइल में KSP प्लग इन का एलान करें.
पक्का करें कि आपने KSP का ऐसा वर्शन चुना हो जो आपके प्रोजेक्ट के Kotlin वर्शन के साथ काम करता हो. रिलीज़ की सूची, KSP के GitHub पेज पर देखी जा सकती है.
plugins { id("com.google.devtools.ksp") version "2.0.21-1.0.27" apply false }
plugins { id 'com.google.devtools.ksp' version '2.0.21-1.0.27' apply false }
इसके बाद, अपने मॉड्यूल-लेवल की build.gradle.kts
फ़ाइल में KSP चालू करें:
एनोटेशन प्रोसेसर को KSP से बदलना
KSP चालू होने के बाद, kapt के इस्तेमाल को KSP से बदला जा सकता है. ज़्यादातर लाइब्रेरी के लिए, आपको सिर्फ़ डिपेंडेंसी के एलान में kapt को ksp में बदलना होगा. ऐसा इसलिए, क्योंकि वे अपने एनोटेशन प्रोसेसर और KSP प्रोसेसर को एक ही आर्टफ़ैक्ट में शिप करते हैं.
dependencies {kapt("androidx.room:room-compiler:2.5.0")ksp("androidx.room:room-compiler:2.5.0") }
dependencies {kapt 'androidx.room:room-compiler:2.5.0'ksp 'androidx.room:room-compiler:2.5.0' }
KSP पर माइग्रेट करने के बाद, अपने प्रोजेक्ट को सिंक और बिल्ड करें. इससे यह पता चलेगा कि वह अब भी सही तरीके से काम कर रहा है या नहीं.
यहां कुछ सामान्य समस्याएं बताई गई हैं, जिन पर ध्यान देना ज़रूरी है:
- कुछ लाइब्रेरी में, kapt और KSP के साथ सुविधाओं का एक जैसा सेट काम नहीं करता. अगर माइग्रेट करने के बाद आपका कोड काम नहीं करता है, तो लाइब्रेरी का दस्तावेज़ देखें.
- KSP में, kapt की तुलना में Kotlin टाइप की ज़्यादा सटीक जानकारी होती है. उदाहरण के लिए, वैल्यू न होने की संभावना के बारे में. इसका मतलब है कि KSP प्रोसेसर, टाइप की ज़रूरी शर्तों के बारे में ज़्यादा सटीक जानकारी दे सकते हैं. इसके लिए, आपको अपनी बिल्ड फ़ाइलों को अपडेट करने के साथ-साथ, अपने सोर्स कोड में भी कुछ बदलाव करने पड़ सकते हैं.
- अगर आपने एनोटेशन प्रोसेसर को पहले भी आर्ग्युमेंट दिए थे, तो अब आपको उन आर्ग्युमेंट को KSP को देना होगा. ध्यान दें कि kapt और KSP के बीच, आर्ग्युमेंट का फ़ॉर्मैट अलग-अलग हो सकता है. ज़्यादा जानने के लिए, KSP का दस्तावेज़ देखें. साथ ही, उस लाइब्रेरी का दस्तावेज़ देखें जिसका इस्तेमाल किया जा रहा है.
kapt प्लग इन हटाना
जब आपके मॉड्यूल में kapt
के साथ कोई डिपेंडेंसी शामिल न हो, तो
kapt प्लग इन हटाएं.
अगर इसे प्लग इन ब्लॉक में बताया गया था, तो:
अगर Groovy का इस्तेमाल करके, apply plugin सिंटैक्स का इस्तेमाल किया जा रहा था, तो:
apply plugin: 'kotlin-kapt'
आपको kapt से जुड़ा बचा हुआ कॉन्फ़िगरेशन भी हटा देना चाहिए, जैसे:
kapt { correctErrorTypes = true useBuildCache = true }
kapt { correctErrorTypes true useBuildCache true }