Флаги сборки являются константами времени сборки и не могут быть изменены во время выполнения. Эти флаги используются в случаях, когда флаги aconfig использовать невозможно, например:
- У вас есть предварительно скомпилированный или предварительно созданный фрагмент кода, который вы хотите при необходимости включить в сборку.
- Вы хотите внести изменения в сборку самой системы.
- Вы хотите поместить флаги вокруг зависимостей, чтобы управлять размером кода.
- Вы хотите управлять запуском функции, но вам необходимо проверить значение флага, прежде чем флаги конфигурации станут доступны системе.
Объявить флаг сборки
Флаги сборки объявляются в файлах textproto. Чтобы объявить флаг сборки:
- Перейдите в
WORKING_DIRECTORY /build/release/flag_declarations/
- Создайте файл с именем
RELEASE_ MY_FLAG_NAME .textproto
. Отредактируйте файл и добавьте запись, подобную следующей:
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. -
workflow
—LAUNCH
или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. Чтобы объявить флаг сборки:
- Перейдите в
WORKING_DIRECTORY /build/release/flag_declarations/
- Создайте файл с именем
RELEASE_ MY_FLAG_NAME .textproto
. Отредактируйте файл и добавьте запись, подобную следующей:
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. -
workflow
—LAUNCH
или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. Чтобы объявить флаг сборки:
- Перейдите в
WORKING_DIRECTORY /build/release/flag_declarations/
- Создайте файл с именем
RELEASE_ MY_FLAG_NAME .textproto
. Отредактируйте файл и добавьте запись, подобную следующей:
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. -
workflow
—LAUNCH
или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
.