إنّ علامات الإنشاء هي ثوابت وقت الإنشاء ولا يمكن تغييرها أثناء وقت التشغيل. تُستخدَم هذه العلامات في الحالات التي لا يمكن فيها استخدام علامات 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أو السلسلة الفارغة للقيمة "خطأ". workflowهو إماLAUNCHأوPREBUILT. استخدِمLAUNCHللعَلامات المنطقية التي تنتقل منfalseإلىtrue، على غرار عَلامات إطلاق الميزات. استخدِمPREBUILTللعلامات التي تحدّد إصدارًا، وعادةً ما يكون إصدارًا مُنشأ مسبقًا.containersنوع الرمز الذي تكتبه، مثل "المورّد" لرمز المورّد أو "المنتج" لرمز المنتج إذا كنت غير متأكّد من القيمة التي يجب استخدامها، استخدِم جميع أنواع الحاويات الأربعة كما هو موضّح في المثال السابق.
- يحتوي 
 
استخدام علامة إنشاء في ملف 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: [],).
استخدام علامة إنشاء في ملف 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.