پرچمهای ساخت ثابتهای زمان ساخت هستند و نمیتوان آنها را در زمان اجرا تغییر داد. این پرچم ها در شرایطی استفاده می شوند که از پرچم های 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
یا رشته خالی برای false نمایش داده می شوند. -
workflow
یاLAUNCH
یاPREBUILT
است. ازLAUNCH
برای پرچمهای بولی که ازfalse
بهtrue
پیش میروند، مشابه پرچمهای راهاندازی ویژگی استفاده کنید. ازPREBUILT
برای پرچم هایی که یک نسخه را تنظیم می کنند، معمولاً یک نسخه از پیش ساخته شده، استفاده کنید. -
containers
نوع کدی است که می نویسید، مانند "فروشنده" برای کد فروشنده یا "محصول" برای کد محصول. اگر در مورد ارزش استفاده شک دارید، از هر چهار نوع کانتینر همانطور که در نمونه قبلی نشان داده شده است استفاده کنید.
-
از build flag در فایل Soong استفاده کنید
در فایل ساخت و ماژول که میخواهید مقدار پرچم را پرس و جو کنید، از یک شرطی برای انشعاب روی مقدار پرچم استفاده کنید. به عنوان مثال، در قطعه زیر، مقدار پرچم 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 flag در makefile استفاده کنید
در فایل make، پرچم ساخت یک متغیر ساخت فقط خواندنی است. نمونه 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
اعلامیه این پرچم دارای یک فیلد workflow
است که در RELEASE_PACKAGE_NFC_STACK.textproto
روی PREBUILT
تنظیم شده است و یک مقدار رشته ای از com.android.nfcservices
RELEASE_PACKAGE_NFC_STACK.textproto
فایل مقادیر پرچم برای پیکربندی توسعه trunk_staging
.
پرچمهای ساخت ثابتهای زمان ساخت هستند و نمیتوان آنها را در زمان اجرا تغییر داد. این پرچم ها در شرایطی استفاده می شوند که از پرچم های 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
یا رشته خالی برای false نمایش داده می شوند. -
workflow
یاLAUNCH
یاPREBUILT
است. ازLAUNCH
برای پرچمهای بولی که ازfalse
بهtrue
پیش میروند، مشابه پرچمهای راهاندازی ویژگی استفاده کنید. ازPREBUILT
برای پرچم هایی که یک نسخه را تنظیم می کنند، معمولاً یک نسخه از پیش ساخته شده، استفاده کنید. -
containers
نوع کدی است که می نویسید، مانند "فروشنده" برای کد فروشنده یا "محصول" برای کد محصول. اگر در مورد ارزش استفاده شک دارید، از هر چهار نوع کانتینر همانطور که در نمونه قبلی نشان داده شده است استفاده کنید.
-
از build flag در فایل Soong استفاده کنید
در فایل ساخت و ماژول که میخواهید مقدار پرچم را پرس و جو کنید، از یک شرطی برای انشعاب روی مقدار پرچم استفاده کنید. به عنوان مثال، در قطعه زیر، مقدار پرچم 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 flag در makefile استفاده کنید
در فایل make، پرچم ساخت یک متغیر ساخت فقط خواندنی است. نمونه 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
اعلامیه این پرچم دارای یک فیلد workflow
است که در RELEASE_PACKAGE_NFC_STACK.textproto
روی PREBUILT
تنظیم شده است و یک مقدار رشته ای از com.android.nfcservices
RELEASE_PACKAGE_NFC_STACK.textproto
فایل مقادیر پرچم برای پیکربندی توسعه trunk_staging
.
پرچمهای ساخت ثابتهای زمان ساخت هستند و نمیتوان آنها را در زمان اجرا تغییر داد. این پرچم ها در شرایطی استفاده می شوند که از پرچم های 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
یا رشته خالی برای false نمایش داده می شوند. -
workflow
یاLAUNCH
یاPREBUILT
است. ازLAUNCH
برای پرچمهای بولی که ازfalse
بهtrue
پیش میروند، مشابه پرچمهای راهاندازی ویژگی استفاده کنید. ازPREBUILT
برای پرچم هایی که یک نسخه را تنظیم می کنند، معمولاً یک نسخه از پیش ساخته شده، استفاده کنید. -
containers
نوع کدی است که می نویسید، مانند "فروشنده" برای کد فروشنده یا "محصول" برای کد محصول. اگر در مورد ارزش استفاده شک دارید، از هر چهار نوع کانتینر همانطور که در نمونه قبلی نشان داده شده است استفاده کنید.
-
از build flag در فایل Soong استفاده کنید
در فایل ساخت و ماژول که میخواهید مقدار پرچم را پرس و جو کنید، از یک شرطی برای انشعاب روی مقدار پرچم استفاده کنید. به عنوان مثال، در قطعه زیر، مقدار پرچم 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 flag در makefile استفاده کنید
در فایل make، پرچم ساخت یک متغیر ساخت فقط خواندنی است. نمونه 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
اعلامیه این پرچم دارای یک فیلد workflow
است که در RELEASE_PACKAGE_NFC_STACK.textproto
روی PREBUILT
تنظیم شده است و یک مقدار رشته ای از com.android.nfcservices
RELEASE_PACKAGE_NFC_STACK.textproto
فایل مقادیر پرچم برای پیکربندی توسعه trunk_staging
.