דגלים של build הם קבועים בזמן ה-build, ואי אפשר לשנות אותם במהלך זמן הריצה. הדגלים האלה משמשים בנסיבות שבהן אי אפשר להשתמש בדגלי config, כמו
- יש לכם קטע קוד שנוצר מראש או נוצר מראש שרוצים לכלול באופן אופציונלי ב-build.
- אתם רוצים לבצע שינויים במערכת ה-build עצמה.
- אתם רוצים להוסיף דגלים לקשרי התלות כדי לנהל את גודל הקוד.
- אתם רוצים לנהל את ההפעלה של תכונה, אבל עליכם לבדוק את הערך של הדגל לפני ש דגלי aconfig יהפכו לזמינים על ידי המערכת.
הצהרה על דגל build
דגלים ב-Build מוצהרים בקובצי textproto. כדי להצהיר על דגל build:
- ניווט אל
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, אתם יכולים להשתמש במרחב השמות (namespace) כרצונכם.value
הוא הסוג והערך הראשוניים של הדגל. הסוג יכול להיותbool_value
אוstring_value
. אם הסוג הואstring_value
, הערך חייב להיות במירכאות. אם לא מציינים ערך, הערך יהיה מחרוזת ריקה. ערכים בוליאניים מייצגים את הערךtrue
או את המחרוזת הריקה כדי לציין false.workflow
הואLAUNCH
אוPREBUILT
. השתמשו ב-LAUNCH
לדגלים בוליאניים שמקדמים מ-false
ל-true
, בדומה לדגלים של הפעלת פיצ'רים. שימוש ב-PREBUILT
לדגלים שמגדירים גרסה, בדרך כלל של גרסה מוכנה מראש.containers
סוג הקוד שאתם כותבים, למשל 'vendor' לקוד של ספק או 'product' לקוד של מוצר. אם יש לכם ספק לגבי הערך שצריך להשתמש בו, השתמשו בכל ארבעת סוגי הקונטיינרים, כפי שמוצג בדוגמה הקודמת.
שימוש בדגל build בקובץ song
בקובץ ה-build ובמודול שבהם רוצים לשלוח שאילתה לגבי ערך הדגל, משתמשים בתנאי כדי להסתעף לפי ערך הדגל. לדוגמה, בקטע הקוד הבא, מוצגת שאילתה לגבי הערך של הדגל 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: [],
).
שימוש בדגל build בקובץ makefile
בקובץ create, דגל build הוא משתנה create לקריאה בלבד. בדוגמה הבאה של קובץ makefile מתבצעת גישה לדגל build שנקרא 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
שמוגדר ל-PREBUILT
ב-RELEASE_PACKAGE_NFC_STACK.textproto
, וערך מחרוזת של com.android.nfcservices
RELEASE_PACKAGE_NFC_STACK.textproto
בקובץ ערכי הדגלים של תצורת הפיתוח trunk_staging
.