kapt से KSP में माइग्रेट करें

Kapt (Ktlin एनोटेशन प्रोसेसिंग टूल) की मदद से, Kotlin कोड के साथ Java एनोटेशन प्रोसेसर, भले ही उन प्रोसेसर के पास Kotlin के लिए खास सहायता. ऐसा करने के लिए, अपने Kotlin फ़ाइलें जिन्हें प्रोसेसर पढ़ सकते हैं. यह स्टब जनरेशन एक इसका इस्तेमाल करना बहुत महंगा है. इसका असर भी बिल्ड की स्पीड पर काफ़ी असर पड़ता है.

KSP (Kotlin Symbol प्रोसेसिंग), Kotlin-पहले इसका एक विकल्प है कप्ट. केएसपी, Kotlin कोड का सीधे तौर पर विश्लेषण करता है, जो कि दो गुना तक होता है ज़्यादा तेज़ी से. यह Kotlin की लैंग्वेज कंस्ट्रक्शन के लिए.

Kapt अब रखरखाव मोड में है और हमारा सुझाव है कि kapt से KSP में माइग्रेट करें हमारा सुझाव है. ज़्यादातर मामलों में, इस माइग्रेशन के लिए आपके प्रोजेक्ट के बिल्ड कॉन्फ़िगरेशन में शामिल है.

जब आप प्रोजेक्ट में हों, तब एक-दूसरे के साथ kapt और KSP चलाएं माइग्रेट करने के साथ-साथ, माइग्रेशन की प्रक्रिया को मॉड्यूल के हिसाब से, लाइब्रेरी के हिसाब से लाइब्रेरी के हिसाब से किया जा सकता है.

माइग्रेशन के चरणों की खास जानकारी यहां दी गई है:

  1. KSP के सपोर्ट के लिए इस्तेमाल की जाने वाली लाइब्रेरी देखें
  2. अपने प्रोजेक्ट में KSP प्लग इन जोड़ें
  3. एनोटेशन प्रोसेसर को KSP से बदलें
  4. Kapt प्लगिन को हटाएं

KSP के सपोर्ट के लिए इस्तेमाल की जाने वाली लाइब्रेरी देखें

शुरू करने के लिए, देखें कि आप जिन लाइब्रेरी का इस्तेमाल kapt के साथ कर रहे हैं उनमें पहले से KSP है या नहीं सहायता. कई लोकप्रिय लाइब्रेरी पर भी यही बात लागू होती है. इनमें ये मामले शामिल हैं: डैगर, ग्लाइड, रूम, और Moshi) के साथ ही अन्य क्रिएटर्स भी सहायता दे रहे हैं.

इस्तेमाल की जा सकने वाली लाइब्रेरी की सूची को यहां देखें: के दस्तावेज़ देखें या लाइब्रेरी के दस्तावेज़ और समस्या ट्रैकर देखें का उपयोग कर रहे हैं.

अपने प्रोजेक्ट में KSP प्लग इन जोड़ें

सबसे पहले, अपनी टॉप लेवल build.gradle.kts फ़ाइल में केएसपी प्लगिन का एलान करें. पक्का करें कि आपने KSP का ऐसा वर्शन चुना हो जो आपके प्रोजेक्ट के Kotlin वर्शन से मेल खाता हो वर्शन है. KSP GitHub पर रिलीज़ की सूची देखी जा सकती है पेज पर जाएं.

Kotlin

plugins {
    id("com.google.devtools.ksp") version "1.8.10-1.0.9" apply false
}

ग्रूवी

plugins {
    id 'com.google.devtools.ksp' version '1.8.10-1.0.9' apply false
}

इसके बाद, अपने मॉड्यूल-लेवल की build.gradle.kts फ़ाइल में केएसपी को चालू करें:

Kotlin

plugins {
    id("com.google.devtools.ksp")
}

ग्रूवी

plugins {
    id 'com.google.devtools.ksp'
}

एनोटेशन प्रोसेसर को KSP से बदलें

KSP की सुविधा चालू होने पर, kapt के इस्तेमाल को KSP से बदला जा सकता है. एक बड़े बहुत से लाइब्रेरी हैं, तो इसके लिए बस निर्भरता पर kapt को ksp में बदलना होगा एलान के लिए किया जा सकता है, क्योंकि वे आर्टफ़ैक्ट.

Kotlin

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 वाली सुविधाओं के एक जैसे सेट के साथ काम नहीं करती हैं. अगर माइग्रेट करने के बाद आपका कोड टूटता है, तो लाइब्रेरी के दस्तावेज़ देखें.
  • केएसपी के पास, Kapt की तुलना में Kotlin टाइप की ज़्यादा सटीक जानकारी होती है (उदाहरण के लिए, शून्य हो सकता है), इसका मतलब है कि केएसपी प्रोसेसर, टाइप के बारे में ज़्यादा सटीक हो सकते हैं ज़रूरतें. इसके लिए आपको अपने सोर्स कोड में भी कुछ सुधार करने पड़ सकते हैं बनाने के लिए अतिरिक्त है.
  • अगर आपने पहले एनोटेशन प्रोसेसर में आर्ग्युमेंट पास किए थे, अब आपको उन आर्ग्युमेंट में केएसपी को भेजना होगा. ध्यान दें कि के तर्क kapt और KSP के बीच अलग-अलग हो सकते हैं. KSP देखें दस्तावेज़ और लाइब्रेरी के दस्तावेज़ देखें का इस्तेमाल कर रहे हैं तो.

Kapt प्लगिन को हटाएं

जब आपके मॉड्यूल में kapt के साथ कोई डिपेंडेंसी शामिल नहीं होती है, तो Kapt प्लगिन को निकालें.

अगर इसका इस्तेमाल प्लगिन ब्लॉक में किया गया था, तो:

Kotlin

plugins {
    id("org.jetbrains.kotlin.kapt")
}

ग्रूवी

plugins {
    id 'org.jetbrains.kotlin.kapt'
}

अगर यह Grovy का इस्तेमाल करके लागू प्लगिन सिंटैक्स का इस्तेमाल कर रहा था, तो:

apply plugin: 'kotlin-kapt'

आपको kapt से जुड़े किसी भी बचे हुए कॉन्फ़िगरेशन को भी हटा देना चाहिए, जैसे कि:

Kotlin

kapt {
    correctErrorTypes = true
    useBuildCache = true
}

ग्रूवी

kapt {
    correctErrorTypes true
    useBuildCache true
}

अन्य संसाधन