แฟล็กบิลด์เป็นค่าคงที่ในเวลาบิลด์และเปลี่ยนแปลงไม่ได้ในระหว่างรันไทม์ แฟล็กเหล่านี้ใช้ในกรณีที่ใช้แฟล็กการกำหนดค่าไม่ได้ เช่น
- คุณมีโค้ดที่คอมไพล์หรือสร้างไว้ล่วงหน้าซึ่งคุณต้องการรวมไว้ในการบิลด์ (ไม่บังคับ)
- คุณต้องการทำการเปลี่ยนแปลงเพื่อสร้างระบบบิลด์ด้วยตนเอง
- คุณต้องการใส่เครื่องหมายรอบๆ การอ้างอิงเพื่อจัดการขนาดโค้ด
- คุณต้องการจัดการการเปิดตัวฟีเจอร์ แต่ต้องตรวจสอบค่า ของฟีเจอร์ก่อนที่ระบบจะทำให้ฟีเจอร์ 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 Mirror ของคุณเอง คุณจะ ใช้เนมสเปซอย่างไรก็ได้value
คือประเภทและค่าเริ่มต้นของฟีเจอร์ ประเภทอาจเป็นbool_value
หรือstring_value
หากประเภทคือstring_value
ค่าต้องอยู่ในเครื่องหมาย คำพูด หากไม่ได้ระบุ ค่าจะเป็นสตริงว่าง ค่าบูลีน จะแสดงเป็นtrue
หรือสตริงว่างสำหรับค่าเท็จworkflow
คือLAUNCH
หรือPREBUILT
ใช้LAUNCH
สำหรับบูลีน แฟล็กที่เปลี่ยนจากfalse
เป็นtrue
เช่นเดียวกับฟีเจอร์ที่เปิดตัว ใช้PREBUILT
สำหรับแฟล็กที่ตั้งค่าเวอร์ชัน ซึ่งโดยปกติจะเป็นเวอร์ชันที่สร้างไว้ล่วงหน้าcontainers
ประเภทของโค้ดที่คุณเขียน เช่น "ผู้ขาย" สำหรับรหัสผู้ขาย หรือ "ผลิตภัณฑ์" สำหรับรหัสผลิตภัณฑ์ หากไม่แน่ใจว่าจะใช้ค่าใด ให้ใช้คอนเทนเนอร์ทั้ง 4 ประเภทตามที่แสดงในตัวอย่างก่อนหน้า
ใช้แฟล็กบิลด์ในไฟล์ 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
หากค่าของ Flag นี้เป็น false
จะไม่มีอะไรเกิดขึ้น (default: [],
)
ใช้แฟล็กบิลด์ใน Makefile
ในไฟล์ Make แฟล็กบิลด์คือตัวแปร 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
ฟิลด์ที่ตั้งค่าเป็น PREBUILT
ใน
RELEASE_PACKAGE_NFC_STACK.textproto
และค่าสตริงของ
com.android.nfcservices
RELEASE_PACKAGE_NFC_STACK.textproto
ไฟล์ค่าแฟล็กสำหรับการกำหนดค่าการพัฒนา trunk_staging