דגלי build הם קבועים בזמן ה-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 משלכם, אתם יכולים להשתמש במרחב השמות איך שאתם רוצים.-
value
הוא הסוג והערך הראשוניים של הדגל. הסוג יכול להיותbool_value
אוstring_value
. אם הערך של type הואstring_value
, הערך צריך להיות במירכאות. אם לא מציינים ערך, הערך הוא מחרוזת ריקה. ערכים בוליאניים מיוצגים כ-true
או כמחרוזת ריקה לערך false. -
workflow
הואLAUNCH
אוPREBUILT
. משתמשים ב-LAUNCH
לדגלים בוליאניים שמתקדמים מ-false
ל-true
, בדומה לדגלי השקת תכונות. משתמשים ב-PREBUILT
לדגלים שמגדירים גרסה, בדרך כלל של גרסה מוכנה מראש. containers
סוג הקוד שאתם כותבים, למשל vendor לקוד ספק או product לקוד מוצר. אם אתם לא בטוחים איזה ערך להשתמש, אתם יכולים להשתמש בכל ארבעת סוגי המאגדים כמו שמוצג בדוגמה הקודמת.
-
שימוש בדגל build בקובץ Soong
בקובץ ה-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
בקובץ make, דגל build הוא משתנה make לקריאה בלבד. בדוגמה הבאה של קובץ 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
.