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