এই পৃষ্ঠায় অ্যান্ড্রয়েড গ্রেডল প্লাগইন (AGP) ব্যবহার করে আপনার অ্যান্ড্রয়েড লাইব্রেরি প্রজেক্ট প্রকাশের জন্য প্রয়োজনীয় প্রোপার্টি এবং অপশনগুলো বর্ণনা করা হয়েছে। আপনার লাইব্রেরি তৈরির শুরুতেই এই প্রোপার্টিগুলোর কিছু সেট করে ফেললেও, আপনার সেটিংস অপ্টিমাইজ করার জন্য নিম্নলিখিত নির্দেশিকা পর্যালোচনা করুন।
একটি নেমস্পেস নির্বাচন করুন
অ্যান্ড্রয়েড লাইব্রেরিগুলোকে একটি নেমস্পেস ঘোষণা করতে হয়, যাতে তাদের রিসোর্সগুলো কম্পাইল করার সময় একটি স্বতন্ত্র R ক্লাস তৈরি করা যায়। এই নেমস্পেসটি লাইব্রেরির রুট ক্লাস প্যাকেজের সাথে ঘনিষ্ঠভাবে মিল থাকা উচিত, যাতে ব্যবহারকারীরা লাইব্রেরি এবং এর R ক্লাস থেকে সাধারণ ক্লাস ইম্পোর্ট করার সময় কোনো বিভ্রান্তি না ঘটে।
AGP 7.0 থেকে শুরু করে, আপনি অ্যাপের build.gradle ফাইলে নেমস্পেস সেট করতে পারেন, যেমনটি নিম্নলিখিত কোড উদাহরণে দেখানো হয়েছে:
গ্রুভি
android { namespace = 'com.example.library' }
কোটলিন
android { namespace = "com.example.library" }
নেমস্পেস হলো লাইব্রেরির একটি ডেভেলপার-মুখী প্রপার্টি। এটি অ্যাপ্লিকেশন আইডেন্টিটির সাথে সম্পর্কিত নয়, যা applicationId প্রপার্টি ব্যবহার করে সেট করা হয়।
AGP-এর পূর্ববর্তী সংস্করণগুলিতে, ম্যানিফেস্টের package অ্যাট্রিবিউট ব্যবহার করে অ্যাপ্লিকেশনের জন্য applicationId প্রপার্টি এবং লাইব্রেরির জন্য namespace প্রপার্টি উভয়ই সেট করা যেত, যা বিভ্রান্তির সৃষ্টি করত।
একটি minSdkVersion মান নির্বাচন করুন
আপনার লাইব্রেরি প্রকাশ করার ক্ষেত্রে এর জন্য একটি minSdkVersion নির্বাচন করা একটি গুরুত্বপূর্ণ বিষয়। minSdkVersion টি অ্যান্ড্রয়েডের সেই সর্বনিম্ন সংস্করণকে প্রতিফলিত করবে যা আপনার কোড সমর্থন করতে পারে।
minSdkVersion নির্বাচন করার সময় নিম্নলিখিত বিষয়গুলো সম্পর্কে সচেতন থাকুন:
সাধারণত একটি কম
minSdkVersionবেছে নিলে আপনার লাইব্রেরির আরও ব্যাপক বিতরণ সম্ভব হয়।একটি লাইব্রেরির কোড সাধারণত ততক্ষণ পর্যন্ত এক্সিকিউট হয় না, যতক্ষণ না অ্যাপটি সেটিকে স্পষ্টভাবে কল করে। যদি কোনো লাইব্রেরি অ্যাপের মূল কার্যকারিতার জন্য অপরিহার্য না হয়, তবে লাইব্রেরিটিকে কল করার আগে রানটাইম চেক করার মাধ্যমে অ্যাপটি তার নির্ভরতার জন্য প্রয়োজনীয় সংস্করণের চেয়ে কম অ্যান্ড্রয়েড সংস্করণেও চলতে পারে। তাই, আপনার লাইব্রেরির
minSdkVersionযথেষ্ট কম সেট করুন, যাতে এটি অ্যাপে এমবেড করা যায় এবং সম্ভব হলে কল করা যায়, যা আরও বেশি ব্যবহারকারীর কাছে পৌঁছাতে সাহায্য করবে।উচ্চ
minSdkVersionনির্বাচন করলে অ্যাপ্লিকেশনগুলো লাইব্রেরিটি অন্তর্ভুক্ত করতে বাধাগ্রস্ত হতে পারে।ম্যানিফেস্ট মার্জার হলো AGP-এর একটি ধাপ, যা অ্যাপ এবং এর ডিপেন্ডেন্সিগুলো থেকে ম্যানিফেস্ট ফাইলগুলোকে একত্রিত করে এবং এটি নিশ্চিত করে যে কোনো ডিপেন্ডেন্সির
minSdkVersionযেন অ্যাপের চেয়ে বেশি না হয়।উচ্চ
minSdkVersionনির্বাচন করলে অ্যাপ ডেভেলপাররা ম্যানিফেস্ট মার্জার সেফটি চেক নিষ্ক্রিয় করে দিতে পারেন, যা পরবর্তীতে বিল্ড প্রক্রিয়ায় সমস্যা সৃষ্টি করতে পারে।যেহেতু ম্যানিফেস্ট মার্জার অ্যাপ প্রজেক্টগুলোকে অ্যাপটির নিজের চেয়ে উচ্চতর
minSdkVersionযুক্ত লাইব্রেরি অন্তর্ভুক্ত করতে বাধা দেয়, তাই অ্যাপ ডেভেলপাররা বিল্ড এরর কমানোর জন্য ম্যানিফেস্ট মার্জারের সুরক্ষা পরীক্ষাগুলো নিষ্ক্রিয় করে দিতে পারেন। তবে, এতে পরবর্তী ধাপে প্রকৃত অসামঞ্জস্যতার সমস্যা দেখা দেওয়ার ঝুঁকি থাকে।বিশেষ ক্ষেত্রে একটি উচ্চ
minSdkVersionনির্বাচন করা প্রয়োজনীয় হতে পারে, যেখানে কোনো লাইব্রেরির ম্যানিফেস্টে একটি ব্রডকাস্ট রিসিভার বা অন্য কোনো প্রক্রিয়া অন্তর্ভুক্ত থাকে যার মাধ্যমে এর কোড স্বয়ংক্রিয়ভাবে চালু হয়।এইসব ক্ষেত্রে, একটি উচ্চ
minSdkVersionবেছে নিলে কোডটি চালানো নিশ্চিত হয়। বিকল্পভাবে, আপনি স্বয়ংক্রিয় আচরণটি নিষ্ক্রিয় করতে পারেন, যাতে অ্যাপটি সঠিক যাচাই-বাছাই করার পর লাইব্রেরিটি চালানোর সিদ্ধান্ত নিতে পারে।
অ্যাপে এমবেডিংয়ের অনুমতি দিতে, আপনার লাইব্রেরিতে RequiresApi অ্যানোটেশনটি ব্যবহার করুন, যা এর কলারদের জানিয়ে দেয় যে তাদের রানটাইম চেক করতে হবে। অ্যান্ড্রয়েড লিন্ট তার ইন্সপেকশনের জন্য RequiresApi তথ্য ব্যবহার করে। আপনার এপিআই কোড এবং এপিআই উন্নত করতে অ্যানোটেশন ব্যবহারের বিষয়ে আরও তথ্যের জন্য, “অ্যানোটেশনের মাধ্যমে কোড ইন্সপেকশন উন্নত করুন” দেখুন।
AAR মেটাডেটা সেট আপ করুন
একটি অ্যান্ড্রয়েড লাইব্রেরি অ্যান্ড্রয়েড আর্কাইভ (AAR) ফাইল আকারে প্যাকেজ করা হয়। AAR মেটাডেটাতে এমন কিছু প্রোপার্টি থাকে যা AGP-কে লাইব্রেরি ব্যবহার করতে সাহায্য করে। যদি আপনার লাইব্রেরিটি কোনো বেমানান কনফিগারেশন দ্বারা ব্যবহৃত হয় এবং AAR মেটাডেটা সেট করা থাকে, তবে ব্যবহারকারীদের সমস্যা সমাধানে সাহায্য করার জন্য একটি ত্রুটির বার্তা দেখানো হয়।
একটি minCompileSdk মান নির্বাচন করুন
সংস্করণ ৪.১ থেকে শুরু করে, AGP minCompileSdk সমর্থন করে। এটি সর্বনিম্ন compileSdk নির্দেশ করে যা ব্যবহারকারী প্রোজেক্টগুলো ব্যবহার করতে পারে। যদি আপনার লাইব্রেরিতে এমন ম্যানিফেস্ট এন্ট্রি বা রিসোর্স থাকে যা নতুন প্ল্যাটফর্ম অ্যাট্রিবিউট ব্যবহার করে, তাহলে আপনাকে এই মানটি সেট করতে হবে।
মডিউল-স্তরের build.gradle ফাইলের defaultConfig{} , productFlavors{} , এবং buildTypes{} ব্লকগুলিতে minCompileSdk মান সেট করা যেতে পারে:
গ্রুভি
android { defaultConfig { aarMetadata { minCompileSdk = 29 } } productFlavors { foo { ... aarMetadata { minCompileSdk = 30 } } } }
কোটলিন
android { defaultConfig { aarMetadata { minCompileSdk = 29 } } productFlavors { register("foo") { ... aarMetadata { minCompileSdk = 30 } } } }
আপনি যদি একাধিক স্থানে minCompileSdk সেট করেন, তাহলে Gradle বিল্ড প্রক্রিয়ার সময় সেটিংসের স্থানগুলোকে নিম্নলিখিতভাবে অগ্রাধিকার দেয়:
buildTypes{}productFlavors{}defaultConfig{}
পূর্ববর্তী উদাহরণে, যেখানে minCompileSdk defaultConfig{} এবং productFlavors{} উভয়টিতেই সংজ্ঞায়িত করা আছে, সেখানে productFlavors{} অগ্রাধিকার দেওয়া হয়েছে এবং minCompileSdk মান ৩০ নির্ধারণ করা হয়েছে।
কোড এবং রিসোর্স একত্রিত করার সময় গ্রেডল কীভাবে সেটিংসকে অগ্রাধিকার দেয় সে সম্পর্কে আরও জানতে, ‘বিল্ড উইথ সোর্স সেটস’ দেখুন।
টেস্ট ফিক্সচার সক্রিয় করুন
টেস্ট ফিক্সচার সাধারণত পরীক্ষাধীন কোড সেট আপ করতে বা কোনো কম্পোনেন্টের পরীক্ষা সহজতর করতে ব্যবহৃত হয়। সংস্করণ ৭.১ থেকে শুরু করে, AGP অ্যাপ্লিকেশন এবং ডাইনামিক-ফিচার প্রজেক্টের পাশাপাশি লাইব্রেরি প্রজেক্টের জন্যও টেস্ট ফিক্সচার তৈরি করতে পারে।
অন্যদের ব্যবহারের জন্য কোনো লাইব্রেরি প্রকাশ করার সময়, আপনার API-এর জন্য টেস্ট ফিক্সচার তৈরি করার কথা বিবেচনা করুন। মডিউল-স্তরের build.gradle ফাইলে টেস্ট ফিক্সচার চালু করা যেতে পারে:
গ্রুভি
android { testFixtures { enable = true } }
কোটলিন
android { testFixtures { enable = true } }
যখন আপনি টেস্ট ফিক্সচার চালু করেন, গ্রেডল স্বয়ংক্রিয়ভাবে src/testFixtures নামে একটি সোর্স সেট তৈরি করে যেখানে আপনি টেস্ট ফিক্সচার লিখতে পারেন।
টেস্ট ফিক্সচার ব্যবহার সম্পর্কে আরও তথ্যের জন্য, গ্রেডলের ডকুমেন্টেশন দেখুন।