kapt থেকে KSP তে স্থানান্তর করুন

ক্যাপ্ট (কোটলিন অ্যানোটেশন প্রসেসিং টুল) আপনাকে কোটলিন কোড সহ জাভা টীকা প্রসেসর ব্যবহার করতে দেয়, এমনকি সেই প্রসেসরগুলির কোটলিনের জন্য নির্দিষ্ট সমর্থন না থাকলেও। এটি আপনার Kotlin ফাইল থেকে জাভা স্টাব তৈরি করে করা হয় যা প্রসেসররা পড়তে পারে। এই স্টাব জেনারেশন একটি ব্যয়বহুল অপারেশন এবং এটি নির্মাণের গতিতে উল্লেখযোগ্য প্রভাব ফেলে।

কেএসপি (কোটলিন সিম্বল প্রসেসিং) হল ক্যাপ্ট-এর একটি কোটলিন-প্রথম বিকল্প। KSP সরাসরি Kotlin কোড বিশ্লেষণ করে, যা 2x পর্যন্ত দ্রুততর । এটি কোটলিনের ভাষা নির্মাণের আরও ভাল বোঝার আছে।

Kapt এখন রক্ষণাবেক্ষণ মোডে আছে, এবং আমরা সুপারিশ করি যে যেখানেই সম্ভব kapt থেকে KSP-তে স্থানান্তরিত করুন। বেশিরভাগ ক্ষেত্রে, এই মাইগ্রেশনের জন্য শুধুমাত্র আপনার প্রোজেক্টের বিল্ড কনফিগারেশনে পরিবর্তন প্রয়োজন।

আপনি মাইগ্রেশন করার সময় আপনার প্রোজেক্টে একে অপরের পাশাপাশি ক্যাপ্ট এবং কেএসপি চালাতে পারেন এবং মাইগ্রেশন মডিউল দ্বারা মডিউল, লাইব্রেরি দ্বারা লাইব্রেরি করা যেতে পারে।

এখানে মাইগ্রেশন পদক্ষেপগুলির একটি ওভারভিউ রয়েছে:

  1. KSP সমর্থনের জন্য আপনি যে লাইব্রেরিগুলি ব্যবহার করেন তা পরীক্ষা করুন
  2. আপনার প্রকল্পে KSP প্লাগইন যোগ করুন
  3. কেএসপি দিয়ে টীকা প্রসেসর প্রতিস্থাপন করুন
  4. ক্যাপ্ট প্লাগইনটি সরান

KSP সমর্থনের জন্য আপনি যে লাইব্রেরিগুলি ব্যবহার করেন তা পরীক্ষা করুন

শুরু করতে, আপনি ক্যাপ্টের সাথে যে লাইব্রেরিগুলি ব্যবহার করছেন সেগুলিতে ইতিমধ্যে KSP সমর্থন রয়েছে কিনা তা পরীক্ষা করুন৷ এটি অনেক জনপ্রিয় লাইব্রেরির ক্ষেত্রে ( ড্যাগার , গ্লাইড , রুম এবং মোশি সহ ) এবং অন্যরা সমর্থন যোগ করছে৷

আপনি ডকুমেন্টেশনে সমর্থিত লাইব্রেরিগুলির তালিকা পরীক্ষা করতে পারেন, অথবা আপনি যে লাইব্রেরিগুলি ব্যবহার করছেন তার ডকুমেন্টেশন এবং ইস্যু ট্র্যাকার উল্লেখ করতে পারেন।

আপনার প্রকল্পে KSP প্লাগইন যোগ করুন

প্রথমে, আপনার শীর্ষ স্তরের build.gradle.kts ফাইলে KSP প্লাগইন ঘোষণা করুন। নিশ্চিত করুন যে আপনি আপনার প্রকল্পের কোটলিন সংস্করণের সাথে সারিবদ্ধ একটি KSP সংস্করণ চয়ন করেছেন৷ আপনি KSP GitHub পৃষ্ঠায় রিলিজের একটি তালিকা পেতে পারেন।

কোটলিন

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 ফাইলে KSP সক্ষম করুন:

কোটলিন

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

গ্রোভি

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

কেএসপি দিয়ে টীকা প্রসেসর প্রতিস্থাপন করুন

KSP সক্ষম হলে, আপনি কেএসপি দিয়ে kapt-এর ব্যবহার প্রতিস্থাপন শুরু করতে পারেন। বেশিরভাগ লাইব্রেরির জন্য, এটির জন্য নির্ভরতা ঘোষণায় 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-তে যাওয়ার পর, আপনার প্রোজেক্টটি এখনও সঠিকভাবে কাজ করে কিনা তা দেখতে সিঙ্ক করুন এবং তৈরি করুন।

কিছু সাধারণ সমস্যা যা দেখার জন্য:

  • কিছু লাইব্রেরি ক্যাপ্ট এবং কেএসপি সহ বৈশিষ্ট্যগুলির একই সেট সমর্থন করে না। মাইগ্রেট করার পর যদি আপনার কোড ভেঙ্গে যায়, লাইব্রেরির ডকুমেন্টেশন চেক করুন।
  • কেএসপি-তে ক্যাপ্টের (উদাহরণস্বরূপ, শূন্যতা সম্পর্কে) এর চেয়ে বেশি সঠিক কোটলিন টাইপ তথ্য রয়েছে, যার মানে হল যে KSP প্রসেসর টাইপ প্রয়োজনীয়তা সম্পর্কে আরও সুনির্দিষ্ট হতে পারে। আপনার বিল্ড ফাইলগুলি আপডেট করার পাশাপাশি এটির জন্য আপনার সোর্স কোডেও কিছু সংশোধনের প্রয়োজন হতে পারে।
  • আপনি যদি পূর্বে টীকা প্রসেসরের কাছে আর্গুমেন্ট দিয়ে থাকেন, তাহলে আপনাকে সম্ভবত সেই আর্গুমেন্টগুলি এখন কেএসপিতে পাস করতে হবে। মনে রাখবেন আর্গুমেন্টের বিন্যাস kapt এবং KSP এর মধ্যে আলাদা হতে পারে। KSP ডকুমেন্টেশন দেখুন এবং আরও জানতে আপনি যে লাইব্রেরি ব্যবহার করছেন তার ডকুমেন্টেশন দেখুন।

ক্যাপ্ট প্লাগইনটি সরান

আপনার মডিউলে kapt সাথে আর কোন নির্ভরতা অন্তর্ভুক্ত না থাকলে, ক্যাপ্ট প্লাগইনটি সরিয়ে দিন।

যদি এটি একটি প্লাগইন ব্লকে ঘোষণা করা হয়:

কোটলিন

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

গ্রোভি

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

যদি এটি গ্রুভি ব্যবহার করে প্লাগইন সিনট্যাক্স প্রয়োগ করে:

apply plugin: 'kotlin-kapt'

আপনার ক্যাপ্ট সম্পর্কিত যেকোন অবশিষ্ট কনফিগারেশনও মুছে ফেলা উচিত, যেমন:

কোটলিন

kapt {
    correctErrorTypes = true
    useBuildCache = true
}

গ্রোভি

kapt {
    correctErrorTypes true
    useBuildCache true
}

অতিরিক্ত সম্পদ