As flags de lançamento de recursos são usadas pelo Google como uma garantia de manter as ramificações de código estáveis. Além disso, elas têm uso obrigatório em determinados tipos de contribuições do AOSP. Antes de implementar flags de lançamento de recursos, determine se isso é necessário para sua mudança. Caso uma flag seja necessária, determine o tipo de flag que será usado.
Determinar o uso de flags
Para determinar quando usar uma flag de lançamento de recurso, siga estas diretrizes:
Se a mudança que você está fazendo for do tipo que pode desestabilizar a base de código do AOSP, como a adição de um novo recurso ou correção de um bug particularmente complexo, use uma flag de lançamento de recurso.
Por outro lado, se você estiver fazendo uma mudança de código que provavelmente não vai desestabilizar a base de código, como a modificação de comentários, não será necessário usar uma flag de lançamento de recurso.
Determinar o tipo de flag
Existem dois tipos de flag: flags aconfig e flags de build.
Flags aconfig
As flags aconfig são usadas para separar as execuções de código não lançado e código lançado durante os testes e o processo de lançamento. Esse tipo de flag pode ser de leitura e gravação ou somente leitura:
Flags aconfig de leitura e gravação são variáveis booleanas que você pode ativar (definir como
true
) ou desativar (definir comofalse
) durante a execução. Use uma flag de leitura e gravação para testar e lançar mudanças sem afetar a estabilidade da ramificação principal.Flags aconfig somente leitura são constantes booleanas que não podem ser alteradas durante a execução. É possível converter flags aconfig de leitura e gravação para somente leitura em códigos estáveis e prontos para o lançamento.
Além disso, dependendo do compilador usado, quando uma flag somente leitura é aplicada, um código não executado pode ser excluído do build. Você pode usar flags somente leitura para ocultar códigos que não estão prontos para fazer parte de um lançamento.
Flags de build
As flags de build são constantes do tempo de build (strings) e não podem ser alteradas durante a execução. Use essas flags quando não for possível usar flags aconfig, como nestes exemplos:
- Você tem um código pré-compilado ou pré-criado que quer incluir no build.
- Você quer fazer mudanças no sistema de build em si.
- Você quer adicionar flags em volta de dependências para controlar o tamanho do código.