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 GitHub পৃষ্ঠায় রিলিজের তালিকা দেখতে পাবেন।
Kotlin
plugins { id("com.google.devtools.ksp") version "2.3.4" apply false }
গ্ৰুভি
plugins { id 'com.google.devtools.ksp' version '2.3.4' apply false }
তারপর, আপনার মডিউল-লেভেল build.gradle.kts ফাইলে KSP চালু করুন:
Kotlin
plugins { id("com.google.devtools.ksp") }
গ্ৰুভি
plugins { id 'com.google.devtools.ksp' }
KSP-এর মাধ্যমে অ্যানোটেশন প্রসেসর পরিবর্তন করুন
KSP চালু থাকলে, আপনি KSP-এর সাথে kapt-এর ব্যবহার পরিবর্তন করা শুরু করতে পারবেন। বেশিরভাগ লাইব্রেরির ক্ষেত্রে, ডিপেন্ডেন্সি ডিক্লারেশনে kapt থেকে ksp-তে পরিবর্তন করলেই হবে, কারণ তারা একই আর্টিফ্যাক্টে তাদের অ্যানোটেশন প্রসেসর এবং 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-এর সাথে একই ধরনের ফিচার সেট সাপোর্ট করে না। মাইগ্রেট করার পরে আপনার কোড কাজ না করলে, লাইব্রেরির ডকুমেন্টেশন চেক করুন।
- KSP-তে kapt-এর চেয়ে আরও সঠিক Kotlin টাইপ সংক্রান্ত তথ্য থাকে (যেমন, নালেবিলিটি সম্পর্কে), যার অর্থ হল KSP প্রসেসর টাইপ সংক্রান্ত প্রয়োজনীয়তার ব্যাপারে আরও নিখুঁত হতে পারে। আপনার বিল্ড ফাইল আপডেট করার পাশাপাশি, আপনার সোর্স কোডেও কিছু সমস্যা সমাধান করতে হতে পারে।
- আপনি আগে অ্যানোটেশন প্রসেসরে আর্গুমেন্ট পাস করে থাকলে, আপনাকে এখন সম্ভবত KSP-তে সেই আর্গুমেন্ট পাস করতে হবে। মনে রাখবেন, kapt ও KSP-এর মধ্যে আর্গুমেন্টের ফর্ম্যাট আলাদা হতে পারে। আরও জানতে KSP ডকুমেন্টেশন দেখুন এবং আপনি যে লাইব্রেরি ব্যবহার করছেন তার ডকুমেন্টেশন দেখুন।
kapt প্লাগ-ইন সরান
আপনার মডিউলে kapt-এর সাথে আর কোনও ডিপেন্ডেন্সি অন্তর্ভুক্ত না থাকলে,
kapt প্লাগ-ইন সরিয়ে দিন।
এটি প্লাগ-ইন ব্লকে ঘোষণা করা হলে:
Kotlin
plugins {id("org.jetbrains.kotlin.kapt")}
গ্ৰুভি
plugins {id 'org.jetbrains.kotlin.kapt'}
Groovy ব্যবহার করে প্লাগ-ইন সিনট্যাক্স প্রয়োগ করা হলে:
apply plugin: 'kotlin-kapt'
এছাড়াও, kapt সম্পর্কিত কোনও অবশিষ্ট কনফিগারেশন থাকলে তা সরিয়ে দিতে হবে, যেমন:
Kotlin
kapt { correctErrorTypes = true useBuildCache = true }
গ্ৰুভি
kapt { correctErrorTypes true useBuildCache true }