Flag build adalah konstanta waktu build dan tidak dapat diubah selama runtime. Flag ini digunakan dalam keadaan saat flag aconfig tidak dapat digunakan, seperti
- Anda memiliki potongan kode yang telah dikompilasi atau dibuat sebelumnya yang ingin Anda sertakan secara opsional dalam build.
- Anda ingin membuat perubahan pada sistem build itu sendiri.
- Anda ingin menempatkan flag di sekitar dependensi untuk mengelola ukuran kode.
- Anda ingin mengelola peluncuran fitur, tetapi Anda perlu memeriksa nilai flag sebelum flag aconfig tersedia oleh sistem.
Mendeklarasikan flag build
Flag build dideklarasikan dalam file textproto. Untuk mendeklarasikan flag build:
- Navigasikan ke
WORKING_DIRECTORY/build/release/flag_declarations/
- Buat file bernama
RELEASE_MY_FLAG_NAME.textproto
. Edit file dan tambahkan entri yang mirip dengan berikut ini:
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"
Dalam hal ini:
name
berisi nama tanda yang didahului denganRELEASE_
. Hanya huruf besar dan garis bawah yang diizinkan.namespace
berisi namespace untuk kontribusi. Anda harus bekerja sama dengan peninjau Google yang ditetapkan untuk menentukan namespace Anda. Jika Anda menggunakan tanda peluncuran fitur untuk mempertahankan stabilitas pencerminan AOSP sendiri, Anda dapat menggunakan namespace sesuka Anda.value
adalah jenis dan nilai awal untuk flag tersebut. Jenisnya dapat berupabool_value
ataustring_value
. Jika jenisnya adalahstring_value
maka nilai harus dalam tanda kutip. Jika tidak ditentukan, nilainya adalah string kosong. Nilai Boolean direpresentasikan sebagaitrue
atau string kosong untuk nilai salah.workflow
adalahLAUNCH
atauPREBUILT
. GunakanLAUNCH
untuk flag boolean yang maju darifalse
ketrue
, mirip dengan flag peluncuran fitur. GunakanPREBUILT
untuk tanda yang menetapkan versi, biasanya merupakan bawaan.containers
jenis kode yang Anda tulis, seperti "vendor" untuk kode vendor atau "produk" untuk kode produk. Jika Anda ragu dengan nilai yang akan digunakan, gunakan keempat jenis penampung seperti yang ditunjukkan pada contoh sebelumnya.
Menggunakan flag build dalam file Soong
Dalam file dan modul build tempat Anda ingin membuat kueri nilai tanda, gunakan
kondisional untuk membuat cabang pada nilai tanda. Misalnya, dalam cuplikan berikut, nilai flag RELEASE__READ_FROM_NEW_STORAGE
dikueri:
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: [],
}),
}
Jika nilai tanda ini adalah true
, modul libaconfig_storage_read_api_cc
akan ditautkan secara dinamis ke dalam modul cc_defaults
.
Jika nilai flag ini adalah false
, tidak ada yang terjadi (default: [],
).
Menggunakan flag build dalam makefile
Dalam file make, flag build adalah variabel make hanya baca. Contoh
makefile berikut mengakses flag build yang disebut 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
Deklarasi tanda ini memiliki kolom workflow
yang ditetapkan ke PREBUILT
di
RELEASE_PACKAGE_NFC_STACK.textproto
dan nilai string
com.android.nfcservices
RELEASE_PACKAGE_NFC_STACK.textproto
file nilai tanda untuk konfigurasi pengembangan trunk_staging
.