Google ใช้ Flag การเปิดตัวฟีเจอร์เป็นแนวทางในการทำให้สาขาโค้ดมีเสถียร นอกจากนี้ คุณยังต้องใช้ Flag เหล่านี้สำหรับการมีส่วนร่วมใน AOSP บางประเภทด้วย ก่อนใช้การแจ้งว่าเปิดตัวฟีเจอร์ ให้พิจารณาว่าจำเป็นต้องแจ้งว่าเปิดตัวฟีเจอร์สำหรับการเปลี่ยนแปลงหรือไม่ และหากจำเป็นต้องใช้การแจ้งว่าไม่เหมาะสม คุณควรระบุประเภทการแจ้งว่าไม่เหมาะสมที่จะใช้
กำหนดการใช้ Flag
หากต้องการกำหนดว่าควรใช้ Flag การเปิดตัวฟีเจอร์เมื่อใด ให้ทำตามหลักเกณฑ์ต่อไปนี้
หากคุณทำการเปลี่ยนแปลงที่อาจทำให้โค้ดฐาน AOSP ไม่เสถียร เช่น การเพิ่มฟีเจอร์ใหม่หรือการแก้ไขข้อบกพร่องที่ซับซ้อนมาก ให้ใช้ Flag การเปิดตัวฟีเจอร์
ในทางกลับกัน หากคุณทำการเปลี่ยนแปลงโค้ดที่ไม่น่าจะทําให้ฐานโค้ดไม่เสถียร เช่น การแก้ไขความคิดเห็น คุณก็ไม่จําเป็นต้องใช้ Flag การเปิดตัวฟีเจอร์
ระบุประเภทธง
โดยมี 2 ประเภท ได้แก่ flag aconfig และ flag build
Flag ของ Aconfig
Flag Aconfig ใช้เพื่อแยกการเรียกใช้โค้ดที่ยังไม่ได้เผยแพร่ออกจากโค้ดที่เผยแพร่แล้วในระหว่างกระบวนการทดสอบและการเผยแพร่ Flag ของ Aconfig อาจเป็นแบบอ่าน/เขียนหรืออ่านอย่างเดียว ดังนี้
Flag aconfig แบบอ่าน/เขียนคือตัวแปรบูลีนที่คุณเปิดใช้ (ตั้งค่าเป็น
true
) หรือปิดใช้ (ตั้งค่าเป็นfalse
) ได้ในรันไทม์ ใช้ Flag แบบอ่าน/เขียนเพื่อทดสอบและเผยแพร่การเปลี่ยนแปลงโดยไม่ส่งผลต่อความเสถียรของสาขาหลักFlag aconfig แบบอ่านอย่างเดียวคือค่าคงที่บูลีนที่คุณไม่สามารถเปลี่ยนแปลงขณะรันไทม์ คุณสามารถแปลง Flag aconfig แบบอ่าน/เขียนเป็น Flag aconfig แบบอ่านอย่างเดียวสำหรับโค้ดที่เสถียรและพร้อมเผยแพร่
นอกจากนี้ เมื่อใช้ Flag แบบอ่านอย่างเดียว ระบบอาจยกเว้นโค้ดที่ไม่ได้ดำเนินการออกจากบิลด์ ทั้งนี้ขึ้นอยู่กับคอมไพเลอร์ที่คุณใช้ คุณจึงใช้ Flag แบบอ่านอย่างเดียวเพื่อซ่อนโค้ดที่ยังไม่พร้อมเป็นส่วนหนึ่งของรุ่นได้
สร้าง Flag
Flag การสร้างคือค่าคงที่ (สตริง) ของเวลาสร้าง และคุณจะเปลี่ยนแปลง Flag เหล่านี้ระหว่างรันไทม์ไม่ได้ ใช้แฟล็กเหล่านี้ในกรณีที่ใช้แฟล็ก aconfig ไม่ได้ เช่น
- คุณมีโค้ดที่คอมไพล์ไว้ล่วงหน้าหรือสร้างไว้ล่วงหน้าที่ต้องการรวมไว้ในบิลด์
- คุณต้องการทําการเปลี่ยนแปลงในระบบการสร้าง
- คุณต้องการใส่ Flag ไว้รอบๆ Dependency เพื่อจัดการขนาดโค้ด