একটি অ্যান্ড্রয়েড লাইব্রেরি কাঠামোগতভাবে একটি অ্যান্ড্রয়েড অ্যাপ মডিউলের মতো। এতে একটি অ্যাপ তৈরির জন্য প্রয়োজনীয় সবকিছুই অন্তর্ভুক্ত থাকে, যার মধ্যে রয়েছে সোর্স কোড, রিসোর্স ফাইল এবং একটি অ্যান্ড্রয়েড ম্যানিফেস্ট।
তবে, একটি ডিভাইসে চলমান APK-তে কম্পাইল করার পরিবর্তে, একটি অ্যান্ড্রয়েড লাইব্রেরি একটি অ্যান্ড্রয়েড আর্কাইভ (AAR) ফাইলে কম্পাইল করে যা আপনি একটি অ্যান্ড্রয়েড অ্যাপ মডিউলের জন্য নির্ভরতা হিসাবে ব্যবহার করতে পারেন। JAR ফাইলের বিপরীতে, AAR ফাইলগুলি অ্যান্ড্রয়েড অ্যাপগুলির জন্য নিম্নলিখিত কার্যকারিতা প্রদান করে:
- AAR ফাইলগুলিতে অ্যান্ড্রয়েড রিসোর্স এবং একটি ম্যানিফেস্ট ফাইল থাকতে পারে, যা আপনাকে কোটলিন বা জাভা ক্লাস এবং পদ্ধতি ছাড়াও লেআউট এবং ড্রয়েবলের মতো শেয়ার্ড রিসোর্সগুলিকে একত্রিত করতে দেয়।
- AAR ফাইলগুলিতে অ্যাপ মডিউলের C/C++ কোড দ্বারা ব্যবহারের জন্য C/C++ লাইব্রেরি থাকতে পারে।
একটি লাইব্রেরি মডিউল নিম্নলিখিত পরিস্থিতিতে কার্যকর:
- একাধিক অ্যাপ তৈরি করার সময় যা একই উপাদান ব্যবহার করে, যেমন কার্যকলাপ, পরিষেবা, অথবা UI লেআউট
- যখন এমন একটি অ্যাপ তৈরি করা হয় যা একাধিক APK ভার্সনে বিদ্যমান, যেমন একটি বিনামূল্যের এবং অর্থপ্রদানের সংস্করণ, যা মূল উপাদানগুলি ভাগ করে নেয়
উভয় ক্ষেত্রেই, আপনি যে ফাইলগুলি পুনরায় ব্যবহার করতে চান সেগুলি একটি লাইব্রেরি মডিউলে সরান এবং তারপরে প্রতিটি অ্যাপ মডিউলের জন্য নির্ভরতা হিসাবে লাইব্রেরি যুক্ত করুন।
এই পৃষ্ঠাটি ব্যাখ্যা করে কিভাবে একটি অ্যান্ড্রয়েড লাইব্রেরি মডিউল তৈরি এবং ব্যবহার করতে হয়। কিভাবে একটি লাইব্রেরি প্রকাশ করবেন সে সম্পর্কে নির্দেশনার জন্য, আপনার লাইব্রেরি প্রকাশ করুন দেখুন।
একটি লাইব্রেরি মডিউল তৈরি করুন
আপনার প্রকল্পে একটি নতুন লাইব্রেরি মডিউল তৈরি করতে, নিম্নলিখিতভাবে এগিয়ে যান:
- ফাইল > নতুন > নতুন মডিউল ক্লিক করুন।
- প্রদর্শিত নতুন মডিউল তৈরি করুন ডায়ালগে, Android Library এ ক্লিক করুন, তারপর Next এ ক্লিক করুন।
একটি Kotlin অথবা Java লাইব্রেরি তৈরি করার বিকল্পও রয়েছে, যা একটি ঐতিহ্যবাহী JAR ফাইল তৈরি করে। যদিও একটি JAR ফাইল অনেক প্রকল্পের জন্য কার্যকর - বিশেষ করে যখন আপনি অন্যান্য প্ল্যাটফর্মের সাথে কোড শেয়ার করতে চান - এটি আপনাকে Android রিসোর্স বা ম্যানিফেস্ট ফাইল অন্তর্ভুক্ত করতে দেয় না, যা Android প্রকল্পগুলিতে কোড পুনঃব্যবহারের জন্য খুবই কার্যকর। এই নির্দেশিকাটি Android লাইব্রেরি তৈরির উপর দৃষ্টি নিবদ্ধ করে।
- আপনার লাইব্রেরির একটি নাম দিন এবং লাইব্রেরিতে কোডের জন্য একটি ন্যূনতম SDK সংস্করণ নির্বাচন করুন, তারপর Finish এ ক্লিক করুন।
গ্র্যাডেল প্রজেক্ট সিঙ্ক সম্পূর্ণ হলে, লাইব্রেরি মডিউলটি প্রজেক্ট প্যানে প্রদর্শিত হবে। যদি আপনি নতুন মডিউল ফোল্ডারটি দেখতে না পান, তাহলে নিশ্চিত করুন যে প্যানে অ্যান্ড্রয়েড ভিউ প্রদর্শিত হচ্ছে।
একটি অ্যাপ মডিউলকে লাইব্রেরি মডিউলে রূপান্তর করুন
যদি আপনার কাছে এমন একটি অ্যাপ মডিউল থাকে যার কোড আপনি পুনরায় ব্যবহার করতে চান, তাহলে আপনি এটিকে নিম্নরূপ একটি লাইব্রেরি মডিউলে রূপান্তর করতে পারেন:
- যদি আপনি Groovy ব্যবহার করেন তাহলে module-level
build.gradleফাইলটি খুলুন, অথবা যদি আপনি Kotlin স্ক্রিপ্ট ব্যবহার করেন তাহলেbuild.gradle.ktsফাইলটি খুলুন। -
applicationIdএর লাইনটি মুছে ফেলুন। শুধুমাত্র একটি Android অ্যাপ মডিউল এটি সংজ্ঞায়িত করতে পারে। - ফাইলের উপরে `plugins` ব্লকটি খুঁজুন যা দেখতে এরকম:
খাঁজকাটা
plugins { id 'com.android.application' }
কোটলিন
plugins { id("com.android.application") }
এটিকে নিম্নলিখিতগুলিতে পরিবর্তন করুন:
খাঁজকাটা
plugins { id 'com.android.library' }
কোটলিন
plugins { id("com.android.library") }
- ফাইলটি সংরক্ষণ করুন এবং File > Sync Project with Gradle Files এ ক্লিক করুন।
মডিউলটির গঠন একই রয়ে গেছে, কিন্তু এটি এখন একটি অ্যান্ড্রয়েড লাইব্রেরি হিসেবে কাজ করে। বিল্ডটি একটি APK ফাইলের পরিবর্তে একটি AAR ফাইল তৈরি করে।
যখন আপনি AAR ফাইলটি তৈরি করতে চান, তখন Project উইন্ডোতে লাইব্রেরি মডিউলটি নির্বাচন করুন এবং Build > Build APK এ ক্লিক করুন।
প্রকল্প কাঠামো ডায়ালগের মাধ্যমে নির্ভরতা যোগ করুন
আপনার প্রকল্পে নির্ভরতা যোগ করার জন্য আপনি প্রকল্প কাঠামো ডায়ালগ ব্যবহার করতে পারেন। নিম্নলিখিত বিভাগগুলিতে নির্ভরতা যোগ করার জন্য ডায়ালগটি কীভাবে ব্যবহার করবেন তা বর্ণনা করা হয়েছে।
একই প্রকল্পের মধ্যে থেকে আপনার লাইব্রেরি ব্যবহার করুন
একই প্রকল্পের মধ্যে অন্য কোনও অ্যাপ বা লাইব্রেরি মডিউলে আপনার নতুন অ্যান্ড্রয়েড লাইব্রেরির কোড ব্যবহার করতে, একটি প্রকল্প-স্তরের নির্ভরতা যোগ করুন:
- ফাইল > প্রকল্প কাঠামো > নির্ভরতা এ নেভিগেট করুন।
- আপনি যে মডিউলটি লাইব্রেরিতে যোগ করতে চান তা নির্বাচন করুন।
- ঘোষিত নির্ভরতা ট্যাবে, ক্লিক করুন
এবং মেনু থেকে মডিউল নির্ভরতা নির্বাচন করুন। 
"মডিউল নির্ভরতা যোগ করুন" ডায়ালগে, আপনার লাইব্রেরি মডিউল নির্বাচন করুন।

এই নির্ভরতা প্রয়োজন এমন কনফিগারেশন নির্বাচন করুন অথবা যদি এটি সমস্ত কনফিগারেশনের ক্ষেত্রে প্রযোজ্য হয় তবে বাস্তবায়ন নির্বাচন করুন, তারপর OK ক্লিক করুন।
অ্যান্ড্রয়েড স্টুডিও আপনার মডিউলের build.gradle অথবা build.gradle.kts ফাইল সম্পাদনা করে নিম্নলিখিত ফর্মে নির্ভরতা যোগ করে:
খাঁজকাটা
implementation project(path: ":example-library")
কোটলিন
implementation(project(":example-library"))
অন্যান্য প্রকল্পে আপনার লাইব্রেরি ব্যবহার করুন
নির্ভরতা (JAR এবং AAR) ভাগ করে নেওয়ার প্রস্তাবিত উপায় হল একটি Maven রিপোজিটরি ব্যবহার করা, যা হয় Maven Central এর মতো কোনও পরিষেবাতে হোস্ট করা হয়, অথবা আপনার স্থানীয় ডিস্কে একটি ডিরেক্টরি কাঠামো সহ। Maven রিপোজিটরি ব্যবহার সম্পর্কে আরও তথ্যের জন্য, Remote রিপোজিটরি দেখুন।
যখন একটি অ্যান্ড্রয়েড লাইব্রেরি একটি Maven রিপোজিটরিতে প্রকাশিত হয়, তখন মেটাডেটা অন্তর্ভুক্ত করা হয় যাতে লাইব্রেরির নির্ভরতাগুলি কনজিউমিং বিল্ডে অন্তর্ভুক্ত থাকে। এটি একাধিক জায়গায় ব্যবহার করা হলে লাইব্রেরিটি স্বয়ংক্রিয়ভাবে ডিডুপ্লিকেট হতে দেয়।
অন্য কোনও প্রকল্পে অন্য কোনও অ্যাপ মডিউলে আপনার অ্যান্ড্রয়েড লাইব্রেরির কোড ব্যবহার করতে, নিম্নলিখিতভাবে এগিয়ে যান:
- ফাইল > প্রকল্প কাঠামো > নির্ভরতা এ নেভিগেট করুন।
- ঘোষিত নির্ভরতা ট্যাবে, ক্লিক করুন
এবং মেনু থেকে Library Dependency নির্বাচন করুন। 
"লাইব্রেরি নির্ভরতা যোগ করুন" ডায়ালগে, অনুসন্ধান বাক্সটি ব্যবহার করে যোগ করার জন্য লাইব্রেরিটি খুঁজুন। এই ফর্মটি
settings.gradleঅথবাsettings.gradle.ktsফাইলেরdependencyResolutionManagement { repositories {...}}ব্লকে নির্দিষ্ট করা রিপোজিটরিগুলি অনুসন্ধান করে।
এই নির্ভরতা প্রয়োজন এমন কনফিগারেশন নির্বাচন করুন অথবা যদি এটি সমস্ত কনফিগারেশনের ক্ষেত্রে প্রযোজ্য হয় তবে বাস্তবায়ন নির্বাচন করুন, তারপর OK ক্লিক করুন।
আপনার অ্যাপের build.gradle অথবা build.gradle.kts ফাইলটি পরীক্ষা করে নিশ্চিত করুন যে নিম্নলিখিতগুলির মতো একটি ঘোষণা প্রদর্শিত হচ্ছে (আপনার নির্বাচিত বিল্ড কনফিগারেশনের উপর নির্ভর করে):
খাঁজকাটা
implementation 'com.example:examplelibrary:1.0.0'
কোটলিন
implementation("com.example:examplelibrary:1.0.0")
আপনার AAR অথবা JAR কে নির্ভরতা হিসেবে যোগ করুন
আপনার অ্যান্ড্রয়েড লাইব্রেরির কোড অন্য অ্যাপ মডিউলে ব্যবহার করতে, নিম্নলিখিতভাবে এগিয়ে যান:
- ফাইল > প্রকল্প কাঠামো > নির্ভরতা এ নেভিগেট করুন।
- ঘোষিত নির্ভরতা ট্যাবে, ক্লিক করুন
এবং মেনু থেকে Jar Dependency নির্বাচন করুন। 
Add Jar/Aar Dependency ডায়ালগে, আপনার AAR অথবা JAR ফাইলের পাথ লিখুন, তারপর নির্ভরতা প্রযোজ্য কনফিগারেশন নির্বাচন করুন। যদি লাইব্রেরিটি সমস্ত কনফিগারেশনের জন্য উপলব্ধ থাকে, তাহলে বাস্তবায়ন কনফিগারেশন নির্বাচন করুন।

আপনার অ্যাপের
build.gradleঅথবাbuild.gradle.ktsফাইলটি পরীক্ষা করে নিশ্চিত করুন যে নিম্নলিখিতগুলির মতো একটি ঘোষণা প্রদর্শিত হচ্ছে (আপনার নির্বাচিত বিল্ড কনফিগারেশনের উপর নির্ভর করে):খাঁজকাটা
implementation files('my_path/my_lib.aar')
কোটলিন
implementation(files("my_path/my_lib.aar"))
Android Studio-এর বাইরে চলমান Gradle বিল্ডের উপর নির্ভরতা আমদানি করতে, আপনার অ্যাপের build.gradle অথবা build.gradle.kts ফাইলে নির্ভরতার একটি পাথ যোগ করুন। উদাহরণস্বরূপ:
খাঁজকাটা
dependencies { implementation fileTree(dir: "libs", include: ["*.jar", "*.aar"]) }
কোটলিন
dependencies { implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar")))) }
গ্রেডল নির্ভরতা যোগ করার বিষয়ে আরও জানতে, বিল্ড নির্ভরতা যোগ করুন দেখুন।
একটি পাবলিক রিসোর্স ঘোষণা করুন
রিসোর্সে আপনার প্রোজেক্টের res/ ডিরেক্টরির সমস্ত ফাইল অন্তর্ভুক্ত থাকে, যেমন ছবি। লাইব্রেরির সমস্ত রিসোর্স ডিফল্টভাবে পাবলিক থাকে। সমস্ত রিসোর্সকে পরোক্ষভাবে ব্যক্তিগত করতে, আপনাকে কমপক্ষে একটি নির্দিষ্ট অ্যাট্রিবিউটকে পাবলিক হিসাবে সংজ্ঞায়িত করতে হবে।
একটি পাবলিক রিসোর্স ঘোষণা করতে, আপনার লাইব্রেরির public.xml ফাইলে একটি <public> ঘোষণা যোগ করুন। যদি আপনি আগে পাবলিক রিসোর্স যোগ না করে থাকেন, তাহলে আপনার লাইব্রেরির res/values/ ডিরেক্টরিতে public.xml ফাইলটি তৈরি করতে হবে।
নিচের উদাহরণ কোডটি mylib_app_name এবং mylib_public_string নামের দুটি পাবলিক স্ট্রিং রিসোর্স তৈরি করে:
<resources> <public name="mylib_app_name" type="string"/> <public name="mylib_public_string" type="string"/> </resources>
আপনার লাইব্রেরির ব্যবহারকারীদের শুধুমাত্র অভ্যন্তরীণ ব্যবহারের জন্য তৈরি রিসোর্স অ্যাক্সেস করতে বাধা দিতে, এক বা একাধিক পাবলিক রিসোর্স ঘোষণা করে এই স্বয়ংক্রিয় ব্যক্তিগত উপাধি প্রক্রিয়াটি ব্যবহার করুন। বিকল্পভাবে, আপনি একটি খালি <public /> ট্যাগ যোগ করে সমস্ত রিসোর্স ব্যক্তিগত করতে পারেন। এটি কোনও কিছুই পাবলিক হিসাবে চিহ্নিত করে না এবং সমস্ত রিসোর্স ব্যক্তিগত করে তোলে।
আপনার লাইব্রেরি ব্যবহার করে ডেভেলপারদের কাছে দৃশ্যমান রাখতে চান এমন যেকোনো রিসোর্স সর্বজনীন করা উচিত।
স্পষ্টতই অ্যাট্রিবিউটগুলিকে ব্যক্তিগত করে তোলার ফলে আপনার লাইব্রেরির ব্যবহারকারীরা অভ্যন্তরীণ লাইব্রেরি রিসোর্স থেকে কোড সম্পূর্ণ করার পরামর্শ পেতে পারবেন না এবং ব্যবহারকারীরা আপনার লাইব্রেরির ক্লায়েন্টদের ভেঙে না ফেলে ব্যক্তিগত রিসোর্সগুলির নাম পরিবর্তন করতে বা অপসারণ করতে পারবেন। কোড সম্পূর্ণ করার সময় ব্যক্তিগত রিসোর্সগুলি ফিল্টার করা হয় এবং আপনি যখন কোনও ব্যক্তিগত রিসোর্স উল্লেখ করার চেষ্টা করেন তখন লিন্ট টুল আপনাকে সতর্ক করে।
একটি লাইব্রেরি তৈরি করার সময়, Android Gradle প্লাগইন পাবলিক রিসোর্স সংজ্ঞাগুলি গ্রহণ করে এবং সেগুলিকে public.txt ফাইলে এক্সট্র্যাক্ট করে, যা পরে AAR ফাইলের ভিতরে প্যাকেজ করা হয়।
লাইব্রেরি মডিউলের উন্নয়ন বিবেচনা
আপনার লাইব্রেরি মডিউল এবং নির্ভরশীল অ্যাপগুলি তৈরি করার সময়, নিম্নলিখিত আচরণ এবং সীমাবদ্ধতাগুলি সম্পর্কে সচেতন থাকুন।
লাইব্রেরিগুলি অগ্রাধিকার ক্রমে একত্রিত করা হয়েছে।
একবার আপনার অ্যান্ড্রয়েড অ্যাপ মডিউলে লাইব্রেরি মডিউলের রেফারেন্স যোগ করার পরে, আপনি তাদের আপেক্ষিক অগ্রাধিকার সেট করতে পারেন। বিল্ড টাইমে, লাইব্রেরিগুলি অ্যাপের সাথে একের পর এক মার্জ করা হয়, সর্বনিম্ন অগ্রাধিকার থেকে শুরু করে সর্বোচ্চ পর্যন্ত।
একটি লাইব্রেরিতে রিসোর্স রেফারেন্সগুলি মার্জ করা রিসোর্সকে নির্দেশ করবে, অগত্যা লাইব্রেরি রিসোর্স নয়। একই নামের রিসোর্স থাকলে একটি লাইব্রেরি মডিউল অ্যাপ বা অন্যান্য লাইব্রেরির রিসোর্সের উপর নিজস্ব রিসোর্সের ব্যবহার জোরদার করতে পারে না।
রিসোর্স মার্জ দ্বন্দ্ব এড়িয়ে চলুন।
বিল্ড টুলগুলি একটি লাইব্রেরি মডিউল থেকে রিসোর্সগুলিকে একটি নির্ভরশীল অ্যাপ মডিউলের সাথে একত্রিত করে। যদি উভয় মডিউলে একটি প্রদত্ত রিসোর্সের নাম সংজ্ঞায়িত করা থাকে, তাহলে অ্যাপ থেকে রিসোর্সটি ব্যবহার করা হবে।
যদি একাধিক AAR লাইব্রেরির মধ্যে দ্বন্দ্ব দেখা দেয়, তাহলে নির্ভরতা তালিকার প্রথমে তালিকাভুক্ত লাইব্রেরির রিসোর্সটি (
dependenciesব্লকের শীর্ষের সবচেয়ে কাছাকাছি) ব্যবহার করা হয়।রিসোর্স দ্বন্দ্ব এড়াতে, একটি উপসর্গ বা অন্যান্য সামঞ্জস্যপূর্ণ নামকরণ স্কিম ব্যবহার করার কথা বিবেচনা করুন যা মডিউলের জন্য অনন্য (অথবা সমস্ত প্রকল্প মডিউলের জন্য অনন্য)।
মাল্টি-মডিউল বিল্ডে, JAR নির্ভরতাগুলিকে ট্রানজিটিভ নির্ভরতা হিসাবে বিবেচনা করা হয়।
যখন আপনি একটি লাইব্রেরি প্রকল্পে একটি JAR নির্ভরতা যোগ করেন যা একটি AAR আউটপুট করে, তখন JAR লাইব্রেরি মডিউল দ্বারা প্রক্রিয়াজাত করা হয় এবং এর AAR দিয়ে প্যাকেজ করা হয়।
তবে, যদি আপনার প্রকল্পে এমন একটি লাইব্রেরি মডিউল থাকে যা একটি অ্যাপ মডিউল দ্বারা ব্যবহৃত হয়, তাহলে অ্যাপ মডিউলটি লাইব্রেরির স্থানীয় JAR নির্ভরতাকে একটি ট্রানজিটিভ নির্ভরতা হিসাবে বিবেচনা করে। এই ক্ষেত্রে, স্থানীয় JAR অ্যাপ্লিকেশন মডিউল দ্বারা প্রক্রিয়া করা হয় যা এটি ব্যবহার করে, লাইব্রেরি মডিউল দ্বারা নয়। এটি লাইব্রেরির কোডে পরিবর্তনের কারণে সৃষ্ট ক্রমবর্ধমান বিল্ডগুলিকে গতি দেয়।
স্থানীয় JAR নির্ভরতার কারণে সৃষ্ট যেকোনো জাভা রিসোর্স দ্বন্দ্ব অবশ্যই লাইব্রেরি ব্যবহার করে এমন অ্যাপ মডিউলে সমাধান করতে হবে।
একটি লাইব্রেরি মডিউল একটি বহিরাগত JAR লাইব্রেরির উপর নির্ভর করতে পারে।
আপনি এমন একটি লাইব্রেরি মডিউল তৈরি করতে পারেন যা একটি বহিরাগত লাইব্রেরির উপর নির্ভর করে। এই ক্ষেত্রে, নির্ভরশীল মডিউলটি এমন একটি লক্ষ্যের বিরুদ্ধে তৈরি করতে হবে যাতে বহিরাগত লাইব্রেরি অন্তর্ভুক্ত থাকে।
মনে রাখবেন যে লাইব্রেরি মডিউল এবং নির্ভরশীল অ্যাপ উভয়কেই তাদের ম্যানিফেস্ট ফাইলগুলিতে একটি
<uses-library>এলিমেন্টে বহিরাগত লাইব্রেরি ঘোষণা করতে হবে।অ্যাপ মডিউলের
minSdkVersionঅবশ্যই লাইব্রেরি দ্বারা সংজ্ঞায়িত সংস্করণের সমান বা তার চেয়ে বড় হতে হবে।একটি লাইব্রেরি নির্ভরশীল অ্যাপ মডিউলের অংশ হিসেবে সংকলিত হয়, তাই লাইব্রেরি মডিউলে ব্যবহৃত API গুলি অবশ্যই অ্যাপ মডিউলটি সমর্থন করে এমন প্ল্যাটফর্ম সংস্করণের সাথে সামঞ্জস্যপূর্ণ হতে হবে।
প্রতিটি লাইব্রেরি মডিউল নিজস্ব
Rক্লাস তৈরি করে।যখন আপনি নির্ভরশীল অ্যাপ মডিউল তৈরি করেন, তখন লাইব্রেরি মডিউলগুলি একটি AAR ফাইলে কম্পাইল করা হয় এবং তারপর অ্যাপ মডিউলে যোগ করা হয়। অতএব, প্রতিটি লাইব্রেরির নিজস্ব
Rক্লাস থাকে, যা লাইব্রেরির প্যাকেজের নাম অনুসারে নামকরণ করা হয়।প্রধান মডিউল এবং লাইব্রেরি মডিউল থেকে উৎপন্ন
Rক্লাসটি প্রয়োজনীয় সমস্ত প্যাকেজে তৈরি করা হয়, যার মধ্যে প্রধান মডিউলের প্যাকেজ এবং লাইব্রেরির প্যাকেজ অন্তর্ভুক্ত।একটি লাইব্রেরি মডিউলে নিজস্ব ProGuard কনফিগারেশন ফাইল থাকতে পারে।
যদি আপনার কাছে AAR তৈরি এবং প্রকাশ করার জন্য একটি লাইব্রেরি প্রকল্প থাকে, তাহলে আপনি আপনার লাইব্রেরির বিল্ড কনফিগারেশনে একটি ProGuard কনফিগারেশন ফাইল যোগ করতে পারেন। যদি আপনি তা করেন, তাহলে Android Gradle প্লাগইন আপনার নির্দিষ্ট করা ProGuard নিয়মগুলি প্রয়োগ করে। বিল্ড টুলগুলি লাইব্রেরি মডিউলের জন্য তৈরি AAR ফাইলের মধ্যে এই ফাইলটি এম্বেড করে। যখন আপনি একটি অ্যাপ মডিউলে লাইব্রেরি যোগ করেন, তখন লাইব্রেরির ProGuard ফাইলটি অ্যাপ মডিউলের ProGuard কনফিগারেশন ফাইলে (
proguard.txt) যুক্ত হয়।আপনার লাইব্রেরি মডিউলে একটি ProGuard ফাইল এম্বেড করার মাধ্যমে, আপনি নিশ্চিত করতে সাহায্য করেন যে আপনার লাইব্রেরির উপর নির্ভরশীল অ্যাপ মডিউলগুলিকে আপনার লাইব্রেরি ব্যবহার করার জন্য তাদের ProGuard ফাইলগুলি ম্যানুয়ালি আপডেট করতে হবে না। যখন Android Studio বিল্ড সিস্টেম আপনার অ্যাপ তৈরি করে, তখন এটি অ্যাপ মডিউল এবং লাইব্রেরি উভয়ের নির্দেশাবলী ব্যবহার করে। তাই লাইব্রেরিতে আলাদা ধাপে কোড সঙ্কর চালানোর প্রয়োজন নেই।
আপনার লাইব্রেরি প্রজেক্টে ProGuard নিয়ম যোগ করতে, আপনার লাইব্রেরির
build.gradleঅথবাbuild.gradle.ktsফাইলেরdefaultConfigব্লকের ভিতরেconsumerProguardFilesপ্রপার্টি সহ ফাইলের নাম উল্লেখ করুন।উদাহরণস্বরূপ, নিম্নলিখিত স্নিপেটটি
lib-proguard-rules.txtলাইব্রেরির ProGuard কনফিগারেশন ফাইল হিসেবে সেট করে:খাঁজকাটা
android { defaultConfig { consumerProguardFiles 'lib-proguard-rules.txt' } ... }
কোটলিন
android { defaultConfig { consumerProguardFiles("lib-proguard-rules.txt") } ... }
তবে, যদি আপনার লাইব্রেরি মডিউলটি একটি মাল্টি-মডিউল বিল্ডের অংশ হয় যা একটি APK-তে কম্পাইল হয় এবং AAR তৈরি না করে, তাহলে শুধুমাত্র সেই অ্যাপ মডিউলে কোড শঙ্কন চালান যা লাইব্রেরি ব্যবহার করে। ProGuard নিয়ম এবং তাদের ব্যবহার সম্পর্কে আরও জানতে, আপনার অ্যাপটি Shrink, obfuscate এবং optimize পড়ুন।
একটি লাইব্রেরি মডিউল পরীক্ষা করা প্রায় একটি অ্যাপ পরীক্ষা করার মতোই।
প্রধান পার্থক্য হল লাইব্রেরি এবং এর নির্ভরতাগুলি স্বয়ংক্রিয়ভাবে পরীক্ষামূলক APK-এর নির্ভরতা হিসাবে অন্তর্ভুক্ত হয়। এর অর্থ হল পরীক্ষামূলক APK-তে কেবল নিজস্ব কোডই নয় বরং লাইব্রেরির AAR এবং এর সমস্ত নির্ভরতাও অন্তর্ভুক্ত থাকে। যেহেতু পরীক্ষার অধীনে কোনও পৃথক অ্যাপ নেই, তাই
androidTestটাস্ক শুধুমাত্র পরীক্ষামূলক APK ইনস্টল (এবং আনইনস্টল) করে।একাধিক ম্যানিফেস্ট ফাইল মার্জ করার সময়, গ্র্যাডেল ডিফল্ট অগ্রাধিকার ক্রম অনুসরণ করে এবং লাইব্রেরির ম্যানিফেস্টকে টেস্ট APK এর প্রধান ম্যানিফেস্টে মার্জ করে।
একটি AAR ফাইলের অ্যানাটমি
AAR ফাইলের ফাইল এক্সটেনশন হল .aar , এবং Maven আর্টিফ্যাক্ট টাইপও aar । ফাইলটি নিজেই একটি ZIP ফাইল। একমাত্র বাধ্যতামূলক এন্ট্রি হল /AndroidManifest.xml ।
একটি AAR ফাইলে নিম্নলিখিত এক বা একাধিক ঐচ্ছিক এন্ট্রি অন্তর্ভুক্ত থাকতে পারে:
-
/classes.jar -
/res/ -
/R.txt -
/public.txt -
/assets/ -
/libs/ name .jar -
/jni/ abi_name / name .so(যেখানে abi_name হল অ্যান্ড্রয়েড-সমর্থিত ABI গুলির মধ্যে একটি) -
/proguard.txt -
/lint.jar -
/api.jar -
/prefab/নেটিভ লাইব্রেরি রপ্তানির জন্য