Объявите и используйте флаг сборки

Флаги сборки являются константами времени сборки и не могут быть изменены во время выполнения. Эти флаги используются в случаях, когда флаги aconfig использовать невозможно, например:

  • У вас есть предварительно скомпилированный или предварительно созданный фрагмент кода, который вы хотите при необходимости включить в сборку.
  • Вы хотите внести изменения в сборку самой системы.
  • Вы хотите поместить флаги вокруг зависимостей, чтобы управлять размером кода.
  • Вы хотите управлять запуском функции, но вам необходимо проверить значение флага, прежде чем флаги конфигурации станут доступны системе.

Объявить флаг сборки

Флаги сборки объявляются в файлах textproto. Чтобы объявить флаг сборки:

  1. Перейдите в WORKING_DIRECTORY /build/release/flag_declarations/
  2. Создайте файл с именем RELEASE_ MY_FLAG_NAME .textproto .
  3. Отредактируйте файл и добавьте запись, подобную следующей:

    name: "RELEASE_MY_FLAG_NAME"
    namespace: "android_UNKNOWN"
    description: "Control if we should read from new storage."
    workflow: LAUNCH
    containers: "product"
    containers: "system"
    containers: "system_ext"
    containers: "vendor"
    

    Где:

    • name содержит имя флага, которому предшествует RELEASE_ . Допускаются только заглавные буквы и подчеркивание.
    • namespace содержит пространство имен для вкладов. Чтобы определить пространство имен, вам необходимо обратиться к назначенному рецензенту Google. Если вы используете флаги запуска функций для поддержания стабильности вашего собственного зеркала AOSP, вы можете использовать пространство имен по своему усмотрению.
    • value — это начальный тип и значение флага. Тип может быть bool_value или string_value . Если тип — string_value , то значение должно быть в кавычках. Если не указано, значение представляет собой пустую строку. Логические значения представлены либо как true , либо как пустая строка для false.
    • workflowLAUNCH или PREBUILT . Используйте LAUNCH для логических флагов, которые меняют значение с false на true , аналогично флагам запуска функций. Используйте PREBUILT для флагов, устанавливающих версию, обычно предварительно созданную.
    • containers типа кода, который вы пишете, например «поставщик» для кода поставщика или «продукт» для кода продукта. Если вы сомневаетесь в правильности использования, используйте все четыре типа контейнеров, как показано в предыдущем примере.

Используйте флаг сборки в файле Soong

В файле сборки и модуле, где вы хотите запросить значение флага, используйте условие для перехода по значению флага. Например, в следующем фрагменте запрашивается значение флага RELEASE__READ_FROM_NEW_STORAGE :

cc_defaults {
  name: "aconfig_lib_cc_shared_link.defaults",
  shared_libs: select(release_flag("RELEASE_READ_FROM_NEW_STORAGE"), {
    true: ["libaconfig_storage_read_api_cc],
    default: [],
  }),
}

Если значение этого флага равно true , модуль libaconfig_storage_read_api_cc динамически связывается с модулем cc_defaults .

Если значение этого флага равно false , ничего ( default: [], ) не происходит.

Используйте флаг сборки в make-файле

В файле make флаг сборки — это переменная make, доступная только для чтения. Следующий пример make-файла обращается к флагу сборки под названием RELEASED_PACKAGE_NFC_STCK :

# NFC and Secure Element packages
PRODUCT_PACKAGES += \
    $(RELEASE_PACKAGE_NFC_STACK) \
    Tag \
    SecureElement \
    android.hardware.nfc-service.st \
    android.hardware.secure_element@1.0-service.st \
    NfcOverlayCoral

В объявлении этого флага поле workflow имеет значение PREBUILT в RELEASE_PACKAGE_NFC_STACK.textproto и строковое значение com.android.nfcservices RELEASE_PACKAGE_NFC_STACK.textproto в файле значений флагов для конфигурации разработки trunk_staging .

,

Флаги сборки являются константами времени сборки и не могут быть изменены во время выполнения. Эти флаги используются в случаях, когда флаги aconfig использовать невозможно, например:

  • У вас есть предварительно скомпилированный или предварительно созданный фрагмент кода, который вы хотите при необходимости включить в сборку.
  • Вы хотите внести изменения в сборку самой системы.
  • Вы хотите поместить флаги вокруг зависимостей, чтобы управлять размером кода.
  • Вы хотите управлять запуском функции, но вам необходимо проверить значение флага, прежде чем флаги конфигурации станут доступны системе.

Объявить флаг сборки

Флаги сборки объявляются в файлах textproto. Чтобы объявить флаг сборки:

  1. Перейдите в WORKING_DIRECTORY /build/release/flag_declarations/
  2. Создайте файл с именем RELEASE_ MY_FLAG_NAME .textproto .
  3. Отредактируйте файл и добавьте запись, подобную следующей:

    name: "RELEASE_MY_FLAG_NAME"
    namespace: "android_UNKNOWN"
    description: "Control if we should read from new storage."
    workflow: LAUNCH
    containers: "product"
    containers: "system"
    containers: "system_ext"
    containers: "vendor"
    

    Где:

    • name содержит имя флага, которому предшествует RELEASE_ . Допускаются только заглавные буквы и подчеркивание.
    • namespace содержит пространство имен для вкладов. Чтобы определить пространство имен, вам необходимо обратиться к назначенному рецензенту Google. Если вы используете флаги запуска функций для поддержания стабильности вашего собственного зеркала AOSP, вы можете использовать пространство имен по своему усмотрению.
    • value — это начальный тип и значение флага. Тип может быть bool_value или string_value . Если тип — string_value , то значение должно быть в кавычках. Если не указано, значение представляет собой пустую строку. Логические значения представлены либо как true , либо как пустая строка для false.
    • workflowLAUNCH или PREBUILT . Используйте LAUNCH для логических флагов, которые меняют значение с false на true , аналогично флагам запуска функций. Используйте PREBUILT для флагов, устанавливающих версию, обычно предварительно созданную.
    • containers типа кода, который вы пишете, например «поставщик» для кода поставщика или «продукт» для кода продукта. Если вы сомневаетесь в правильности использования, используйте все четыре типа контейнеров, как показано в предыдущем примере.

Используйте флаг сборки в файле Soong

В файле сборки и модуле, где вы хотите запросить значение флага, используйте условие для перехода по значению флага. Например, в следующем фрагменте запрашивается значение флага RELEASE__READ_FROM_NEW_STORAGE :

cc_defaults {
  name: "aconfig_lib_cc_shared_link.defaults",
  shared_libs: select(release_flag("RELEASE_READ_FROM_NEW_STORAGE"), {
    true: ["libaconfig_storage_read_api_cc],
    default: [],
  }),
}

Если значение этого флага равно true , модуль libaconfig_storage_read_api_cc динамически связывается с модулем cc_defaults .

Если значение этого флага равно false , ничего ( default: [], ) не происходит.

Используйте флаг сборки в make-файле

В файле make флаг сборки — это переменная make, доступная только для чтения. Следующий пример make-файла обращается к флагу сборки под названием RELEASED_PACKAGE_NFC_STCK :

# NFC and Secure Element packages
PRODUCT_PACKAGES += \
    $(RELEASE_PACKAGE_NFC_STACK) \
    Tag \
    SecureElement \
    android.hardware.nfc-service.st \
    android.hardware.secure_element@1.0-service.st \
    NfcOverlayCoral

В объявлении этого флага поле workflow имеет значение PREBUILT в RELEASE_PACKAGE_NFC_STACK.textproto и строковое значение com.android.nfcservices RELEASE_PACKAGE_NFC_STACK.textproto в файле значений флагов для конфигурации разработки trunk_staging .

,

Флаги сборки являются константами времени сборки и не могут быть изменены во время выполнения. Эти флаги используются в случаях, когда флаги aconfig использовать невозможно, например:

  • У вас есть предварительно скомпилированный или предварительно созданный фрагмент кода, который вы хотите при необходимости включить в сборку.
  • Вы хотите внести изменения в сборку самой системы.
  • Вы хотите поместить флаги вокруг зависимостей, чтобы управлять размером кода.
  • Вы хотите управлять запуском функции, но вам необходимо проверить значение флага, прежде чем флаги конфигурации станут доступны системе.

Объявить флаг сборки

Флаги сборки объявляются в файлах textproto. Чтобы объявить флаг сборки:

  1. Перейдите в WORKING_DIRECTORY /build/release/flag_declarations/
  2. Создайте файл с именем RELEASE_ MY_FLAG_NAME .textproto .
  3. Отредактируйте файл и добавьте запись, подобную следующей:

    name: "RELEASE_MY_FLAG_NAME"
    namespace: "android_UNKNOWN"
    description: "Control if we should read from new storage."
    workflow: LAUNCH
    containers: "product"
    containers: "system"
    containers: "system_ext"
    containers: "vendor"
    

    Где:

    • name содержит имя флага, которому предшествует RELEASE_ . Допускаются только заглавные буквы и подчеркивание.
    • namespace содержит пространство имен для вкладов. Чтобы определить пространство имен, вам необходимо обратиться к назначенному рецензенту Google. Если вы используете флаги запуска функций для поддержания стабильности вашего собственного зеркала AOSP, вы можете использовать пространство имен по своему усмотрению.
    • value — это начальный тип и значение флага. Тип может быть bool_value или string_value . Если тип — string_value , то значение должно быть в кавычках. Если не указано, значение представляет собой пустую строку. Логические значения представлены либо как true , либо как пустая строка для false.
    • workflowLAUNCH или PREBUILT . Используйте LAUNCH для логических флагов, которые меняют значение с false на true , аналогично флагам запуска функций. Используйте PREBUILT для флагов, устанавливающих версию, обычно предварительно созданную.
    • containers типа кода, который вы пишете, например «поставщик» для кода поставщика или «продукт» для кода продукта. Если вы сомневаетесь в правильности использования, используйте все четыре типа контейнеров, как показано в предыдущем примере.

Используйте флаг сборки в файле Soong

В файле сборки и модуле, где вы хотите запросить значение флага, используйте условие для перехода по значению флага. Например, в следующем фрагменте запрашивается значение флага RELEASE__READ_FROM_NEW_STORAGE :

cc_defaults {
  name: "aconfig_lib_cc_shared_link.defaults",
  shared_libs: select(release_flag("RELEASE_READ_FROM_NEW_STORAGE"), {
    true: ["libaconfig_storage_read_api_cc],
    default: [],
  }),
}

Если значение этого флага равно true , модуль libaconfig_storage_read_api_cc динамически связывается с модулем cc_defaults .

Если значение этого флага равно false , ничего ( default: [], ) не происходит.

Используйте флаг сборки в make-файле

В файле make флаг сборки — это переменная make, доступная только для чтения. Следующий пример make-файла обращается к флагу сборки под названием RELEASED_PACKAGE_NFC_STCK :

# NFC and Secure Element packages
PRODUCT_PACKAGES += \
    $(RELEASE_PACKAGE_NFC_STACK) \
    Tag \
    SecureElement \
    android.hardware.nfc-service.st \
    android.hardware.secure_element@1.0-service.st \
    NfcOverlayCoral

В объявлении этого флага поле workflow имеет значение PREBUILT в RELEASE_PACKAGE_NFC_STACK.textproto и строковое значение com.android.nfcservices RELEASE_PACKAGE_NFC_STACK.textproto в файле значений флагов для конфигурации разработки trunk_staging .