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

বিল্ড পতাকাগুলি বিল্ড-টাইম ধ্রুবক এবং রানটাইমের সময় পরিবর্তন করা যায় না। এই পতাকাগুলি এমন পরিস্থিতিতে ব্যবহার করা হয় যেখানে 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 অবদানের জন্য নামস্থান রয়েছে। আপনার নামস্থান নির্ধারণ করতে আপনাকে অবশ্যই নির্ধারিত Google পর্যালোচকের সাথে কাজ করতে হবে। আপনি যদি আপনার নিজস্ব AOSP মিররের স্থিতিশীলতা বজায় রাখতে বৈশিষ্ট্য লঞ্চ পতাকা ব্যবহার করেন তবে আপনি আপনার পছন্দ মতো নামস্থান ব্যবহার করতে পারেন।
    • value হল প্রাথমিক প্রকার এবং পতাকার মান। প্রকারটি bool_value বা string_value হতে পারে। টাইপ string_value হলে মান অবশ্যই উদ্ধৃতিতে থাকতে হবে। নির্দিষ্ট করা না থাকলে, মানটি একটি খালি স্ট্রিং। বুলিয়ান মান true বা মিথ্যার জন্য খালি স্ট্রিং হিসাবে উপস্থাপিত হয়।
    • workflow হয় LAUNCH বা PREBUILT । বুলিয়ান পতাকার জন্য LAUNCH ব্যবহার করুন যা false থেকে true অগ্রসর হয়, বৈশিষ্ট্য লঞ্চ পতাকার মতো। ফ্ল্যাগগুলির জন্য PREBUILT ব্যবহার করুন যা একটি সংস্করণ সেট করে, সাধারণত একটি পূর্বনির্মাণ।
    • আপনি যে ধরনের কোড লিখছেন তা containers , যেমন বিক্রেতা কোডের জন্য "বিক্রেতা" বা পণ্য কোডের জন্য "পণ্য"। আপনি যদি ব্যবহার করার মান নিয়ে সন্দেহে থাকেন, তাহলে আগের নমুনায় দেখানো চারটি পাত্রের ধরন ব্যবহার করুন।

একটি 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

এই পতাকার ঘোষণায় একটি workflow ক্ষেত্র রয়েছে যা RELEASE_PACKAGE_NFC_STACK.textprotoPREBUILT সেট করা হয়েছে এবং trunk_staging ডেভেলপমেন্ট কনফিগারেশনের জন্য পতাকা মান ফাইলের com.android.nfcservices RELEASE_PACKAGE_NFC_STACK.textproto এর একটি স্ট্রিং মান।

,

বিল্ড পতাকাগুলি বিল্ড-টাইম ধ্রুবক এবং রানটাইমের সময় পরিবর্তন করা যায় না। এই পতাকাগুলি এমন পরিস্থিতিতে ব্যবহার করা হয় যেখানে 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 অবদানের জন্য নামস্থান রয়েছে। আপনার নামস্থান নির্ধারণ করতে আপনাকে অবশ্যই নির্ধারিত Google পর্যালোচকের সাথে কাজ করতে হবে। আপনি যদি আপনার নিজস্ব AOSP মিররের স্থিতিশীলতা বজায় রাখতে বৈশিষ্ট্য লঞ্চ পতাকা ব্যবহার করেন তবে আপনি আপনার পছন্দ মতো নামস্থান ব্যবহার করতে পারেন।
    • value হল প্রাথমিক প্রকার এবং পতাকার মান। প্রকারটি bool_value বা string_value হতে পারে। টাইপ string_value হলে মান অবশ্যই উদ্ধৃতিতে থাকতে হবে। নির্দিষ্ট করা না থাকলে, মানটি একটি খালি স্ট্রিং। বুলিয়ান মান true বা মিথ্যার জন্য খালি স্ট্রিং হিসাবে উপস্থাপিত হয়।
    • workflow হয় LAUNCH বা PREBUILT । বুলিয়ান পতাকার জন্য LAUNCH ব্যবহার করুন যা false থেকে true অগ্রসর হয়, বৈশিষ্ট্য লঞ্চ পতাকার মতো। ফ্ল্যাগগুলির জন্য PREBUILT ব্যবহার করুন যা একটি সংস্করণ সেট করে, সাধারণত একটি পূর্বনির্মাণ।
    • আপনি যে ধরনের কোড লিখছেন তা containers , যেমন বিক্রেতা কোডের জন্য "বিক্রেতা" বা পণ্য কোডের জন্য "পণ্য"। আপনি যদি ব্যবহার করার মান নিয়ে সন্দেহে থাকেন, তাহলে আগের নমুনায় দেখানো চারটি পাত্রের ধরন ব্যবহার করুন।

একটি 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

এই পতাকার ঘোষণায় একটি workflow ক্ষেত্র রয়েছে যা RELEASE_PACKAGE_NFC_STACK.textprotoPREBUILT সেট করা হয়েছে এবং trunk_staging ডেভেলপমেন্ট কনফিগারেশনের জন্য পতাকা মান ফাইলের com.android.nfcservices RELEASE_PACKAGE_NFC_STACK.textproto এর একটি স্ট্রিং মান।

,

বিল্ড পতাকাগুলি বিল্ড-টাইম ধ্রুবক এবং রানটাইমের সময় পরিবর্তন করা যায় না। এই পতাকাগুলি এমন পরিস্থিতিতে ব্যবহার করা হয় যেখানে 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 অবদানের জন্য নামস্থান রয়েছে। আপনার নামস্থান নির্ধারণ করতে আপনাকে অবশ্যই নির্ধারিত Google পর্যালোচকের সাথে কাজ করতে হবে। আপনি যদি আপনার নিজস্ব AOSP মিররের স্থিতিশীলতা বজায় রাখতে বৈশিষ্ট্য লঞ্চ পতাকা ব্যবহার করেন তবে আপনি আপনার পছন্দ মতো নামস্থান ব্যবহার করতে পারেন।
    • value হল প্রাথমিক প্রকার এবং পতাকার মান। প্রকারটি bool_value বা string_value হতে পারে। টাইপ string_value হলে মান অবশ্যই উদ্ধৃতিতে থাকতে হবে। নির্দিষ্ট করা না থাকলে, মানটি একটি খালি স্ট্রিং। বুলিয়ান মান true বা মিথ্যার জন্য খালি স্ট্রিং হিসাবে উপস্থাপিত হয়।
    • workflow হয় LAUNCH বা PREBUILT । বুলিয়ান পতাকার জন্য LAUNCH ব্যবহার করুন যা false থেকে true অগ্রসর হয়, বৈশিষ্ট্য লঞ্চ পতাকার মতো। ফ্ল্যাগগুলির জন্য PREBUILT ব্যবহার করুন যা একটি সংস্করণ সেট করে, সাধারণত একটি পূর্বনির্মাণ।
    • আপনি যে ধরনের কোড লিখছেন তা containers , যেমন বিক্রেতা কোডের জন্য "বিক্রেতা" বা পণ্য কোডের জন্য "পণ্য"। আপনি যদি ব্যবহার করার মান নিয়ে সন্দেহে থাকেন, তাহলে আগের নমুনায় দেখানো চারটি পাত্রের ধরন ব্যবহার করুন।

একটি 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

এই পতাকার ঘোষণায় একটি workflow ক্ষেত্র রয়েছে যা RELEASE_PACKAGE_NFC_STACK.textprotoPREBUILT সেট করা হয়েছে এবং trunk_staging ডেভেলপমেন্ট কনফিগারেশনের জন্য পতাকা মান ফাইলের com.android.nfcservices RELEASE_PACKAGE_NFC_STACK.textproto এর একটি স্ট্রিং মান।