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

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

একটি নামস্থান চয়ন করুন

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

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

গ্রোভি

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

কোটলিন

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

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

এজিপির পূর্ববর্তী সংস্করণগুলিতে, উভয় 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 মান চয়ন করুন

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

minCompileSdk মানটি মডিউল-স্তরের 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 সেট করেন, তাহলে বিল্ড প্রক্রিয়া চলাকালীন গ্রেডল নিম্নরূপ সেটিংস অবস্থানগুলিকে অগ্রাধিকার দেয়:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

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

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

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

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

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

গ্রোভি

android {
  testFixtures {
    enable = true
  }
}

কোটলিন

android {
  testFixtures {
    enable = true
  }
}

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

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

,

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

একটি নামস্থান চয়ন করুন

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

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

গ্রোভি

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

কোটলিন

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

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

এজিপির পূর্ববর্তী সংস্করণগুলিতে, উভয় 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 মান চয়ন করুন

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

minCompileSdk মানটি মডিউল-স্তরের 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 সেট করেন, তাহলে বিল্ড প্রক্রিয়া চলাকালীন গ্রেডল নিম্নরূপ সেটিংস অবস্থানগুলিকে অগ্রাধিকার দেয়:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

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

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

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

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

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

গ্রোভি

android {
  testFixtures {
    enable = true
  }
}

কোটলিন

android {
  testFixtures {
    enable = true
  }
}

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

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

,

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

একটি নামস্থান চয়ন করুন

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

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

গ্রোভি

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

কোটলিন

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

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

এজিপির পূর্ববর্তী সংস্করণগুলিতে, উভয় 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 মান চয়ন করুন

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

minCompileSdk মানটি মডিউল-স্তরের 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 সেট করেন, তাহলে বিল্ড প্রক্রিয়া চলাকালীন গ্রেডল নিম্নরূপ সেটিংস অবস্থানগুলিকে অগ্রাধিকার দেয়:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

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

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

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

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

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

গ্রোভি

android {
  testFixtures {
    enable = true
  }
}

কোটলিন

android {
  testFixtures {
    enable = true
  }
}

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

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

,

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

একটি নামস্থান চয়ন করুন

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

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

গ্রোভি

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

কোটলিন

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

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

এজিপির পূর্ববর্তী সংস্করণগুলিতে, উভয় 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 মান চয়ন করুন

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

minCompileSdk মানটি মডিউল-স্তরের 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 সেট করেন, তাহলে বিল্ড প্রক্রিয়া চলাকালীন গ্রেডল নিম্নরূপ সেটিংস অবস্থানগুলিকে অগ্রাধিকার দেয়:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

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

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

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

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

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

গ্রোভি

android {
  testFixtures {
    enable = true
  }
}

কোটলিন

android {
  testFixtures {
    enable = true
  }
}

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

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