ঘোষণা করুন এবং একটি বিল্ড পতাকা ব্যবহার করুন

বিল্ড ফ্ল্যাগ হলো বিল্ড-টাইম কনস্ট্যান্ট এবং রানটাইমের সময় এগুলো পরিবর্তন করা যায় না। এই ফ্ল্যাগগুলো এমন পরিস্থিতিতে ব্যবহৃত হয় যেখানে aconfig ফ্ল্যাগ ব্যবহার করা যায় না, যেমন—

  • আপনার কাছে আগে থেকে কম্পাইল করা বা তৈরি করা একটি কোড আছে, যা আপনি একটি বিল্ডে ঐচ্ছিকভাবে অন্তর্ভুক্ত করতে চান।
  • আপনি বিল্ড সিস্টেমেই পরিবর্তন আনতে চান।
  • কোডের আকার নিয়ন্ত্রণ করতে আপনি ডিপেন্ডেন্সিগুলোর চারপাশে ফ্ল্যাগ ব্যবহার করতে পারেন।
  • আপনি একটি ফিচারের সূচনা পরিচালনা করতে চান, কিন্তু সিস্টেম দ্বারা aconfig ফ্ল্যাগগুলো উপলব্ধ করার আগে আপনাকে ফ্ল্যাগটির মান যাচাই করতে হবে।

একটি বিল্ড ফ্ল্যাগ ঘোষণা করুন

বিল্ড ফ্ল্যাগগুলো টেক্সটপ্রোটো ফাইলে ঘোষণা করা হয়। একটি বিল্ড ফ্ল্যাগ ঘোষণা করতে:

  1. WORKING_DIRECTORY /build/release/flag_declarations/ এ যান
  2. RELEASE_ MY_FLAG_NAME .textproto নামে একটি ফাইল তৈরি করুন।
  3. ফাইলটি সম্পাদনা করুন এবং নিম্নলিখিতের অনুরূপ একটি এন্ট্রি যোগ করুন:

    name: "RELEASE_MY_FLAG_NAME"
    namespace: "android_UNKNOWN"
    description: "Control if we should read from new storage."
    workflow: LAUNCH
    containers: "product"
    containers: "system"
    containers: "system_ext"
    containers: "vendor"
    

    কোথায়:

    • name এ ফ্ল্যাগের নামের আগে RELEASE_ থাকবে। শুধুমাত্র বড় হাতের অক্ষর এবং আন্ডারস্কোর অনুমোদিত।
    • namespace মধ্যে অবদানের জন্য নেমস্পেস থাকে। আপনার নেমস্পেস নির্ধারণ করতে আপনাকে অবশ্যই নির্ধারিত গুগল রিভিউয়ারের সাথে কাজ করতে হবে। আপনি যদি আপনার নিজস্ব AOSP মিররের স্থিতিশীলতা বজায় রাখতে ফিচার লঞ্চ ফ্ল্যাগ ব্যবহার করেন, তবে আপনি আপনার পছন্দমতো নেমস্পেস ব্যবহার করতে পারেন।
    • value হলো ফ্ল্যাগটির প্রাথমিক টাইপ এবং মান। টাইপটি bool_value অথবা string_value হতে পারে। যদি টাইপ string_value হয়, তবে মানটি অবশ্যই উদ্ধৃতি চিহ্নের মধ্যে থাকতে হবে। নির্দিষ্ট করে না দিলে, মানটি একটি খালি স্ট্রিং হয়। বুলিয়ান মান ` true অথবা `false`-এর জন্য খালি স্ট্রিং হিসাবে প্রকাশ করা হয়।
    • workflow হয় LAUNCH অথবা PREBUILT । ফিচার লঞ্চ ফ্ল্যাগের মতোই, যে বুলিয়ান ফ্ল্যাগগুলো false থেকে true তে পরিবর্তিত হয়, সেগুলোর জন্য LAUNCH ব্যবহার করুন। যে ফ্ল্যাগগুলো একটি ভার্সন নির্ধারণ করে, সাধারণত কোনো প্রি-বিল্টের, সেগুলোর জন্য PREBUILT ব্যবহার করুন।
    • আপনি যে ধরনের কোড লিখছেন, তা containers প্রকাশ করা হয়, যেমন ভেন্ডর কোডের জন্য 'vendor' বা প্রোডাক্ট কোডের জন্য 'product'। কোন মানটি ব্যবহার করবেন সে বিষয়ে সন্দেহ থাকলে, পূর্ববর্তী নমুনায় দেখানো অনুযায়ী চারটি কন্টেইনার টাইপই ব্যবহার করুন।

একটি Soong ফাইলে একটি বিল্ড ফ্ল্যাগ ব্যবহার করুন

যে বিল্ড ফাইল এবং মডিউলে আপনি ফ্ল্যাগের মান কোয়েরি করতে চান, সেখানে ফ্ল্যাগের মানের উপর ভিত্তি করে ব্রাঞ্চ তৈরি করতে একটি কন্ডিশনাল ব্যবহার করুন। উদাহরণস্বরূপ, নিম্নলিখিত কোড স্নিপেটে, RELEASE__READ_FROM_NEW_STORAGE ফ্ল্যাগের মান কোয়েরি করা হয়েছে:

cc_defaults {
  name: "aconfig_lib_cc_shared_link.defaults",
  shared_libs: select(release_flag("RELEASE_READ_FROM_NEW_STORAGE"), {
    true: ["libaconfig_storage_read_api_cc],
    default: [],
  }),
}

এই ফ্ল্যাগের মান true হলে, libaconfig_storage_read_api_cc মডিউলটি cc_defaults মডিউলের সাথে ডাইনামিকভাবে লিঙ্ক করা হয়।

এই ফ্ল্যাগের মান false হলে, কিছুই ঘটে না ( default: [], )।

মেকফাইলে একটি বিল্ড ফ্ল্যাগ ব্যবহার করুন

মেক ফাইলে, বিল্ড ফ্ল্যাগ হলো একটি রিড-অনলি মেক ভেরিয়েবল। নিম্নলিখিত মেকফাইল নমুনাটি RELEASED_PACKAGE_NFC_STCK নামক একটি বিল্ড ফ্ল্যাগ অ্যাক্সেস করে:

# NFC and Secure Element packages
PRODUCT_PACKAGES += \
    $(RELEASE_PACKAGE_NFC_STACK) \
    Tag \
    SecureElement \
    android.hardware.nfc-service.st \
    android.hardware.secure_element@1.0-service.st \
    NfcOverlayCoral

এই ফ্ল্যাগের ডিক্লারেশনে, trunk_staging ডেভেলপমেন্ট কনফিগারেশনের ফ্ল্যাগ ভ্যালু ফাইল RELEASE_PACKAGE_NFC_STACK.textproto তে একটি workflow ফিল্ড PREBUILT এ সেট করা আছে এবং এর স্ট্রিং ভ্যালু হলো com.android.nfcservices RELEASE_PACKAGE_NFC_STACK.textproto