একটি অ্যান্ড্রয়েড লাইব্রেরি তৈরি করুন

একটি অ্যান্ড্রয়েড লাইব্রেরি কাঠামোগতভাবে একটি অ্যান্ড্রয়েড অ্যাপ মডিউলের মতোই। এটিতে সোর্স কোড, রিসোর্স ফাইল এবং একটি অ্যান্ড্রয়েড ম্যানিফেস্ট সহ একটি অ্যাপ তৈরি করার জন্য প্রয়োজনীয় সবকিছু অন্তর্ভুক্ত রয়েছে।

যাইহোক, একটি ডিভাইসে চালিত একটি APK এ কম্পাইল করার পরিবর্তে, একটি Android লাইব্রেরি একটি Android আর্কাইভ (AAR) ফাইলে কম্পাইল করে যা আপনি একটি Android অ্যাপ মডিউলের জন্য নির্ভরতা হিসাবে ব্যবহার করতে পারেন। JAR ফাইলগুলির বিপরীতে, AAR ফাইলগুলি Android অ্যাপগুলির জন্য নিম্নলিখিত কার্যকারিতা অফার করে:

  • AAR ফাইলগুলিতে অ্যান্ড্রয়েড সংস্থান এবং একটি ম্যানিফেস্ট ফাইল থাকতে পারে, যা আপনাকে কোটলিন বা জাভা ক্লাস এবং পদ্ধতিগুলি ছাড়াও লেআউট এবং অঙ্কনযোগ্যগুলির মতো ভাগ করা সংস্থানগুলিতে বান্ডিল করতে দেয়৷
  • অ্যাপ মডিউলের C/C++ কোড দ্বারা ব্যবহারের জন্য AAR ফাইলগুলিতে C/C++ লাইব্রেরি থাকতে পারে।

একটি লাইব্রেরি মডিউল নিম্নলিখিত পরিস্থিতিতে দরকারী:

  • একাধিক অ্যাপ্লিকেশান তৈরি করার সময় যা একই উপাদানগুলির কিছু ব্যবহার করে, যেমন কার্যকলাপ, পরিষেবা বা UI লেআউট
  • একটি অ্যাপ তৈরি করার সময় যেটি একাধিক APK বৈচিত্রে বিদ্যমান থাকে, যেমন একটি বিনামূল্যে এবং অর্থপ্রদানের সংস্করণ, যা মূল উপাদানগুলি ভাগ করে

উভয় ক্ষেত্রেই, আপনি যে ফাইলগুলিকে একটি লাইব্রেরি মডিউলে পুনঃব্যবহার করতে চান সেগুলি সরান এবং তারপর প্রতিটি অ্যাপ মডিউলের জন্য নির্ভরতা হিসাবে লাইব্রেরি যুক্ত করুন৷

এই পৃষ্ঠাটি ব্যাখ্যা করে কিভাবে একটি অ্যান্ড্রয়েড লাইব্রেরি মডিউল তৈরি এবং ব্যবহার করতে হয়। কিভাবে একটি লাইব্রেরি প্রকাশ করতে হয় তার নির্দেশনার জন্য, আপনার লাইব্রেরি প্রকাশ করুন দেখুন

একটি লাইব্রেরি মডিউল তৈরি করুন

আপনার প্রকল্পে একটি নতুন লাইব্রেরি মডিউল তৈরি করতে, নিম্নরূপ এগিয়ে যান:

  1. ফাইল > নতুন > নতুন মডিউল ক্লিক করুন।
  2. প্রদর্শিত নতুন মডিউল তৈরি ডায়ালগে, অ্যান্ড্রয়েড লাইব্রেরিতে ক্লিক করুন, তারপরে পরবর্তীতে ক্লিক করুন।

    একটি কোটলিন বা জাভা লাইব্রেরি তৈরি করার একটি বিকল্পও রয়েছে, যা একটি ঐতিহ্যগত JAR ফাইল তৈরি করে। যদিও একটি JAR ফাইল অনেক প্রকল্পের জন্য দরকারী - বিশেষ করে যখন আপনি অন্যান্য প্ল্যাটফর্মের সাথে কোড ভাগ করতে চান - এটি আপনাকে Android সংস্থান বা ম্যানিফেস্ট ফাইলগুলি অন্তর্ভুক্ত করতে দেয় না, যা Android প্রকল্পগুলিতে কোড পুনঃব্যবহারের জন্য খুব দরকারী৷ এই গাইডটি অ্যান্ড্রয়েড লাইব্রেরি তৈরিতে ফোকাস করে।

  3. আপনার লাইব্রেরির একটি নাম দিন এবং লাইব্রেরিতে কোডের জন্য একটি ন্যূনতম SDK সংস্করণ নির্বাচন করুন, তারপর Finish এ ক্লিক করুন।

Gradle প্রোজেক্ট সিঙ্ক সম্পূর্ণ হলে, লাইব্রেরি মডিউলটি প্রজেক্ট প্যানে প্রদর্শিত হবে। আপনি যদি নতুন মডিউল ফোল্ডারটি দেখতে না পান তবে নিশ্চিত করুন যে ফলকটি Android ভিউ প্রদর্শন করছে৷

একটি অ্যাপ মডিউলকে একটি লাইব্রেরি মডিউলে রূপান্তর করুন

আপনার যদি কোড সহ একটি বিদ্যমান অ্যাপ মডিউল থাকে যা আপনি পুনঃব্যবহার করতে চান তবে আপনি এটিকে একটি লাইব্রেরি মডিউলে পরিণত করতে পারেন:

  1. মডিউল-স্তরের build.gradle ফাইলটি খুলুন, যদি আপনি Groovy ব্যবহার করেন, অথবা build.gradle.kts ফাইলটি, যদি আপনি Kotlin স্ক্রিপ্ট ব্যবহার করেন।
  2. applicationId জন্য লাইন মুছুন। শুধুমাত্র একটি Android অ্যাপ মডিউল এটি সংজ্ঞায়িত করতে পারে।
  3. ফাইলের শীর্ষে 'প্লাগইনস' ব্লকটি খুঁজুন যা এইরকম দেখাচ্ছে:

    গ্রোভি

      plugins {
          id 'com.android.application'
      }
      

    কোটলিন

      plugins {
          id("com.android.application")
      }
      

    এটিকে নিম্নলিখিতগুলিতে পরিবর্তন করুন:

    গ্রোভি

      plugins {
          id 'com.android.library'
      }
      

    কোটলিন

      plugins {
          id("com.android.library")
      }
      
  4. ফাইলটি সংরক্ষণ করুন এবং File > Sync Project with Gradle Files এ ক্লিক করুন।

মডিউলের গঠন একই রয়ে গেছে, কিন্তু এটি এখন একটি অ্যান্ড্রয়েড লাইব্রেরি হিসেবে কাজ করে। বিল্ড একটি APK এর পরিবর্তে একটি AAR ফাইল তৈরি করে।

আপনি যখন AAR ফাইল তৈরি করতে চান, তখন প্রজেক্ট উইন্ডোতে লাইব্রেরি মডিউলটি নির্বাচন করুন এবং Build > Build APK এ ক্লিক করুন।

প্রজেক্ট স্ট্রাকচার ডায়ালগের সাথে নির্ভরতা যোগ করুন

আপনি আপনার প্রকল্পে নির্ভরতা যোগ করতে প্রকল্প কাঠামো ডায়ালগ ব্যবহার করতে পারেন। নির্ভরতা যোগ করতে ডায়ালগটি কীভাবে ব্যবহার করবেন তা নিম্নলিখিত বিভাগগুলি বর্ণনা করে।

একই প্রকল্পের মধ্যে থেকে আপনার লাইব্রেরি ব্যবহার করুন

একই প্রকল্পের মধ্যে অন্য অ্যাপ বা লাইব্রেরি মডিউলে আপনার নতুন অ্যান্ড্রয়েড লাইব্রেরির কোড ব্যবহার করতে, একটি প্রকল্প-স্তরের নির্ভরতা যোগ করুন:

  1. ফাইল > প্রজেক্ট স্ট্রাকচার > নির্ভরতা -এ নেভিগেট করুন।
  2. আপনি লাইব্রেরি যোগ করতে চান যে মডিউল নির্বাচন করুন.
  3. ঘোষিত নির্ভরতা ট্যাবে, ক্লিক করুন এবং মেনু থেকে মডিউল নির্ভরতা নির্বাচন করুন।

  4. অ্যাড মডিউল নির্ভরতা ডায়ালগে, আপনার লাইব্রেরি মডিউল নির্বাচন করুন।

    প্রজেক্ট স্ট্রাকচারে মডিউল নির্ভরতা যোগ করুন ডায়ালগ

  5. এই নির্ভরতা প্রয়োজন এমন কনফিগারেশন নির্বাচন করুন অথবা সমস্ত কনফিগারেশনে প্রযোজ্য হলে বাস্তবায়ন নির্বাচন করুন, তারপর ওকে ক্লিক করুন।

অ্যান্ড্রয়েড স্টুডিও নিম্নলিখিত ফর্মে নির্ভরতা যোগ করতে আপনার মডিউলের build.gradle বা build.gradle.kts ফাইল সম্পাদনা করে:

গ্রোভি

  implementation project(path: ":example-library")

কোটলিন

  implementation(project(":example-library"))

অন্যান্য প্রকল্পে আপনার লাইব্রেরি ব্যবহার করুন

নির্ভরতা (JARs এবং AARs) ভাগ করার প্রস্তাবিত উপায় হল একটি Maven সংগ্রহস্থলের সাথে, হয় একটি পরিষেবাতে হোস্ট করা হয়, যেমন Maven Central , অথবা আপনার স্থানীয় ডিস্কে একটি ডিরেক্টরি কাঠামো সহ। Maven সংগ্রহস্থল ব্যবহার সম্পর্কে আরও তথ্যের জন্য, দূরবর্তী সংগ্রহস্থল দেখুন।

যখন একটি অ্যান্ড্রয়েড লাইব্রেরি একটি Maven সংগ্রহস্থলে প্রকাশিত হয়, তখন মেটাডেটা অন্তর্ভুক্ত করা হয় যাতে লাইব্রেরির নির্ভরতাগুলি গ্রাসকারী বিল্ডে অন্তর্ভুক্ত করা হয়। এটি একাধিক জায়গায় লাইব্রেরি ব্যবহার করা হলে স্বয়ংক্রিয়ভাবে ডিডুপ্লিকেট হতে দেয়।

একটি ভিন্ন প্রকল্পে অন্য অ্যাপ মডিউলে আপনার অ্যান্ড্রয়েড লাইব্রেরির কোড ব্যবহার করতে, নিম্নরূপ এগিয়ে যান:

  1. ফাইল > প্রজেক্ট স্ট্রাকচার > নির্ভরতা -এ নেভিগেট করুন।
  2. ঘোষিত নির্ভরতা ট্যাবে, ক্লিক করুন এবং মেনুতে লাইব্রেরি নির্ভরতা নির্বাচন করুন।

  3. লাইব্রেরি নির্ভরতা যোগ করুন ডায়ালগে, যোগ করার জন্য লাইব্রেরি খুঁজে পেতে অনুসন্ধান বাক্সটি ব্যবহার করুন। এই ফর্মটি settings.gradle বা settings.gradle.kts ফাইলে dependencyResolutionManagement { repositories {...}} ব্লকে নির্দিষ্ট করা সংগ্রহস্থলগুলি অনুসন্ধান করে৷

    প্রকল্পের কাঠামোতে লাইব্রেরি নির্ভরতা যোগ করুন ডায়ালগ

  4. এই নির্ভরতা প্রয়োজন এমন কনফিগারেশন নির্বাচন করুন অথবা সমস্ত কনফিগারেশনে প্রযোজ্য হলে বাস্তবায়ন নির্বাচন করুন, তারপর ওকে ক্লিক করুন।

আপনার অ্যাপের build.gradle বা build.gradle.kts ফাইলটি পরীক্ষা করে নিশ্চিত করুন যে নিম্নলিখিতগুলির মতো একটি ঘোষণা উপস্থিত হয়েছে (আপনার নির্বাচিত বিল্ড কনফিগারেশনের উপর নির্ভর করে):

গ্রোভি

  implementation 'com.example:examplelibrary:1.0.0'

কোটলিন

  implementation("com.example:examplelibrary:1.0.0")

নির্ভরতা হিসাবে আপনার AAR বা JAR যোগ করুন

অন্য অ্যাপ মডিউলে আপনার অ্যান্ড্রয়েড লাইব্রেরির কোড ব্যবহার করতে, নিম্নরূপ এগিয়ে যান:

  1. ফাইল > প্রজেক্ট স্ট্রাকচার > নির্ভরতা -এ নেভিগেট করুন।
  2. ঘোষিত নির্ভরতা ট্যাবে, ক্লিক করুন এবং মেনুতে জার নির্ভরতা নির্বাচন করুন।

  3. Jar/Aar নির্ভরতা যুক্ত ডায়ালগে, আপনার AAR বা JAR ফাইলের পথটি প্রবেশ করান, তারপরে নির্ভরতা প্রযোজ্য কনফিগারেশন নির্বাচন করুন। যদি লাইব্রেরিটি সমস্ত কনফিগারেশনের জন্য উপলব্ধ থাকে, তাহলে বাস্তবায়ন কনফিগারেশন নির্বাচন করুন।

    প্রকল্পের কাঠামোতে AAR নির্ভরতা যোগ করুন ডায়ালগ

    আপনার অ্যাপের build.gradle বা build.gradle.kts ফাইলটি পরীক্ষা করে নিশ্চিত করুন যে নিম্নলিখিতগুলির মতো একটি ঘোষণা উপস্থিত হয়েছে (আপনার নির্বাচিত বিল্ড কনফিগারেশনের উপর নির্ভর করে):

    গ্রোভি

      implementation files('my_path/my_lib.aar')
    

    কোটলিন

      implementation(files("my_path/my_lib.aar"))
    

অ্যান্ড্রয়েড স্টুডিওর বাইরে চলমান গ্রেডল বিল্ডের উপর নির্ভরতা আমদানি করতে, আপনার অ্যাপের 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"))))
}

Gradle নির্ভরতা যোগ করার বিষয়ে আরও জানতে, বিল্ড নির্ভরতা যোগ করুন দেখুন।

একটি পাবলিক রিসোর্স ঘোষণা

সম্পদ আপনার প্রকল্পের 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 /> ট্যাগ যোগ করে সমস্ত সংস্থান ব্যক্তিগত করতে পারেন। এটি সর্বজনীন হিসাবে কিছুই চিহ্নিত করে না এবং সমস্ত সংস্থানকে ব্যক্তিগত করে তোলে।

আপনার লাইব্রেরি ব্যবহার করে আপনি বিকাশকারীদের কাছে দৃশ্যমান থাকতে চান এমন কোনো সংস্থান সর্বজনীন করা উচিত।

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

একটি লাইব্রেরি তৈরি করার সময়, অ্যান্ড্রয়েড গ্রেডল প্লাগইন পাবলিক রিসোর্স সংজ্ঞা পায় এবং সেগুলিকে public.txt ফাইলে বের করে, যা পরে AAR ফাইলের মধ্যে প্যাকেজ করা হয়।

লাইব্রেরি মডিউলগুলির জন্য বিকাশের বিবেচনা

আপনি আপনার লাইব্রেরি মডিউল এবং নির্ভরশীল অ্যাপ্লিকেশনগুলি বিকাশ করার সাথে সাথে নিম্নলিখিত আচরণ এবং সীমাবদ্ধতা সম্পর্কে সচেতন হন।

  • লাইব্রেরি অগ্রাধিকার ক্রমে একত্রিত করা হয়.

    একবার আপনি আপনার অ্যান্ড্রয়েড অ্যাপ মডিউলে লাইব্রেরি মডিউলের রেফারেন্স যোগ করলে, আপনি তাদের আপেক্ষিক অগ্রাধিকার সেট করতে পারেন। বিল্ড টাইমে, লাইব্রেরিগুলি সর্বনিম্ন অগ্রাধিকার থেকে শুরু করে সর্বোচ্চ অগ্রাধিকার পর্যন্ত এক সময়ে অ্যাপের সাথে একত্রিত হয়।

  • সম্পদ একত্রীকরণ দ্বন্দ্ব এড়িয়ে চলুন.

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

    যদি একাধিক AAR লাইব্রেরির মধ্যে বিরোধ দেখা দেয়, তাহলে নির্ভরতা তালিকায় ( dependencies ব্লকের শীর্ষের সবচেয়ে কাছাকাছি) তালিকাভুক্ত লাইব্রেরি থেকে সংস্থান ব্যবহার করা হয়।

    সম্পদ দ্বন্দ্ব এড়াতে, অ-ট্রানজিটিভ R ক্লাস ব্যবহার করুন। যদি এটি সম্ভব না হয়, তাহলে একটি উপসর্গ বা অন্যান্য সামঞ্জস্যপূর্ণ নামকরণ স্কিম ব্যবহার করার কথা বিবেচনা করুন যা মডিউলের জন্য অনন্য (বা সমস্ত প্রকল্প মডিউল জুড়ে অনন্য)।

  • মাল্টি-মডিউল বিল্ডগুলিতে, 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 ফাইলগুলিকে ম্যানুয়ালি আপডেট করতে হবে না৷ যখন অ্যান্ড্রয়েড স্টুডিও বিল্ড সিস্টেম আপনার অ্যাপ তৈরি করে, তখন এটি অ্যাপ মডিউল এবং লাইব্রেরি উভয়ের নির্দেশাবলী ব্যবহার করে। সুতরাং একটি পৃথক ধাপে লাইব্রেরিতে একটি কোড সংকোচন চালানোর কোন প্রয়োজন নেই।

    আপনার লাইব্রেরি প্রকল্পে 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 নিয়ম এবং তাদের ব্যবহার সম্পর্কে আরও জানতে, সঙ্কুচিত করুন, অস্পষ্ট করুন এবং আপনার অ্যাপটি অপ্টিমাইজ করুন

  • একটি লাইব্রেরি মডিউল পরীক্ষা করা প্রায় একটি অ্যাপ পরীক্ষা করার মতই।

    প্রধান পার্থক্য হল যে লাইব্রেরি এবং এর নির্ভরতাগুলি স্বয়ংক্রিয়ভাবে পরীক্ষার APK নির্ভরতা হিসাবে অন্তর্ভুক্ত করা হয়। এর মানে হল যে টেস্ট APK-এ শুধুমাত্র এর নিজস্ব কোডই নয়, লাইব্রেরির AAR এবং এর সমস্ত নির্ভরতাও অন্তর্ভুক্ত রয়েছে। যেহেতু পরীক্ষার অধীনে কোনো আলাদা অ্যাপ নেই, তাই androidTest টাস্ক শুধুমাত্র টেস্ট APK ইনস্টল (এবং আনইনস্টল) করে।

    একাধিক ম্যানিফেস্ট ফাইল মার্জ করার সময়, Gradle ডিফল্ট অগ্রাধিকার ক্রম অনুসরণ করে এবং লাইব্রেরির ম্যানিফেস্টকে পরীক্ষার APK এর প্রধান ম্যানিফেস্টে মার্জ করে।

একটি AAR ফাইলের অ্যানাটমি

একটি AAR ফাইলের ফাইল এক্সটেনশন হল .aar , এবং Maven আর্টিফ্যাক্ট টাইপ হল aar । ফাইলটি নিজেই একটি জিপ ফাইল। শুধুমাত্র বাধ্যতামূলক এন্ট্রি হল /AndroidManifest.xml

একটি AAR ফাইল নিম্নলিখিত ঐচ্ছিক এন্ট্রিগুলির মধ্যে একটি বা একাধিক অন্তর্ভুক্ত করতে পারে: