علامات الإنشاء هي ثوابت وقت الإنشاء ولا يمكن تغييرها أثناء وقت التشغيل. يتم استخدام هذه العلامات في الحالات التي لا يمكن فيها استخدام علامات 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
نوع الرمز الذي تكتبه، مثل "المورِّد" لرمز المورِّد أو "المنتج" لرمز المنتج. إذا لم تكن متأكّدًا من القيمة التي يجب استخدامها، استخدِم جميع أنواع الحاويات الأربعة كما هو موضّح في العيّنة السابقة.
- يحتوي
استخدام علامة إصدار في ملف Sayg
في ملف الإصدار والوحدة حيث تريد الاستعلام عن قيمة العلامة، استخدم شرطيًا للتشعّب على قيمة العلامة. على سبيل المثال، في المقتطف التالي،
يتم طلب قيمة العلامة 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: [],
).
استخدام علامة إنشاء في ملف makefile
في ملف العلامة، تكون علامة الإصدار عبارة عن متغير يجعل للقراءة فقط. يدخل ملف المثال التالي
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
تم ضبطه على PREBUILT
في
RELEASE_PACKAGE_NFC_STACK.textproto
وقيمة سلسلة
com.android.nfcservices
RELEASE_PACKAGE_NFC_STACK.textproto
في ملف قيم العلامات لإعدادات تطوير trunk_staging
.