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' সিনট্যাক্স ব্যবহার করে থাকে:
apply plugin: 'kotlin-kapt'
এছাড়াও, kapt-এর সাথে সম্পর্কিত কোনও অবশিষ্ট কনফিগারেশন থাকলে, আপনাকে তা সরিয়ে দিতে হবে, যেমন:
Kotlin
kapt { correctErrorTypes = true useBuildCache = true }
গ্ৰুভি
kapt { correctErrorTypes true useBuildCache true }