Флаги запуска функций используются Google как способ обеспечения стабильных ветвей кода. Эти флаги также необходимы для определенных типов вкладов в AOSP. Прежде чем внедрять пометку запуска функции, определите, необходим ли пометка для вашего изменения. И если флаг необходим, вам следует определить тип используемого флага.
Определить использование флага
Чтобы определить, когда использовать флаг запуска функции, следуйте этим рекомендациям:
Если вы вносите изменение, которое может привести к нестабильности кодовой базы AOSP, например, добавляете новую функцию или исправляете особенно сложную ошибку, используйте флаг запуска функции.
И наоборот, если вы вносите изменения в код, которые не могут привести к нестабильности кодовой базы, например изменение комментариев, вам не нужно использовать флаг запуска функции.
Определить тип флага
Существует два типа флагов: флаги aconfig и флаги сборки .
Флаги конфигурации
Флаги Aconfig используются для отделения выполнения невыпущенного кода от выпущенного кода в процессе тестирования и выпуска. Флаги Aconfig могут быть доступны для чтения и записи или только для чтения:
Флаги aconfig для чтения и записи — это логические переменные, которые вы можете включить (установить в
true
) или отключить (установить вfalse
) во время выполнения. Используйте флаг чтения-записи для тестирования и выпуска изменений, не влияя на стабильность основной ветки.Флаги конфигурации aconfig, доступные только для чтения, представляют собой логические константы, которые нельзя изменить во время выполнения. Вы можете преобразовать флаги aconfig для чтения и записи в флаги aconfig, доступные только для чтения, для стабильного и готового к выпуску кода.
Кроме того, в зависимости от используемого вами компилятора при использовании флага «только для чтения» неисполняемый код может быть исключен из сборки. Таким образом, вы можете использовать флаги только для чтения, чтобы скрыть любой код, который не готов стать частью выпуска.
Создание флагов
Флаги сборки — это константы времени сборки (строки), и вы не можете изменить их во время выполнения. Используйте эти флаги в случаях, когда вы не можете использовать флаги aconfig, например:
- У вас есть предварительно скомпилированный или предварительно созданный фрагмент кода, который вы хотите включить в сборку.
- Вы хотите внести изменения в сборку самой системы.
- Вы хотите поместить флаги вокруг зависимостей, чтобы управлять размером кода.