Derleme işaretleri, derleme zamanı sabitleridir ve çalışma zamanında değiştirilemez. Bu işaretler, 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 kodunuz var.
- Sistem oluşturma işleminde değişiklik 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 yapılandırma 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. 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 harf ve alt çizgiye izin verilir.namespace
, katkıların ad alanını içerir. Alan adınızı belirlemek için atanan Google inceleme uzmanıyla çalışmanız gerekir. Kendi AOSP yansımanızın kararlılığını korumak için özellik lansmanı işaretlerini kullanıyorsanız ad alanını istediğiniz şekilde kullanabilirsiniz.value
, işaretin ilk türü ve değeridir. Türbool_value
veyastring_value
olabilir. Türstring_value
ise değer tırnak içinde olmalıdır. Bir değer belirtilmezse boş bir dize kullanılır. Boole değerleritrue
veya yanlış için boş dize olarak temsil edilir.workflow
,LAUNCH
veyaPREBUILT
değerini alır. Özellik lansmanı işaretlerine benzer şekilde,false
değerindentrue
değerine geçen boole işaretleri içinLAUNCH
değerini kullanın. Genellikle önceden derlenmiş bir sürümün sürümünü ayarlayan işaretler içinPREBUILT
kullanın.containers
Yazdığınız kod türü (ör. tedarikçi kodu için "tedarikçi" veya ürün kodu için "ürün"). Kullanılacak değer konusunda şüpheniz varsa önceki örnekte gösterildiği gibi dört kapsayıcı türünün tümünü 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 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ü, cc_defaults
modülüne dinamik olarak bağlanır.
Bu işaretin değeri false
ise hiçbir şey (default: [],
) olmaz.
Makefile'de derleme işareti kullanma
Derleme dosyasındaki derleme işareti, salt okunur bir derleme 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 vardır.