बिल्ड फ़्लैग, बिल्ड-टाइम कॉन्सटेंट होते हैं और रनटाइम के दौरान इन्हें बदला नहीं जा सकता. इन फ़्लैग का इस्तेमाल तब किया जाता है, जब कॉन्फ़िगरेशन फ़्लैग का इस्तेमाल नहीं किया जा सकता, जैसे कि
- आपके पास पहले से कंपाइल या पहले से तैयार कोड होता है, जिसे आपको बिल्ड में वैकल्पिक रूप से शामिल करना है.
- आपको बिल्ड सिस्टम में बदलाव करने हैं.
- आपको कोड के साइज़ को मैनेज करने के लिए, डिपेंडेंसी के आस-पास फ़्लैग लगाने हैं.
- आपको किसी सुविधा के लॉन्च को मैनेज करना है, लेकिन सिस्टम में कॉन्फ़िगरेशन फ़्लैग उपलब्ध कराने से पहले, आपको फ़्लैग की वैल्यू की जांच करनी होगी.
बिल्ड फ़्लैग का एलान करना
बिल्ड फ़्लैग का एलान, textproto फ़ाइलों में किया जाता है. बिल्ड फ़्लैग का एलान करने के लिए:
WORKING_DIRECTORY/build/release/flag_declarations/
पर नेविगेट करेंRELEASE_MY_FLAG_NAME.textproto
नाम की फ़ाइल बनाएं.फ़ाइल में बदलाव करके, इस तरह की कोई एंट्री जोड़ें:
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 समीक्षक के साथ काम करना होगा. अगर अपने एओएसपी मिरर की स्थिरता को बनाए रखने के लिए, फ़ीचर लॉन्च फ़्लैग का इस्तेमाल किया जा रहा है, तो आपके पास अपनी पसंद के मुताबिक नेमस्पेस का इस्तेमाल करने का विकल्प है.value
, फ़्लैग के लिए शुरुआती टाइप और वैल्यू है. टाइप,bool_value
याstring_value
हो सकता है. अगर टाइपstring_value
है, तो वैल्यू को कोट में रखना ज़रूरी है. अगर इसके बारे में नहीं बताया गया है, तो इसका मतलब है कि वैल्यू एक खाली स्ट्रिंग है. बूलियन वैल्यू कोtrue
या 'गलत' के लिए खाली स्ट्रिंग के तौर पर दिखाया जाता है.workflow
,LAUNCH
याPREBUILT
है. सुविधा लॉन्च फ़्लैग की तरह ही,false
सेtrue
तक बढ़ने वाले बूलियन फ़्लैग के लिएLAUNCH
का इस्तेमाल करें. उन फ़्लैग के लिएPREBUILT
का इस्तेमाल करें जो आम तौर पर पहले से बने हुए फ़्लैग का वर्शन सेट करते हैं.containers
किस तरह का कोड लिखा जा रहा है, जैसे कि वेंडर कोड के लिए "वेंडर" या प्रॉडक्ट कोड के लिए "प्रॉडक्ट". अगर आपको यह नहीं पता कि किस वैल्यू का इस्तेमाल करना है, तो पिछले सैंपल में दिखाए गए सभी चार कंटेनर टाइप का इस्तेमाल करें.
सूंग फ़ाइल में बिल्ड फ़्लैग का इस्तेमाल करना
जिस बिल्ड फ़ाइल और मॉड्यूल में आपको फ़्लैग की वैल्यू के बारे में क्वेरी करनी है वहां फ़्लैग की वैल्यू के आधार पर ब्रैंच करने के लिए, कंडीशनल का इस्तेमाल करें. उदाहरण के लिए, यहां दिए गए स्निपेट में, 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: [],
).
Makefile में बिल्ड फ़्लैग का इस्तेमाल करना
मेक फ़ाइल में, बिल्ड फ़्लैग एक रीड-ओनली मेक वैरिएबल होता है. यह Makefile सैंपल, 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
इस फ़्लैग वाले एलान में, RELEASE_PACKAGE_NFC_STACK.textproto
में workflow
फ़ील्ड को PREBUILT
पर सेट किया गया है. साथ ही, trunk_staging
डेवलपमेंट कॉन्फ़िगरेशन के लिए फ़्लैग वैल्यू वाली फ़ाइलcom.android.nfcservices
RELEASE_PACKAGE_NFC_STACK.textproto
की स्ट्रिंग वैल्यू दी गई है.