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