Flag build adalah konstanta waktu build dan tidak dapat diubah selama runtime. Flag ini digunakan dalam situasi 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 tanda di sekitar dependensi untuk mengelola ukuran kode.
- Anda ingin mengelola peluncuran fitur, tetapi Anda perlu memeriksa nilai flag sebelum flag aconfig tersedia di sistem.
Mendeklarasikan tanda build
Flag build dideklarasikan dalam file textproto. Untuk mendeklarasikan tanda pembuatan:
- Navigasikan ke
WORKING_DIRECTORY/build/release/flag_declarations/ - Buat file dengan nama
RELEASE_MY_FLAG_NAME.textproto. Edit file dan tambahkan entri yang mirip dengan berikut:
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:
nameberisi nama tanda yang diawali denganRELEASE_. Hanya huruf kapital dan garis bawah yang diizinkan.namespaceberisi namespace untuk kontribusi. Anda harus bekerja sama dengan peninjau Google yang ditugaskan untuk menentukan namespace Anda. Jika Anda menggunakan flag peluncuran fitur untuk menjaga stabilitas mirror AOSP Anda sendiri, Anda dapat menggunakan namespace sesuka Anda.valueadalah jenis dan nilai awal untuk tanda. Jenisnya dapat berupabool_valueataustring_value. Jika jenisnya adalahstring_value, maka nilainya harus berada dalam tanda kutip. Jika tidak ditentukan, nilainya adalah string kosong. Nilai boolean direpresentasikan sebagaitrueatau string kosong untuk nilai salah (false).workflowadalahLAUNCHatauPREBUILT. GunakanLAUNCHuntuk flag boolean yang berkembang darifalseketrue, mirip dengan flag peluncuran fitur. GunakanPREBUILTuntuk tanda yang menetapkan versi, biasanya versi bawaan.containersjenis kode yang Anda tulis, seperti "vendor" untuk kode vendor atau "product" untuk kode produk. Jika Anda ragu tentang nilai yang akan digunakan, gunakan keempat jenis penampung seperti yang ditunjukkan dalam contoh sebelumnya.
Menggunakan tanda build dalam file Soong
Dalam file build dan modul tempat Anda ingin membuat kueri nilai tanda, gunakan
kondisional untuk membuat cabang pada nilai tanda. Misalnya, dalam cuplikan berikut,
nilai tanda 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 flag ini adalah true, modul libaconfig_storage_read_api_cc akan ditautkan
secara dinamis ke dalam modul cc_defaults.
Jika nilai tanda ini adalah false, tidak ada (default: [],) yang terjadi.
Menggunakan tanda build dalam makefile
Dalam file make, tanda build adalah variabel make hanya baca. Contoh makefile berikut mengakses tanda 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.