Derleme işaretleri, derleme zamanı sabitleridir ve çalışma zamanında değiştirilemez. Bu işaretler, örneğin bir yapılandırma işaretlerinin kullanılamadığı durumlarda kullanılır. Örneğin:
- İsteğe bağlı olarak bir derlemeye dahil etmek istediğiniz önceden derlenmiş veya önceden oluşturulmuş bir kod parçanız var.
- Kendi sisteminizi derlemek için değişiklikler yapmak istiyorsunuz.
- Kod boyutunu yönetmek için bağımlılıkların etrafına işaretler koymak istiyorsunuz.
- Bir özelliğin lansmanını yönetmek istiyorsunuz ancak aconfig işaretleri sistem tarafından kullanıma sunulmadan önce işaretin değerini kontrol etmeniz gerekiyor.
Derleme işareti beyan etme
Derleme işaretleri, textproto dosyalarında tanımlanır. Bir derleme işareti tanımlamak için:
WORKING_DIRECTORY/build/release/flag_declarations/
konumuna gitRELEASE_MY_FLAG_NAME.textproto
adlı bir dosya oluşturun.Dosyayı düzenleyip 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şaretin adını içerir. Yalnızca büyük harflere ve alt çizgiye izin verilir.namespace
, katkılar için ad alanı içerir. Alan adınızı belirlemek için atanan Google inceleme uzmanıyla çalışmanız gerekir. Kendi AOSP aynanızın kararlılığını korumak için özellik başlatma bayrakları kullanıyorsanız ad alanını istediğiniz gibi kullanabilirsiniz.value
, işaretin ilk türü ve değeridir. Türbool_value
veyastring_value
olabilir. Türstring_value
ise değerin tırnak içinde olması gerekir. Belirtilmezse değer boş bir dize olur. Boole değerleritrue
veya yanlış için boş dize olarak temsil edilir.workflow
,LAUNCH
veyaPREBUILT
olur. Özellik lansmanı işaretlerine benzer şekilde,false
değerindentrue
değerine geçen boole işaretleri içinLAUNCH
değerini kullanın. Genellikle önceden oluşturulmuş bir sürümü belirleyen işaretler içinPREBUILT
kullanın.containers
, yazdığınız kod türünü (ör. tedarikçi kodu için "tedarikçi firma" veya ürün kodu için "ürün") kullanın. Kullanılacak değerden emin değilseniz önceki örnekte gösterildiği gibi dört kapsayıcı türünün tümünü kullanın.
Yakındag dosyasında derleme bayrağı kullanma
İşaret değerini sorgulamak istediğiniz derleme dosyasında ve modülde, işaret değerine göre dallanma yapmak için koşullu 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ü dinamik olarak cc_defaults
modülüne bağlanır.
Bu işaretin değeri false
ise hiçbir şey (default: [],
) olmaz.
Makefile'da derleme işareti kullanma
Yapma dosyasındaki derleme işareti, salt okunur bir yapma değişkenidir. Aşağıdaki makefile örneği, RELEASED_PACKAGE_NFC_STCK
adlı bir derleme işaretine erişiyor:
# 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 beyanında, RELEASE_PACKAGE_NFC_STACK.textproto
bölümünde PREBUILT
olarak ayarlanmış bir workflow
alanı 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 bulunur.