빌드 플래그는 빌드 시간 상수이며 런타임 중에 변경할 수 없습니다. 이러한 플래그는 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에서 빌드 플래그 사용
메이크 파일에서 빌드 플래그는 읽기 전용 메이크 변수입니다. 다음 메이크파일 샘플은 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
에서 PREBUILT
로 설정된 workflow
필드와 trunk_staging
개발 구성의 플래그 값 파일인 com.android.nfcservices
RELEASE_PACKAGE_NFC_STACK.textproto
문자열 값이 있습니다.