हमारा सुझाव है कि 27 मार्च, 2025 से AOSP को बनाने और उसमें योगदान देने के लिए, aosp-main के बजाय android-latest-release का इस्तेमाल करें. ज़्यादा जानकारी के लिए, AOSP में हुए बदलाव लेख पढ़ें.
संग्रह की मदद से व्यवस्थित रहें
अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.
बिल्ड फ़्लैग, बिल्ड के समय के लिए तय किए जाते हैं. इन्हें रनटाइम के दौरान बदला नहीं जा सकता. इन फ़्लैग का इस्तेमाल उन स्थितियों में किया जाता है जहां aconfig फ़्लैग का इस्तेमाल नहीं किया जा सकता. जैसे,
आपके पास पहले से कंपाइल किया गया या पहले से बना कोड है, जिसे आपको किसी बिल्ड में शामिल करना है.
आपको बिल्ड सिस्टम में बदलाव करने हैं.
आपको कोड के साइज़ को मैनेज करने के लिए, डिपेंडेंसी के आस-पास फ़्लैग लगाने हैं.
आपको किसी सुविधा के लॉन्च को मैनेज करना है, लेकिन सिस्टम से aconfig फ़्लैग उपलब्ध कराने से पहले, आपको फ़्लैग की वैल्यू देखनी होगी.
बिल्ड फ़्लैग का एलान करना
बिल्ड फ़्लैग, 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 के असाइन किए गए समीक्षक के साथ मिलकर काम करना होगा. अगर अपने AOSP मिरर को स्थिर रखने के लिए, सुविधा लॉन्च करने के फ़्लैग का इस्तेमाल किया जा रहा है, तो नेमस्पेस का इस्तेमाल अपनी पसंद के मुताबिक किया जा सकता है.
value, फ़्लैग के लिए शुरुआती टाइप और वैल्यू है. टाइप,
bool_value या string_value हो सकता है. अगर टाइप string_value है, तो वैल्यू को कोट में रखना ज़रूरी है. अगर कोई वैल्यू नहीं दी गई है, तो वैल्यू खाली स्ट्रिंग होगी. बूलियन वैल्यू को true या 'गलत' के लिए खाली स्ट्रिंग के तौर पर दिखाया जाता है.
workflow, LAUNCH या PREBUILT है. सुविधा लॉन्च करने के फ़्लैग की तरह ही, false से true पर जाने वाले बूलियन फ़्लैग के लिए LAUNCH का इस्तेमाल करें.
आम तौर पर, पहले से बने वर्शन का कोई वर्शन सेट करने वाले फ़्लैग के लिए PREBUILT का इस्तेमाल करें.
containers आपने किस तरह का कोड लिखा है, जैसे कि वेंडर कोड के लिए "वेंडर" या प्रॉडक्ट कोड के लिए "प्रॉडक्ट". अगर आपको यह नहीं पता कि किस वैल्यू का इस्तेमाल करना है, तो पिछले सैंपल में दिखाए गए सभी चार कंटेनर टाइप का इस्तेमाल करें.
Soong फ़ाइल में बिल्ड फ़्लैग का इस्तेमाल करना
जिस बिल्ड फ़ाइल और मॉड्यूल में आपको फ़्लैग की वैल्यू के बारे में क्वेरी करनी है वहां फ़्लैग की वैल्यू के आधार पर ब्रैंच करने के लिए, कंडीशनल का इस्तेमाल करें. उदाहरण के लिए, यहां दिए गए स्निपेट में, RELEASE__READ_FROM_NEW_STORAGE फ़्लैग की वैल्यू के बारे में क्वेरी की गई है:
अगर इस फ़्लैग की वैल्यू true है, तो libaconfig_storage_read_api_cc मॉड्यूल को cc_defaults मॉड्यूल में डाइनैमिक तौर पर लिंक किया जाता है.
अगर इस फ़्लैग की वैल्यू false है, तो कुछ नहीं होता (default: [],).
मेकफ़ाइल में बिल्ड फ़्लैग का इस्तेमाल करना
मेक फ़ाइल में, बिल्ड फ़्लैग एक रीड-ओनली मेक वैरिएबल होता है. यहां दिया गया makefile सैंपल, RELEASED_PACKAGE_NFC_STCK नाम के बिल्ड फ़्लैग को ऐक्सेस करता है:
# NFC and Secure Element packagesPRODUCT_PACKAGES+=\
$(RELEASE_PACKAGE_NFC_STACK)\
Tag\
SecureElement\
android.hardware.nfc-service.st\
android.hardware.secure_element@1.0-service.st\
NfcOverlayCoral
इस पेज पर मौजूद कॉन्टेंट और कोड सैंपल कॉन्टेंट के लाइसेंस में बताए गए लाइसेंस के हिसाब से हैं. Java और OpenJDK, Oracle और/या इससे जुड़ी हुई कंपनियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.
आखिरी बार 2025-07-27 (UTC) को अपडेट किया गया.
[[["समझने में आसान है","easyToUnderstand","thumb-up"],["मेरी समस्या हल हो गई","solvedMyProblem","thumb-up"],["अन्य","otherUp","thumb-up"]],[["वह जानकारी मौजूद नहीं है जो मुझे चाहिए","missingTheInformationINeed","thumb-down"],["बहुत मुश्किल है / बहुत सारे चरण हैं","tooComplicatedTooManySteps","thumb-down"],["पुराना","outOfDate","thumb-down"],["अनुवाद से जुड़ी समस्या","translationIssue","thumb-down"],["सैंपल / कोड से जुड़ी समस्या","samplesCodeIssue","thumb-down"],["अन्य","otherDown","thumb-down"]],["आखिरी बार 2025-07-27 (UTC) को अपडेट किया गया."],[],[],null,["# Declare and use a build flag\n\nBuild flags are build-time constants and can't be changed during runtime. These\nflags are used in circumstances where aconfig flags can't be used, such as\n\n- You have a precompiled or prebuilt piece of code that you want include optionally in a build.\n- You want to make changes to build system itself.\n- You want to put flags around dependencies to manage code size.\n- You want to manage the launch of a feature, but you need to check the value of the flag before aconfig flags are made available by the system.\n\nDeclare a build flag\n--------------------\n\nBuild flags are declared in textproto files. To declare a build flag:\n\n1. Navigate to \u003cvar translate=\"no\"\u003eWORKING_DIRECTORY\u003c/var\u003e`/build/release/flag_declarations/`\n2. Create a file called `RELEASE_`\u003cvar translate=\"no\"\u003eMY_FLAG_NAME\u003c/var\u003e`.textproto`.\n3. Edit the file and add an entry similar to the following:\n\n name: \"RELEASE_MY_FLAG_NAME\"\n namespace: \"android_UNKNOWN\"\n description: \"Control if we should read from new storage.\"\n workflow: LAUNCH\n containers: \"product\"\n containers: \"system\"\n containers: \"system_ext\"\n containers: \"vendor\"\n\n Where:\n - `name` contains the name of the flag preceded by `RELEASE_`. Only uppercase letters and underscore are allowed.\n - `namespace` contains the namespace for contributions. You must work with the assigned Google reviewer to determine your namespace. If you are using feature launch flags to maintain stability of your own AOSP mirror, you can use namespace however you like.\n - `value` is the initial type and value for the flag. The type can be `bool_value` or `string_value`. If type is `string_value` then the value must be in quotes. If not specified, the value is an empty string. Boolean values are represented as either `true` or the empty string for false.\n - `workflow` is either `LAUNCH` or `PREBUILT`. Use `LAUNCH` for boolean flags that advance from `false` to `true`, similar to feature launch flags. Use `PREBUILT` for flags that set a version, typically of a prebuilt.\n - `containers` the type of code you are writing, such as \"vendor\" for vendor code or \"product\" for product code. If you are in doubt of the value to use, use all four containers types as shown in the previous sample.\n\nUse a build flag in a Soong file\n--------------------------------\n\nIn the build file and module where you want to query the flag value, use a\nconditional to branch on the flag value. For example, in the following snippet,\nthe `RELEASE__READ_FROM_NEW_STORAGE` flag's value is queried: \n\n cc_defaults {\n name: \"aconfig_lib_cc_shared_link.defaults\",\n shared_libs: select(release_flag(\"RELEASE_READ_FROM_NEW_STORAGE\"), {\n true: [\"libaconfig_storage_read_api_cc],\n default: [],\n }),\n }\n\nIf this flag's value is `true`, the `libaconfig_storage_read_api_cc` module is\ndynamically linked into the `cc_defaults` module.\n\nIf this flag's value is `false`, nothing (`default: [],`) happens.\n\nUse a build flag in a makefile\n------------------------------\n\nIn the make file, a build flag is a read-only make variable. The following\nmakefile sample accesses a build flag called `RELEASED_PACKAGE_NFC_STCK`: \n\n # NFC and Secure Element packages\n PRODUCT_PACKAGES += \\\n $(RELEASE_PACKAGE_NFC_STACK) \\\n Tag \\\n SecureElement \\\n android.hardware.nfc-service.st \\\n android.hardware.secure_element@1.0-service.st \\\n NfcOverlayCoral\n\nThis flag's declaration has a `workflow` field set to `PREBUILT` in\n[`RELEASE_PACKAGE_NFC_STACK.textproto`](https://cs.android.com/android/platform/superproject/+/android-latest-release:build/release/flag_declarations/RELEASE_PACKAGE_NFC_STACK.textproto?q=%22RELEASE_PACKAGE_NFC_STACK%22&ss=android%2Fplatform%2Fsuperproject%2Fmain)\nand a string value of\n`com.android.nfcservices` [`RELEASE_PACKAGE_NFC_STACK.textproto`](https://cs.android.com/android/platform/superproject/+/android-latest-release:build/release/flag_values/ap3a/RELEASE_PACKAGE_NFC_STACK.textproto)\nthe flag values file for the `trunk_staging` development configuration.\n| **Note:** Flags whose `workflow` field is set to `LAUNCH` should always be compared to an empty string, for example if `flag == true` is written `ifneq (,$(RELEASE_MY_FLAG))` and if `flag == false` is written `ifeq (,$(RELEASE_MY_FLAG))`."]]