Flag การสร้างคือค่าคงที่ของเวลาสร้างและเปลี่ยนแปลงไม่ได้ระหว่างรันไทม์ แฟล็กเหล่านี้ใช้ในกรณีที่ใช้แฟล็ก aconfig ไม่ได้ เช่น
- คุณมีโค้ดที่คอมไพล์ไว้ล่วงหน้าหรือสร้างไว้ล่วงหน้าซึ่งคุณต้องการรวมไว้ในบิลด์ (ไม่บังคับ)
- คุณต้องการทําการเปลี่ยนแปลงในระบบการสร้าง
- คุณต้องการใส่แฟล็กรอบๆ ทรัพยากร Dependency เพื่อจัดการขนาดโค้ด
- คุณต้องการจัดการการเปิดตัวฟีเจอร์ แต่ต้องตรวจสอบค่าของ Flag ก่อนเพื่อให้ระบบแสดง Flag aconfig
ประกาศ Flag การสร้าง
ประกาศ Flag การสร้างในไฟล์ textproto วิธีประกาศ Flag บิลด์
- นำทางไปยัง
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
สำหรับ Flag ที่กำหนดเวอร์ชันไว้แล้ว ซึ่งโดยทั่วไปจะเป็นแฟล็กที่สร้างไว้ล่วงหน้าcontainers
ประเภทโค้ดที่คุณเขียน เช่น "vendor" สำหรับรหัสผู้ให้บริการ หรือ "product" สำหรับรหัสผลิตภัณฑ์ หากไม่แน่ใจว่าจะต้องใช้ค่าใด ให้ใช้คอนเทนเนอร์ทั้ง 4 ประเภทตามที่แสดงในตัวอย่างก่อนหน้านี้
ใช้ Flag การสร้างในไฟล์ Soong
ในไฟล์บิลด์และโมดูลที่คุณต้องการค้นหาค่า Flag ให้ใช้เงื่อนไขเพื่อแยกสาขาตามค่า Flag ตัวอย่างเช่น ในข้อมูลโค้ดต่อไปนี้ ระบบจะค้นหาค่าของ Flag 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: [],
}),
}
หากค่าของ Flag นี้คือ true
ระบบจะลิงก์โมดูล libaconfig_storage_read_api_cc
กับโมดูล cc_defaults
แบบไดนามิก
หากค่าของ Flag นี้คือ false
จะไม่มีการดำเนินการใดๆ (default: [],
)
ใช้ Flag การสร้างในไฟล์ Make
ในไฟล์ make แฟล็กการสร้างคือตัวแปร make แบบอ่านอย่างเดียว ตัวอย่างไฟล์ makefile ต่อไปนี้จะเข้าถึง Flag การสร้างชื่อ 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