Definir valores da flag de lançamento de recursos

Por padrão, todas as flags de lançamento de recursos são READ_WRITE e estão definidas como DISABLED. Antes de testar um recurso, você precisa substituir o valor padrão usado no build criando um arquivo de valores de flag. Em um arquivo de valores de flag, você define um estado (ENABLED ou DISABLED) e uma permissão (READ_WRITE ou READ_ONLY) individuais.

Uma configuração de lançamento é um diretório que contém todos os arquivos de valores de flag de um build específico do Android (com determinados recursos ativados e desativados).

O AOSP acompanha algumas configurações de lançamento, como trunk_staging. Os diretórios de configuração de lançamento ficam em WORKING_DIRECTORY/build/release/aconfig/.

Quando você usa o comando lunch para escolher um destino, você define também a configuração de lançamento. Por exemplo, esta configuração é um destino trunk_staging:

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

Trunk staging é uma configuração de lançamento de desenvolvimento, já que o Google a usa para testar recursos antes do lançamento geral. Essa configuração usa principalmente flags READ_WRITE que permitem testar seu código com recursos ativados ou desativados durante a execução.

No lançamento geral, use uma configuração de lançamento de lançamento. Uma configuração de lançamento de lançamento usa principalmente flags READ_ONLY e reflete todo o código ativado para o lançamento em questão.

Adicionar uma flag à configuração de lançamento trunk_staging

Para testar uma nova flag, siga estas etapas para adicioná-la à configuração de lançamento trunk_staging:

  1. Navegar até WORKING_DIRECTORY/build/release/aconfig/trunk_staging/
  2. Crie um diretório com o mesmo nome de pacote que sua flag, como com.example.android.aconfig.demo.flags, conforme mostrado em Declarar uma flag aconfig em Java.
  3. Navegue até o novo diretório.
  4. No diretório, crie um arquivo de valores da flag que combine o nome usado na declaração da flag (.aconfig), como my_static_flag, conforme mostrado em Declarar uma flag aconfig em Java com _flag_values.textproto. O nome de arquivo resultante será my_static_flag_flag_values.textproto.
  5. Edite o arquivo e adicione um flag_value semelhante a este:

    flag_value {
      package: "com.example.android.aconfig.demo.flags"
      name: "my_static_flag"
      state: DISABLED
      Permission: READ_WRITE
    }
    

    Em que:

    • package contém o mesmo nome de pacote usado na declaração.
    • name contém o mesmo nome usado na declaração.
    • state é ENABLED ou DISABLED.
    • permission é READ_WRITE ou READ_ONLY. No geral, a permission está definida como READ_ONLY para arquivos de valores da flag que fazem parte de uma configuração de lançamento.
  6. Salve o arquivo e saia do editor.

  7. No mesmo diretório que o arquivo de valores de flag, crie um arquivo de build chamado Android.bp. Esse arquivo é usado para incluir o arquivo de valores de flag no build.

  8. No arquivo Android.bp, crie uma seção aconfig_values semelhante a esta:

    aconfig_values {
      name: "aconfig-values-platform_build_release-trunk-staging-com.android.aconfig.test-all",
      package: "com.android.aconfig.test",
      srcs: [
        "*_flag_values.textproto",
      ]
    }
    

    Em que:

    • name é o nome exclusivo do módulo de build Soong. O Google usa aconfig-values-platform_PATH_TO_RELEASE_CONFIG_DIR-CONFIG-NAME-package.name-all como convenção. Observe que PATH_TO_RELEASE_CONFIG_DIR é build/release.
    • package contém o mesmo nome de pacote usado na declaração.
    • srcs é uma lista de todos os seus arquivos de valores da flag.
  9. Salve o arquivo e saia do editor.

  10. Navegue até o diretório acima do atual (cd ..).

  11. Edite o arquivo Android.bp. Esse arquivo de build contém uma lista dos nomes (name) associados a cada arquivo de valores de flag. Adicione o nome que você usou no arquivo de build anterior (etapa 8) nessa lista.

  12. Crie o Android e execute seu novo código para garantir que ele esteja ativado de acordo com a configuração no arquivo de valores de flag.