Ustawianie wartości flagi wdrażania funkcji

Domyślnie wszystkie flagi uruchamiania funkcji mają ustawienie READ_WRITE i są DISABLED. Zanim przetestujesz funkcję, musisz zastąpić wartość domyślną używaną w kompilacji, tworząc plik wartości flag dla flagi. W pliku wartości flag ustawiasz stan poszczególnych flag (ENABLED lub DISABLED) oraz uprawnienia (READ_WRITE lub READ_ONLY).

Konfiguracja wersji to katalog zawierający wszystkie pliki wartości flag dla konkretnej kompilacji Androida (z włączonymi i wyłączonymi określonymi funkcjami).

AOSP zawiera kilka konfiguracji wersji, np. trunk_staging. Katalogi konfiguracji wersji znajdują się w WORKING_DIRECTORY/build/release/aconfig/.

Gdy używasz polecenia lunch, aby wybrać miejsce docelowe, ustawiasz też konfigurację wersji dla tego miejsca. Oto przykład miejsca docelowego trunk_staging:

lunch aosp_cf_x86_64_only_phone-trunk_staging-userdebug

Trunk staging to konfiguracja wersji deweloperskiej, ponieważ Google używa jej do testowania funkcji przed ich ogólnym udostępnieniem. Ta konfiguracja używa głównie flag READ_WRITE, które umożliwiają testowanie kodu z włączonymi lub wyłączonymi funkcjami w czasie działania.

W przypadku ogólnego udostępnienia użyj konfiguracji wersji produkcyjnej. Konfiguracja wersji produkcyjnej używa głównie flag READ_ONLY i odzwierciedla cały kod włączony w tej wersji.

Dodawanie flagi do konfiguracji wersji trunk_staging

Aby przetestować nową flagę, dodaj ją do konfiguracji wersji trunk_staging w ten sposób:

  1. Otwórz WORKING_DIRECTORY/build/release/aconfig/trunk_staging/.
  2. Utwórz katalog o takiej samej nazwie pakietu jak flaga, np. com.example.android.aconfig.demo.flags jak pokazano w sekcji Deklarowanie flagi aconfig w Javie.
  3. Otwórz nowy katalog.
  4. W katalogu utwórz plik wartości flag, który łączy nazwę używaną w pliku deklaracji flagi (.aconfig), np. my_static_flag, jak pokazano w sekcji Deklarowanie flagi aconfig w Javie z _flag_values.textproto. Nazwa wynikowego pliku to my_static_flag_flag_values.textproto.
  5. Edytuj plik i dodaj flag_value podobny do tego:

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

    Gdzie:

    • package zawiera tę samą nazwę pakietu, która jest używana w deklaracji.
    • name zawiera tę samą nazwę, która jest używana w deklaracji.
    • state to ENABLED lub DISABLED.
    • permission to READ_WRITE lub READ_ONLY. Zwykle w przypadku plików wartości flag, które są częścią konfiguracji wersji, permission jest ustawione na READ_ONLY.
  6. Zapisz plik i zamknij edytor.

  7. W tym samym katalogu co plik wartości flag utwórz plik kompilacji o nazwie Android.bp. Ten plik służy do uwzględniania pliku wartości flag w kompilacji.

  8. W pliku Android.bp utwórz sekcję aconfig_values podobną do tej:

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

    Gdzie:

    • name to unikalna nazwa modułu kompilacji Soong. Google uses the convention of aconfig-values-platform_PATH_TO_RELEASE_CONFIG_DIR-CONFIG_NAME-package.name-all. Ta nazwa musi być zgodna z nazwą, którą Soong automatycznie generuje na podstawie deklaracji aconfig_value_set w pliku Android.bp katalogu nadrzędnego. Pamiętaj, że PATH_TO_RELEASE_CONFIG_DIR to build_release.
    • package zawiera tę samą nazwę pakietu, która jest używana w deklaracji.
    • srcs to lista wszystkich plików wartości flag.
  9. Zapisz plik i zamknij edytor.

  10. Otwórz katalog nadrzędny (użyj polecenia cd ..).

  11. Skompiluj Androida i uruchom nowy kod, aby sprawdzić, czy jest włączony zgodnie z ustawieniem w pliku wartości flag.