پرچمهای راهاندازی ویژگی توسط گوگل به عنوان رویکردی برای تضمین شاخههای کد پایدار استفاده میشوند. این پرچمها همچنین برای انواع خاصی از مشارکتها در AOSP مورد نیاز هستند. قبل از پیادهسازی پرچمگذاری راهاندازی ویژگی، مشخص کنید که آیا یک پرچم برای تغییر شما ضروری است یا خیر. و اگر یک پرچم ضروری است، باید نوع پرچم مورد استفاده را تعیین کنید.
تعیین کاربرد پرچم
برای تعیین زمان استفاده از پرچم راهاندازی ویژگی، این دستورالعملها را دنبال کنید:
اگر در حال ایجاد تغییری هستید که میتواند باعث ناپایداری کدبیس AOSP شود، مانند اضافه کردن یک ویژگی جدید یا رفع یک اشکال پیچیده، از یک پرچم راهاندازی ویژگی استفاده کنید.
برعکس، اگر در حال ایجاد تغییری در کد هستید که احتمال ناپایداری کدبیس را افزایش نمیدهد، مانند تغییر کامنتها، نیازی به استفاده از پرچم راهاندازی ویژگی ندارید.
تعیین نوع پرچم
دو نوع پرچم وجود دارد: پرچمهای aconfig و پرچمهای build .
پرچمهای پیکربندی
پرچمهای Aconfig برای جدا کردن اجرای کد منتشر نشده از کد منتشر شده در طول فرآیند آزمایش و انتشار استفاده میشوند. پرچمهای Aconfig میتوانند خواندنی-نوشتنی یا فقط خواندنی باشند:
پرچمهای پیکربندی خواندنی-نوشتنی متغیرهای بولی هستند که میتوانید در زمان اجرا آنها را فعال (با مقدار
trueتنظیم کنید) یا غیرفعال (با مقدارfalseتنظیم کنید) کنید. از پرچم خواندنی-نوشتنی برای آزمایش و انتشار تغییرات بدون تأثیر بر پایداری شاخه اصلی استفاده کنید.پرچمهای aconfig فقط خواندنی، ثابتهای بولی هستند که نمیتوانید آنها را در زمان اجرا تغییر دهید. میتوانید پرچمهای aconfig خواندنی-نوشتنی را برای کدی که پایدار و آماده انتشار است، به پرچمهای aconfig فقط خواندنی تبدیل کنید.
علاوه بر این، بسته به کامپایلری که استفاده میکنید، وقتی از یک پرچم فقط خواندنی استفاده میشود، کدی که اجرا نمیشود ممکن است از ساخت حذف شود. بنابراین، میتوانید از پرچمهای فقط خواندنی برای پنهان کردن هر کدی که آماده نیست بخشی از یک نسخه باشد، استفاده کنید.
ساخت پرچم
پرچمهای ساخت، ثابتهای زمان ساخت (رشتهها) هستند و شما نمیتوانید آنها را در زمان اجرا تغییر دهید. از این پرچمها در شرایطی استفاده کنید که نمیتوانید از پرچمهای aconfig استفاده کنید، مانند:
- شما یک قطعه کد از پیش کامپایل شده یا از پیش ساخته شده دارید که میخواهید در ساخت (build) آن را بگنجانید.
- شما میخواهید تغییراتی برای ساخت خود سیستم ایجاد کنید.
- شما میخواهید برای مدیریت حجم کد، پرچمهایی (flags) را در اطراف وابستگیها قرار دهید.