빌드 플래그는 빌드 시간 상수이며 런타임 중에 변경할 수 없습니다. 이러한 플래그는 다음과 같이 aconfig 플래그를 사용할 수 없는 경우에 사용됩니다.
- 빌드에 선택적으로 포함할 사전 컴파일된 코드 또는 사전 빌드된 코드가 있습니다.
- 빌드 시스템 자체를 변경하려고 합니다.
- 코드 크기를 관리하기 위해 종속 항목에 플래그를 지정하려 합니다.
- 기능 출시를 관리하려고 하는데 시스템에서 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
입니다. 기능 출시 플래그와 마찬가지로false
에서true
로 전환되는 불리언 플래그에는LAUNCH
를 사용합니다. 일반적으로 사전 빌드된 버전을 설정하는 플래그에는PREBUILT
를 사용합니다.containers
작성 중인 코드 유형입니다(예: 공급업체 코드의 경우 'vendor', 제품 코드의 경우 'product'). 사용할 값을 잘 모르겠다면 이전 샘플과 같이 네 가지 컨테이너 유형을 모두 사용하세요.
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: [],
).
makefile에서 빌드 플래그 사용
make 파일에서 빌드 플래그는 읽기 전용 make 변수입니다. 다음 Makefile 샘플은 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
이 플래그의 선언에는 RELEASE_PACKAGE_NFC_STACK.textproto
에서 workflow
필드가 PREBUILT
로 설정되어 있고 trunk_staging
개발 구성의 플래그 값 파일인 RELEASE_PACKAGE_NFC_STACK.textproto
에서 문자열 값이 com.android.nfcservices
입니다.