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