Derleme işaretleri, derleme zamanı sabitleridir ve çalışma zamanında değiştirilemez. Bu işaretler, aconfig işaretlerinin kullanılamadığı durumlarda (ör.
- Derlemeye isteğe bağlı olarak dahil etmek istediğiniz önceden derlenmiş veya önceden oluşturulmuş bir kod parçanız var.
- Derleme sisteminde değişiklik yapmak istiyorsanız.
- Kod boyutunu yönetmek için bağımlılıkların etrafına işaretler yerleştirmek istiyorsunuz.
- Bir özelliğin kullanıma sunulmasını yönetmek istiyorsunuz ancak sistem tarafından aconfig işaretleri kullanıma sunulmadan önce işaretin değerini kontrol etmeniz gerekiyor.
Derleme işareti bildirme
Derleme işaretleri, textproto dosyalarında tanımlanır. Derleme işareti bildirmek için:
WORKING_DIRECTORY/build/release/flag_declarations/konumuna gitRELEASE_MY_FLAG_NAME.textprotoadlı bir dosya oluşturun.Dosyayı düzenleyerek aşağıdakine benzer bir giriş ekleyin:
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"Nerede:
name,RELEASE_ile başlayan işaret adını içerir. Yalnızca büyük harflere ve alt çizgiye izin verilir.namespace, katkılar için ad alanını içerir. Ad alanınızı belirlemek için atanan Google inceleme uzmanıyla birlikte çalışmanız gerekir. Kendi AOSP yansıtmanızın kararlılığını korumak için özellik lansmanı işaretleri kullanıyorsanız ad alanını istediğiniz gibi kullanabilirsiniz.value, işaretin ilk türü ve değeridir. Türbool_valueveyastring_valueolabilir. Türstring_valueise değer tırnak içinde olmalıdır. Belirtilmezse değer boş bir dizedir. Boole değerleri, doğru içintrue, yanlış için ise boş dize olarak gösterilir.workflow,LAUNCHveyaPREBUILT'dir. Özellik lansmanı işaretlerine benzer şekildefalse'dantrue'ye geçen boole işaretleri içinLAUNCHkullanın. Genellikle önceden oluşturulmuş bir sürümü ayarlayan işaretler içinPREBUILTkullanın.containersYazdığınız kodun türü (ör. tedarikçi kodu için "tedarikçi" veya ürün kodu için "ürün"). Kullanılacak değerden emin değilseniz önceki örnekte gösterildiği gibi dört kapsayıcı türünü de kullanın.
Soong dosyasında derleme işareti kullanma
İşaret değerini sorgulamak istediğiniz derleme dosyasında ve modülde, işaret değerine göre dallanmak için koşullu bir ifade kullanın. Örneğin, aşağıdaki snippet'te RELEASE__READ_FROM_NEW_STORAGE işaretinin değeri sorgulanır:
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: [],
}),
}
Bu işaretin değeri true ise libaconfig_storage_read_api_cc modülü, cc_defaults modülüne dinamik olarak bağlanır.
Bu işaretin değeri false ise hiçbir şey (default: [],) olmaz.
Makefile'da derleme işareti kullanma
Make dosyasında derleme işareti, salt okunur bir make değişkenidir. Aşağıdaki makefile örneği, RELEASED_PACKAGE_NFC_STCK adlı bir derleme işaretine erişir:
# 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
Bu işaretin bildiriminde, workflow alanı RELEASE_PACKAGE_NFC_STACK.textproto için PREBUILT olarak ayarlanmış ve trunk_staging geliştirme yapılandırması için işaret değerleri dosyasında com.android.nfcservices RELEASE_PACKAGE_NFC_STACK.textproto dize değeri vardır.