কাস্টম বিল্ড লজিক প্রয়োগ করুন

আপনি যখন Android Gradle প্লাগইন প্রসারিত করতে চান বা আপনার নিজের প্লাগইন লিখতে চান তখন এই বিভাগটি উন্নত বিষয়গুলি বর্ণনা করে যা দরকারী৷

কাস্টম যুক্তিতে বৈকল্পিক নির্ভরতা প্রকাশ করুন

একটি লাইব্রেরির কার্যকারিতা থাকতে পারে যা অন্যান্য প্রকল্প বা উপ-প্রকল্পগুলি ব্যবহার করতে চাইতে পারে। একটি লাইব্রেরি প্রকাশ করা হল সেই প্রক্রিয়া যার মাধ্যমে লাইব্রেরিটি গ্রাহকদের জন্য উপলব্ধ করা হয়। লাইব্রেরিগুলি কম্পাইল টাইম এবং রানটাইমে তার গ্রাহকদের কোন নির্ভরতাগুলিতে অ্যাক্সেস রয়েছে তা নিয়ন্ত্রণ করতে পারে।

দুটি পৃথক কনফিগারেশন রয়েছে যা প্রতিটি ক্লাসপথের ট্রানজিটিভ নির্ভরতা ধারণ করে যা গ্রাহকদের অবশ্যই নীচে বর্ণিত লাইব্রেরি ব্যবহার করতে ব্যবহার করতে হবে:

  • variant_name ApiElements : এই কনফিগারেশন ট্রানজিটিভ নির্ভরতা ধারণ করে যা কম্পাইলের সময় গ্রাহকদের জন্য উপলব্ধ।
  • variant_name RuntimeElements : এই কনফিগারেশনটি ট্রানজিটিভ নির্ভরতা ধারণ করে যা রানটাইমে গ্রাহকদের জন্য উপলব্ধ।

বিভিন্ন কনফিগারেশনের মধ্যে সম্পর্ক সম্পর্কে আরও জানতে, জাভা লাইব্রেরি প্লাগইন কনফিগারেশনে যান।

কাস্টম নির্ভরতা রেজোলিউশন কৌশল

একটি প্রকল্পে একই লাইব্রেরির দুটি ভিন্ন সংস্করণের উপর নির্ভরতা অন্তর্ভুক্ত থাকতে পারে যা নির্ভরতা দ্বন্দ্বের দিকে নিয়ে যেতে পারে। উদাহরণস্বরূপ, যদি আপনার প্রকল্পটি মডিউল A এর সংস্করণ 1 এবং মডিউল B এর সংস্করণ 2 এর উপর নির্ভর করে এবং মডিউল A ট্রানজিটিভভাবে মডিউল B এর সংস্করণ 3 এর উপর নির্ভর করে, তাহলে একটি নির্ভরতা সংস্করণ দ্বন্দ্ব দেখা দেয়।

এই দ্বন্দ্ব সমাধানের জন্য, অ্যান্ড্রয়েড গ্রেডল প্লাগইন নিম্নলিখিত নির্ভরতা রেজোলিউশন কৌশল ব্যবহার করে: যখন প্লাগইন সনাক্ত করে যে একই মডিউলের বিভিন্ন সংস্করণ নির্ভরতা গ্রাফে রয়েছে, ডিফল্টরূপে, এটি সর্বোচ্চ সংস্করণ নম্বর সহ একটি বেছে নেয়।

যাইহোক, এই কৌশলটি সবসময় আপনার ইচ্ছা অনুযায়ী কাজ নাও করতে পারে। নির্ভরতা রেজোলিউশন কৌশলটি কাস্টমাইজ করতে, আপনার কাজের জন্য প্রয়োজনীয় একটি বৈকল্পিকের নির্দিষ্ট নির্ভরতা সমাধান করতে নিম্নলিখিত কনফিগারেশনগুলি ব্যবহার করুন:

  • variant_name CompileClasspath : এই কনফিগারেশনে একটি প্রদত্ত ভেরিয়েন্টের কম্পাইল ক্লাসপথের জন্য রেজোলিউশন কৌশল রয়েছে।
  • variant_name RuntimeClasspath : এই কনফিগারেশনে একটি প্রদত্ত ভেরিয়েন্টের রানটাইম ক্লাসপথের জন্য রেজোলিউশন কৌশল রয়েছে।

অ্যান্ড্রয়েড গ্রেডল প্লাগইনে এমন গেটার রয়েছে যা আপনি প্রতিটি ভেরিয়েন্টের কনফিগারেশন অবজেক্ট অ্যাক্সেস করতে ব্যবহার করতে পারেন। সুতরাং, নীচের উদাহরণে দেখানো হিসাবে আপনি নির্ভরতা রেজোলিউশন অনুসন্ধান করতে বৈকল্পিক API ব্যবহার করতে পারেন:

কোটলিন

android {
    applicationVariants.all {
        // Return compile configuration objects of a variant.
        compileConfiguration.resolutionStrategy {
        // Use Gradle's ResolutionStrategy API
        // to customize how this variant resolves dependencies.
            ...
        }
        // Return runtime configuration objects of a variant.
        runtimeConfiguration.resolutionStrategy {
            ...
        }
        // Return annotation processor configuration of a variant.
        annotationProcessorConfiguration.resolutionStrategy {
            ...
        }
    }
}

গ্রোভি

android {
    applicationVariants.all { variant ->
        // Return compile configuration objects of a variant.
        variant.getCompileConfiguration().resolutionStrategy {
        // Use Gradle's ResolutionStrategy API
        // to customize how this variant resolves dependencies.
            ...
        }
        // Return runtime configuration objects of a variant.
        variant.getRuntimeConfiguration().resolutionStrategy {
            ...
        }
        // Return annotation processor configuration of a variant.
        variant.getAnnotationProcessorConfiguration().resolutionStrategy {
            ...
        }
    }
}