মুক্তির জন্য আপনার লাইব্রেরি প্রস্তুত করুন

এই পৃষ্ঠায় Android Gradle প্লাগইন (AGP) ব্যবহার করে আপনার Android লাইব্রেরি প্রকল্পটি প্রকাশনার জন্য প্রস্তুত করার জন্য প্রয়োজনীয় বৈশিষ্ট্য এবং বিকল্পগুলি বর্ণনা করা হয়েছে। এমনকি যদি আপনি আপনার লাইব্রেরি তৈরির শুরুতে এই বৈশিষ্ট্যগুলির কিছু সেট করে থাকেন, তবুও আপনার সেটিংস অপ্টিমাইজ করার জন্য নিম্নলিখিত নির্দেশিকাটি পর্যালোচনা করুন।

একটি নেমস্পেস বেছে নিন

অ্যান্ড্রয়েড লাইব্রেরিগুলিকে একটি নেমস্পেস ঘোষণা করতে হবে যাতে তারা তাদের রিসোর্সগুলি কম্পাইল করার সময় একটি অনন্য R ক্লাস তৈরি করতে পারে। ব্যবহারকারীরা লাইব্রেরি এবং এর R ক্লাস থেকে নিয়মিত ক্লাস আমদানি করার সময় বিভ্রান্তি এড়াতে এই নেমস্পেসটি লাইব্রেরির রুট ক্লাস প্যাকেজের সাথে ঘনিষ্ঠভাবে মিলিত হওয়া উচিত।

AGP 7.0 দিয়ে শুরু করে, আপনি অ্যাপের build.gradle ফাইলে namespace সেট করতে পারেন, যেমনটি নিম্নলিখিত কোড উদাহরণে দেখানো হয়েছে:

খাঁজকাটা

android {
  namespace = 'com.example.library'
}

কোটলিন

android {
  namespace = "com.example.library"
}

নেমস্পেস হল লাইব্রেরির একটি ডেভেলপার-মুখী সম্পত্তি। এটি অ্যাপ্লিকেশন পরিচয়ের সাথে সম্পর্কিত নয়, যা applicationId সম্পত্তি ব্যবহার করে সেট করা হয়।

AGP এর পূর্ববর্তী সংস্করণগুলিতে, applicationId প্রোপার্টি (একটি অ্যাপের জন্য) এবং namespace প্রোপার্টি (একটি লাইব্রেরির জন্য) উভয়ই ম্যানিফেস্টের package অ্যাট্রিবিউট ব্যবহার করে সেট করা যেত, যা বিভ্রান্তির সৃষ্টি করেছিল।

একটি minSdkVersion মান বেছে নিন

আপনার লাইব্রেরির জন্য minSdkVersion নির্বাচন করা আপনার লাইব্রেরি প্রকাশের একটি গুরুত্বপূর্ণ দিক। minSdkVersion আপনার কোড দ্বারা সমর্থিত ন্যূনতম Android সংস্করণটি প্রতিফলিত হওয়া উচিত।

minSdkVersion নির্বাচন করার সময় নিম্নলিখিত বিবেচ্য বিষয়গুলি সম্পর্কে সচেতন থাকুন:

  • কম minSdkVersion নির্বাচন করলে সাধারণত আপনার লাইব্রেরির বিস্তৃত বিতরণ সম্ভব হয়।

    একটি লাইব্রেরির কোড সাধারণত কার্যকর করা হয় না যদি না অ্যাপটি স্পষ্টভাবে কল করে। একটি অ্যাপ এখনও অ্যান্ড্রয়েডের এমন একটি সংস্করণে চলতে পারে যা লাইব্রেরি নির্ভরতার জন্য প্রয়োজনের চেয়ে কম - যদি লাইব্রেরিটি মূল অ্যাপ কার্যকারিতার জন্য অপরিহার্য না হয় - লাইব্রেরিতে কল করার আগে রানটাইম পরীক্ষা করে। অতএব, আপনার লাইব্রেরির minSdkVersion যথেষ্ট কম সেট করুন যাতে এটি অ্যাপগুলিতে এমবেড করা যায় এবং যখনই সম্ভব কল করা যায়, যাতে আরও ব্যবহারকারীদের কাছে পৌঁছাতে সাহায্য করা যায়।

  • উচ্চ minSdkVersion নির্বাচন করলে অ্যাপ্লিকেশনগুলিতে লাইব্রেরি অন্তর্ভুক্ত করা থেকে বিরত থাকতে পারে।

    ম্যানিফেস্ট মার্জার, যা AGP-এর একটি ধাপ যা অ্যাপ এবং এর নির্ভরতা থেকে ম্যানিফেস্ট ফাইলগুলিকে একত্রিত করে, এটি জোর দেয় যে কোনও নির্ভরতার অ্যাপের চেয়ে উচ্চতর minSdkVersion নেই।

  • উচ্চ minSdkVersion নির্বাচন করলে অ্যাপ ডেভেলপাররা ম্যানিফেস্ট মার্জিং সুরক্ষা পরীক্ষাগুলি অক্ষম করতে পারে, যা পরবর্তী সময়ে বিল্ড প্রক্রিয়ায় সমস্যার সৃষ্টি করতে পারে।

    যেহেতু ম্যানিফেস্ট মার্জার অ্যাপ প্রোজেক্টগুলিকে অ্যাপের চেয়ে বেশি minSdkVersion সহ লাইব্রেরি অন্তর্ভুক্ত করতে বাধা দেয়, তাই অ্যাপ ডেভেলপাররা বিল্ড ত্রুটি কমাতে ম্যানিফেস্ট মার্জারের নিরাপত্তা পরীক্ষা অক্ষম করতে পারে। তবে, এটি ডাউনস্ট্রিমে সত্যিকারের অসঙ্গতি সমস্যার ঝুঁকি বাড়ায়।

  • বিশেষ ক্ষেত্রে যেখানে লাইব্রেরির ম্যানিফেস্টে একটি ব্রডকাস্ট রিসিভার বা অন্য কোনও প্রক্রিয়া থাকে যার মাধ্যমে এর কোড স্বয়ংক্রিয়ভাবে ট্রিগার হয়, সেখানে একটি উচ্চ minSdkVersion নির্বাচন করা প্রয়োজন হতে পারে।

    এই ক্ষেত্রে, একটি উচ্চ minSdkVersion নির্বাচন করলে কোডটি চালানো নিশ্চিত হয়। বিকল্পভাবে, আপনি স্বয়ংক্রিয় আচরণটি অক্ষম করতে পারেন যাতে অ্যাপটি সঠিক পরীক্ষা করার পরে লাইব্রেরিটি কার্যকর করতে পারে।

অ্যাপগুলিতে এম্বেড করার অনুমতি দিতে, আপনার লাইব্রেরিতে RequiresApi অ্যানোটেশন ব্যবহার করে এর কলারদের জানাতে হবে যে তাদের রানটাইম চেক করতে হবে। Android Lint তার পরিদর্শনের জন্য RequiresApi তথ্য ব্যবহার করে। আপনার API কোড এবং API উন্নত করার জন্য অ্যানোটেশন ব্যবহার করার বিষয়ে আরও তথ্যের জন্য, অ্যানোটেশন সহ কোড পরিদর্শন উন্নত করুন দেখুন।

AAR মেটাডেটা সেট আপ করুন

একটি অ্যান্ড্রয়েড লাইব্রেরি একটি অ্যান্ড্রয়েড আর্কাইভ (AAR) ফাইল আকারে প্যাকেজ করা হয়। AAR মেটাডেটাতে এমন বৈশিষ্ট্য থাকে যা AGP কে লাইব্রেরি ব্যবহার করতে সাহায্য করে। যদি আপনার লাইব্রেরিটি একটি অসঙ্গত কনফিগারেশন দ্বারা ব্যবহৃত হয় এবং AAR মেটাডেটা সেট আপ করা থাকে, তাহলে ব্যবহারকারীদের সমস্যা সমাধানে সাহায্য করার জন্য একটি ত্রুটি বার্তা উপস্থাপন করা হয়।

একটি minCompileSdk মান নির্বাচন করুন

৪.১ সংস্করণ থেকে শুরু করে, AGP minCompileSdk সমর্থন করে। এটি ন্যূনতম কত compileSdk গ্রাহক প্রকল্প ব্যবহার করতে পারে তা নির্দেশ করে। যদি আপনার লাইব্রেরিতে ম্যানিফেস্ট এন্ট্রি বা রিসোর্স থাকে যা নতুন প্ল্যাটফর্ম বৈশিষ্ট্য ব্যবহার করে, তাহলে আপনাকে এই মানটি সেট করতে হবে।

minCompileSdk মানটি module-level build.gradle ফাইলের defaultConfig{} , productFlavors{} , এবং buildTypes{} ব্লকে সেট করা যেতে পারে:

খাঁজকাটা

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    foo {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

কোটলিন

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    register("foo") {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

যদি আপনি একাধিক স্থানে minCompileSdk সেট করেন, তাহলে Gradle বিল্ড প্রক্রিয়ার সময় সেটিংসের অবস্থানগুলিকে নিম্নরূপ অগ্রাধিকার দেয়:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

পূর্ববর্তী উদাহরণে, যেখানে minCompileSdk defaultConfig{} এবং productFlavors{} উভয় ক্ষেত্রেই সংজ্ঞায়িত করা হয়েছে, productFlavors{} কে অগ্রাধিকার দেওয়া হয়েছে এবং minCompileSdk কে 30 এ সেট করা হয়েছে।

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

পরীক্ষার ফিক্সচার সক্ষম করুন

পরীক্ষার ফিক্সচারগুলি সাধারণত পরীক্ষা করা কোড সেট আপ করতে বা কোনও উপাদানের পরীক্ষা সহজতর করতে ব্যবহৃত হয়। সংস্করণ 7.1 থেকে শুরু করে, AGP অ্যাপ্লিকেশন এবং গতিশীল-বৈশিষ্ট্য প্রকল্পগুলির পাশাপাশি লাইব্রেরি প্রকল্পগুলির জন্য পরীক্ষার ফিক্সচার তৈরি করতে পারে।

অন্যদের ব্যবহারের জন্য লাইব্রেরি প্রকাশ করার সময়, আপনার API-এর জন্য পরীক্ষামূলক ফিক্সচার তৈরি করার কথা বিবেচনা করুন। পরীক্ষার ফিক্সচারগুলি মডিউল-স্তরের build.gradle ফাইলে চালু করা যেতে পারে:

খাঁজকাটা

android {
  testFixtures {
    enable = true
  }
}

কোটলিন

android {
  testFixtures {
    enable = true
  }
}

যখন আপনি পরীক্ষার ফিক্সচার চালু করেন, তখন গ্র্যাডেল স্বয়ংক্রিয়ভাবে একটি src/testFixtures সোর্স সেট তৈরি করে যেখানে আপনি পরীক্ষার ফিক্সচার লিখতে পারেন।

আরও তথ্যের জন্য, পরীক্ষার ফিক্সচার ব্যবহার সম্পর্কে গ্র্যাডেলের ডকুমেন্টেশন দেখুন।