Bu sayfada ART ve derleme seçeneklerinin nasıl yapılandırılacağı anlatılmaktadır. Burada ele alınan konular, sistem görüntüsünün ön derleme yapılandırmasını, dex2oat derleme seçeneklerini ve sistem bölümü alanı, veri bölümü alanı ve performansın nasıl değiş tokuş edileceğini içerir.
ART ile çalışmak için ART ve Dalvik , Dalvik Yürütülebilir formatı ve source.android.com'da kalan sayfalara bakın. Uygulamalarınızın düzgün çalıştığından emin olmak için Android Çalışma Zamanında (ART) Uygulama Davranışını Doğrulama konusuna bakın.
SANAT nasıl çalışır?
ART, önceden (AOT) derleme kullanır ve Android 7.0'dan (Nougat veya N) başlayarak, AOT, tam zamanında (JIT) derleme ve profil kılavuzlu derlemenin karma bir kombinasyonunu kullanır. Tüm bu derleme modlarının kombinasyonu yapılandırılabilir ve bu bölümde tartışılacaktır. Örnek olarak, Pixel cihazları aşağıdaki derleme akışıyla yapılandırılır:
- Bir uygulama başlangıçta herhangi bir AOT derlemesi olmadan yüklenir. Uygulama ilk birkaç kez çalıştırıldığında yorumlanır ve sıklıkla yürütülen yöntemler JIT derlenir.
- Cihaz boştayken ve şarj olurken, bir derleme arka plan programı, ilk çalıştırmalar sırasında oluşturulan bir profile dayalı olarak sık kullanılan kodu AOT derlemek için çalışır.
- Bir uygulamanın sonraki yeniden başlatılması, profil kılavuzlu kodu kullanır ve önceden derlenmiş yöntemler için çalışma zamanında JIT derlemesi yapmaktan kaçınır. Yeni çalıştırmalar sırasında JIT'i derleyen yöntemler profile eklenir ve bu daha sonra derleme arka plan programı tarafından alınır.
ART, bir derleyici (
dex2oat aracı) ve Zygote'u başlatmak için yüklenen bir çalışma zamanı (
libart.so ) içerir.
dex2oat aracı bir APK dosyası alır ve çalışma zamanının yüklediği bir veya daha fazla derleme yapıt dosyası oluşturur. Dosya sayısı, uzantıları ve adları sürümler arasında değişebilir, ancak Android 8 sürümünden itibaren oluşturulan dosyalar şunlardır:
-
.vdex: APK'nın sıkıştırılmamış DEX kodunu ve doğrulamayı hızlandırmak için bazı ek meta verileri içerir.
-
.odex: APK'daki yöntemler için AOT derlenmiş kodunu içerir.
-
.art (optional): APK'da listelenen ve uygulamanın başlatılmasını hızlandırmak için kullanılan bazı dizelerin ve sınıfların ART dahili temsillerini içerir.
Derleme seçenekleri
ART için derleme seçenekleri iki kategoridedir:
- Sistem ROM yapılandırması: Bir sistem görüntüsü oluştururken hangi kodun AOT tarafından derlendiği.
- Çalışma zamanı yapılandırması: ART'nin bir cihazdaki uygulamaları nasıl derlediği ve çalıştırdığı.
Bu iki kategoriyi yapılandırmak için bir temel ART seçeneği, derleyici filtreleridir . Derleyici filtreleri, ART'nin DEX kodunu nasıl derlediğini yönlendirir ve
dex2oat aracına iletilen bir seçenektir. Android 8'den başlayarak, resmi olarak desteklenen dört filtre vardır:
-
verify: yalnızca DEX kodu doğrulamasını çalıştırın.
-
quicken: (Android 12'den beri kaldırılmıştır), daha iyi yorumlayıcı performansı elde etmek için DEX kod doğrulamasını çalıştırın ve bazı DEX talimatlarını optimize edin.
-
speed: DEX kod doğrulamasını çalıştırın ve tüm yöntemleri AOT-derleyin.
-
speed-profile: bir profil dosyasında listelenen DEX kod doğrulamasını ve AOT derleme yöntemlerini çalıştırın.
Sistem ROM yapılandırması
Bir sistem ROM'unu yapılandırmak için bir dizi ART oluşturma seçeneği vardır. Bu seçenekleri nasıl yapılandıracağınız, sistem görüntüsü için kullanılabilir depolama alanına ve önceden yüklenmiş uygulamaların sayısına bağlıdır. Bir sistem ROM'unda derlenen JAR'lar/APK'lar dört kategoriye ayrılabilir:
- Önyükleme sınıf yolu kodu: varsayılan olarak
speed-profilederleyici filtresiyle derlenir.
- Sistem sunucu kodu (bu belgede daha sonra
PRODUCT_SYSTEM_SERVER_JARS,
PRODUCT_APEX_SYSTEM_SERVER_JARS,
PRODUCT_STANDALONE_SYSTEM_SERVER_JARS,
PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARSkonusuna bakın):
- (Android 14'ten (AOSP deneysel) beri) varsayılan olarak
speed-profilederleyici filtresiyle derlenir veya bir profil sağlanmadıysa
speedderleyici filtresiyle derlenir.
- (Android 13'e kadar) varsayılan olarak
speedderleyici filtresiyle derlenmiştir.
PRODUCT_SYSTEM_SERVER_COMPILER_FILTERaracılığıyla yapılandırılabilir (bu belgenin ilerleyen kısımlarına bakın).
- (Android 14'ten (AOSP deneysel) beri) varsayılan olarak
- Ürüne özel temel uygulamalar (bu belgenin
PRODUCT_DEXPREOPT_SPEED_APPSbölümüne bakın): varsayılan olarak
speedderleyici filtresiyle derlenir.
- Diğer tüm uygulamalar: varsayılan olarak
speed-profilederleyici filtresiyle derlenir veya bir profil sağlanmadıysa derleyici
verifyfiltresiyle derlenir.
PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTERaracılığıyla yapılandırılabilir (bu belgenin ilerleyen kısımlarına bakın).
Makefile seçenekleri
-
WITH_DEXPREOPT
-
DONT_DEXPREOPT_PREBUILTS(Android 5'ten beri)
-
PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER(Android 9'dan beri)
-
WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY(Android 8 MR1'de yeni)
-
LOCAL_DEX_PREOPT
-
PRODUCT_DEX_PREOPT_BOOT_FLAGS
-
PRODUCT_DEX_PREOPT_DEFAULT_FLAGS
-
PRODUCT_DEX_PREOPT_MODULE_CONFIGS
-
PRODUCT_DEXPREOPT_SPEED_APPS (New in Android 8)
-
PRODUCT_SYSTEM_SERVER_APPS (New in Android 8)
-
PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD(Post Android 8)
-
WITH_DEXPREOPT_PIC (Removed in Android 8)
-
WITH_DEXPREOPT_BOOT_IMG_ONLY(Android 8 MR1'de kaldırıldı)
-
PRODUCT_SYSTEM_SERVER_COMPILER_FILTER
- (Android 14'ten beri (AOSP deneysel)) Belirtilmezse,
speed-profilederleyici filtresi kullanılır veya bir profil sağlanmadıysa
speedderleyici filtresi kullanılır.
- (Android 13'e kadar) Belirtilmemişse,
speedderleyici filtresi kullanılır.
-
speedolarak ayarlanırsa,
speedderleyici filtresi kullanılır.
-
speed-profileolarak ayarlanırsa,
speed-profilederleyici filtresi kullanılır veya bir profil sağlanmazsa derleyiciyi
verifyfiltresi kullanılır.
-
verify
verifyfiltresi kullanılır.
-
PRODUCT_SYSTEM_SERVER_JARS,
PRODUCT_APEX_SYSTEM_SERVER_JARS,
PRODUCT_STANDALONE_SYSTEM_SERVER_JARS,
PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS
- (gerekli)
PRODUCT_SYSTEM_SERVER_JARS: Platformdaki sistem sunucusu sınıf yolu kavanozlarının listesi (yani,
SYSTEMSERVERCLASSPATHbir parçası olarak). Bu listeye sistem sunucusu sınıf yolu kavanozları eklemek gereklidir. Listeye sistem sunucusu sınıf yolu kavanozlarının eklenememesi, bu kavanozların yüklenmemesine neden olur.
- (gerekli)
PRODUCT_APEX_SYSTEM_SERVER_JARS: Apex aracılığıyla (yani,
SYSTEMSERVERCLASSPATHbir parçası olarak) teslim edilen sistem sunucusu sınıf yolu kavanozlarının listesi. Biçim
<apex name>:<jar name>şeklindedir. Bu listeye apex sistem sunucusu sınıf yolu kavanozları eklemek gereklidir. Bu listeye apex sistem sunucusu sınıf yolu kavanozlarının eklenememesi, bu kavanozların yüklenmemesine neden olur.
- (Android 13'ten beri isteğe bağlı)
PRODUCT_STANDALONE_SYSTEM_SERVER_JARS: Sistem sunucusunun ayrı sınıf yükleyiciler kullanarak dinamik olarak yüklediği jar'ların listesi (
SystemServiceManager.startServiceFromJararacılığıyla). Bu listeye bağımsız sistem sunucusu kavanozları eklemek gerekli değildir, ancak kavanozları derlediği ve dolayısıyla iyi bir çalışma zamanı performansına sahip olduğu için şiddetle tavsiye edilir.
- (Android 13'ten beri gereklidir)
PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS: Sistem sunucusunun ayrı sınıf yükleyiciler kullanarak dinamik olarak yüklediği apex aracılığıyla teslim edilen jar'ların listesi (yani
SystemServiceManager.startServiceFromJararacılığıyla veya
<apex-system-service>olarak bildirilir). Biçim
<apex name>:<jar name>şeklindedir. Bu listeye bağımsız apex sistem sunucu kavanozlarının eklenmesi gereklidir. Bu listeye bağımsız apex sistem sunucu kavanozları eklenememesi, önyükleme hatasına neden olur.
- Önceden Yüklenmiş Sınıflar Listesi
dex2oat sistem görüntüsünde kurulu DEX kodunda çağrılıp çağrılmadığı. Varsayılan olarak etkindir.
DONT_DEXPREOPT_PREBUILTS etkinleştirilmesi, önceden oluşturulmuşların önceden optimize edilmesini engeller. Bunlar,
Android.mk
include $(BUILD_PREBUILT) uygulamalardır. Google Play aracılığıyla güncellenmesi muhtemel olan önceden oluşturulmuş uygulamaların ön optimizasyonunu atlamak, sistem görüntüsünde yer tasarrufu sağlar ancak ilk açılış süresine eklenir. Bu seçeneğin
Android.bp içinde tanımlanan önceden oluşturulmuş uygulamalar üzerinde hiçbir etkisi olmadığını unutmayın.
PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER , önceden optimize edilmiş uygulamalar için varsayılan derleyici filtresini belirtir. Bu uygulamalar
Android.bp tanımlanmıştır veya Android.mk'lerinde
include $(BUILD_PREBUILT)
Android.mk . Belirtilmemişse, varsayılan değer
speed-profile veya değerin belirtilmediğini ve bir profilin sağlanmadığını
verify .
WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY etkinleştirilmesi, yalnızca önyükleme sınıf yolunu ve sistem sunucusu kavanozlarını önceden optimize eder.
Modül tanımında
LOCAL_DEX_PREOPT seçeneği belirlenerek, ön optimizasyon da bireysel uygulama bazında etkinleştirilebilir veya devre dışı bırakılabilir. Bu, güncellemeler sistem görüntüsündeki önceden optimize edilmiş kodu geçersiz kılacağından, Google Play güncellemelerini hemen alabilecek uygulamaların ön optimizasyonunu devre dışı bırakmak için faydalı olabilir. Bu, kullanıcıların veri bölümünde zaten daha yeni uygulama sürümlerine sahip olabileceğinden, ana sürüm yükseltme OTA'larında yerden tasarruf etmek için de yararlıdır.
LOCAL_DEX_PREOPT , ön optimizasyonu etkinleştirmek veya devre dışı bırakmak için sırasıyla 'true' veya 'false' değerlerini destekler. Ayrıca, ön optimizasyonun
classes.dex dosyasını APK veya JAR dosyasından çıkarmaması gerekiyorsa 'nostripping' belirtilebilir. Normalde bu dosya, ön optimizasyondan sonra artık gerekli olmadığından kaldırılır, ancak bu son seçenek, üçüncü taraf APK imzalarının geçerli kalmasına izin vermek için gereklidir.
Önyükleme görüntüsünün nasıl derlendiğini denetlemek için seçenekleri
dex2oat . Özelleştirilmiş görüntü sınıfları listelerini, derlenmiş sınıf listelerini ve derleyici filtrelerini belirtmek için kullanılabilir.
Önyükleme görüntüsü dışındaki her şeyin nasıl derlendiğini kontrol etmek için seçenekleri
dex2oat .
Belirli bir modül ve ürün konfigürasyonu için
dex2oat seçeneklerini geçme yeteneği sağlar. Bir ürünün
device.mk dosyasında
$(call add-product-dex-preopt-module-config,<modules>,<option>) tarafından ayarlanır; burada
<modules> , JAR ve APK için LOCAL_MODULE ve LOCAL_PACKAGE adlarının bir listesidir. sırasıyla dosyalar.
Ürünler için temel olarak tanımlanan ve
speed derleyici filtresiyle derlenmesi istenen uygulamaların listesi. Örneğin, SystemUI gibi kalıcı uygulamalar, yalnızca bir sonraki yeniden başlatmada profil kılavuzlu derlemeyi kullanma şansına sahiptir, bu nedenle ürün için bu uygulamaların her zaman AOT tarafından derlenmesi daha iyi olabilir.
Sistem sunucusu tarafından yüklenen uygulamaların listesi. Bu uygulamalar varsayılan olarak
speed derleyici filtresiyle derlenir.
Cihazda ART'nin hata ayıklama sürümünün dahil edilip edilmeyeceği. Varsayılan olarak, bu, userdebug ve eng derlemeleri için etkinleştirilmiştir. Bu davranış, seçenek açıkça
true veya
false olarak ayarlanarak geçersiz kılınabilir.
Varsayılan olarak, cihaz hata ayıklama olmayan sürümü (
libart.so ) kullanır. Geçiş yapmak için, sistem özelliğini
persist.sys.dalvik.vm.lib.2 olarak
libartd.so olarak ayarlayın.
Android 5.1.0'dan Android 6.0.1'e kadar,
WITH_DEXPREOPT_PIC , konumdan bağımsız kodu (PIC) etkinleştirmek için belirtilebilir. Bununla, görüntüden derlenen kodun /system'den /data/dalvik-cache'ye taşınması gerekmez, bu da veri bölümünde yerden tasarruf sağlar. Ancak, konuma bağlı koddan yararlanan bir optimizasyonu devre dışı bıraktığı için çalışma zamanı üzerinde hafif bir etkisi vardır. Tipik olarak, /data içinde yer kazanmak isteyen aygıtlar PIC derlemesini etkinleştirmelidir.
Android 7.0'da PIC derlemesi varsayılan olarak etkindi.
Bu seçenek, sistem sunucusu kavanozlarını da önceden seçen WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY ile değiştirildi.
Bu seçenek, sistem sunucusu için derleyici filtresini belirtir.
Aşağıdakiler, sistem sunucusu tarafından yüklenen kavanozların listesidir. Kavanozlar,
PRODUCT_SYSTEM_SERVER_COMPILER_FILTER tarafından belirtilen derleyici filtresiyle derlenir
Önyükleme sınıf yolu yapılandırması
Önceden yüklenmiş sınıflar listesi, zigotun başlangıçta başlattığı sınıfların bir listesidir. Bu, her uygulamayı bu sınıf başlatıcıları ayrı ayrı çalıştırma zorunluluğundan kurtararak daha hızlı başlamalarına ve bellekteki sayfaları paylaşmalarına olanak tanır. Önceden yüklenmiş sınıflar listesi dosyası, varsayılan olarak
frameworks/base/config/preloaded-classes konumunda bulunur ve tipik telefon kullanımı için ayarlanmış bir liste içerir. Bu, giyilebilir cihazlar gibi diğer cihazlar için farklı olabilir ve buna göre ayarlanmalıdır. Bunu ayarlarken dikkatli olun; kullanılmayan sınıflar yüklendiğinde çok fazla sınıf eklemek hafızayı boşa harcar. Çok az sınıf eklemek, her uygulamayı kendi kopyasına sahip olmaya zorlar ve bu da yine hafızayı boşa harcar.
Örnek kullanım (ürünün device.mk dosyasında):
PRODUCT_COPY_FILES += <filename>:system/etc/preloaded-classes
Not: Bu satır, varsayılanı şuradan alan herhangi bir ürün yapılandırma makefile dosyasını devralmadan önce yerleştirilmelidir:
build/target/product/base.mk
Çalışma zamanı yapılandırması
Jit seçenekleri
Aşağıdaki seçenekler, yalnızca ART JIT derleyicisinin kullanılabilir olduğu Android sürümlerini etkiler.
- dalvik.vm.usejit: JIT'in etkin olup olmadığı.
- dalvik.vm.jitinitialsize (varsayılan 64K): kod önbelleğinin başlangıç kapasitesi. Kod önbelleği düzenli olarak GC yapacak ve gerekirse artacaktır.
- dalvik.vm.jitmaxsize (varsayılan 64M): kod önbelleğinin maksimum kapasitesi.
- dalvik.vm.jitthreshold: (varsayılan 10000) - Bu, yöntemin JIT derlenmesi için bir yöntemin "sıcaklık" sayacının geçmesi gereken eşiktir. "Sıcaklık" sayacı, çalışma zamanına dahil olan bir ölçümdür. Çağrıların sayısını, geriye dönük dalları ve diğer faktörleri içerir.
- dalvik.vm.usejitprofiles: JIT profillerinin etkin olup olmadığı; bu, dalvik.vm.usejit yanlış olsa bile kullanılabilir. Bu yanlışsa, derleyici filtresi
speed-profileherhangi bir yöntemi AOT derlemediğini ve
verifyile eşdeğer olduğunu unutmayın.
- dalvik.vm.jitprithreadweight (varsayılan dalvik.vm.jitthreshold / 20) - Uygulama UI iş parçacığı için JIT "örneklerinin" (jitthreshold'a bakın) ağırlığı. Uygulamayla etkileşim kurarken kullanıcıların deneyimini doğrudan etkileyen yöntemlerin derlenmesini hızlandırmak için kullanın.
- dalvik.vm.jittransitionweight: (varsayılan olarak dalvik.vm.jitthreshold / 10) derleme kodu ile yorumlayıcı arasında geçiş yapan yöntem çağırmanın ağırlığı. Bu, geçişleri (pahalı olan) en aza indirmek için ilgili yöntemlerin derlendiğinden emin olmaya yardımcı olur.
Paket yöneticisi seçenekleri
Android 7.0'dan beri, çeşitli aşamalarda gerçekleşen derleme/doğrulama düzeyini belirlemenin genel bir yolu vardır. Derleme seviyeleri, varsayılanlar şu şekilde olacak şekilde sistem özellikleri aracılığıyla yapılandırılabilir:
-
pm.dexopt.install=speed-profile
-
pm.dexopt.bg-dexopt=speed-profile
-
pm.dexopt.boot-after-ota=verify
-
pm.dexopt.first-boot=verify
Aygıtın ilk kez önyükleme yaptığı derleme filtresi. Burada kullanılan filtre yalnızca fabrikadan sonraki önyükleme süresini etkiler. Bir kullanıcı telefonu ilk kez kullanmaya başlamadan önce uzun süre geçmesini önlemek için filtre
verifyöneririz. Sistem görüntüsündeki tüm uygulamalar zaten doğru sınıf yükleyici bağlamı ile
verify,
speed-profileveya
speedile derlenmişse,
pm.dexopt.first-boothiçbir etkisi olmayacağını unutmayın.
Bu, Google Play üzerinden uygulama yüklerken kullanılan derleme filtresidir. Dex meta veri dosyalarından profillerin kullanımını etkinleştirmek için kurulum filtresinin speed-profile olarak ayarlanmasını öneririz. Bir profil sağlanmadıysa veya boşsa hız profilinin doğrulamaya eşdeğer olduğunu unutmayın.
Bu, cihaz boştayken, şarj olurken ve tam şarjlıyken kullanılan derleme filtresidir. Profil yönlendirmeli derlemeden yararlanmak ve depolama alanından tasarruf etmek için
speed-profile derleyici filtresini deneyin.
Havadan güncellemeden sonra kullanılan derleme filtresi. Çok uzun önyükleme sürelerinden kaçınmak için bu seçenek için derleyici
verify filtresini şiddetle öneririz.
Dex2oat seçenekleri
Bu seçeneklerin cihaz üzerinde derleme sırasında olduğu kadar ön optimizasyon sırasında
dex2oat etkilediğine, ancak yukarıda tartışılan seçeneklerin çoğunun yalnızca ön optimizasyonu etkilediğine dikkat edin.
Önyükleme görüntüsünü derlerken
dex2oat kontrol etmek için:
- dalvik.vm.image-dex2oat-Xms: ilk yığın boyutu
- dalvik.vm.image-dex2oat-Xmx: maksimum yığın boyutu
- dalvik.vm.image-dex2oat-filter: derleyici filtre seçeneği
- dalvik.vm.image-dex2oat-threads: kullanılacak iş parçacığı sayısı
Önyükleme görüntüsü dışındaki her şeyi derlerken
dex2oat kontrol etmek için:
- dalvik.vm.dex2oat-Xms: ilk yığın boyutu
- dalvik.vm.dex2oat-Xmx: maksimum yığın boyutu
- dalvik.vm.dex2oat-filter: derleyici filtre seçeneği
Android 6.0 üzerinden yayınlanan sürümlerde, önyükleme görüntüsünün yanı sıra her şeyi derlemek için ek bir seçenek sunulur:
- dalvik.vm.dex2oat-threads: kullanılacak iş parçacığı sayısı
Android 6.1 ile başlayarak, bu, önyükleme görüntüsünün yanı sıra her şeyi derlemek için iki ek seçenek haline gelir:
- dalvik.vm.boot-dex2oat-threads: önyükleme sırasında kullanılacak iş parçacığı sayısı
- dalvik.vm.dex2oat-threads: önyükleme süresinden sonra kullanılacak iş parçacığı sayısı
Android 7.1'den başlayarak, önyükleme görüntüsü dışındaki her şeyi derlerken belleğin nasıl kullanıldığını kontrol etmek için iki seçenek sunulur:
- dalvik.vm.dex2oat-very-large: AOT derlemesini devre dışı bırakmak için bayt cinsinden minimum toplam dex dosya boyutu
- dalvik.vm.dex2oat-swap: dex2oat takas dosyasını kullanın (düşük bellekli cihazlar için)
dex2oat için ilk ve maksimum yığın boyutunu kontrol eden seçenekler, hangi uygulamaların derlenebileceğini sınırlayabileceğinden azaltılmamalıdır.
Android 11'den başlayarak, derleyici iş parçacıklarının belirli bir CPU grubuyla sınırlandırılmasına izin vermek için üç CPU benzeşim seçeneği sunulur:
- dalvik.vm.boot-dex2oat-cpu-set: Önyükleme sırasında dex2oat iş parçacıklarını çalıştıran CPU'lar
- dalvik.vm.image-dex2oat-cpu-set: Önyükleme görüntüsünü derlerken dex2oat çalıştıran CPU'lar
- dalvik.vm.dex2oat-cpu-set: Önyükleme zamanından sonra dex2oat iş parçacıklarını çalıştıran CPU'lar
CPU'lar, virgülle ayrılmış CPU kimlikleri listesi olarak belirtilmelidir. Örneğin, 0-3 CPU'larında dex2oat üzerinde çalışmak için şunu ayarlayın:
dalvik.vm.dex2oat-cpu-set=0,1,2,3
CPU benzeşim özelliklerini ayarlarken, gereksiz bellek ve G/Ç çekişmesini önlemek için dex2oat iş parçacığı sayısı için karşılık gelen özelliği seçilen CPU sayısıyla eşleştirmenizi öneririz:
dalvik.vm.dex2oat-cpu-set=0,1,2,3 dalvik.vm.dex2oat-threads=4
Android 12'den başlayarak, aşağıdaki seçenekler eklendi:
- dalvik.vm.ps-min-first-save-ms: çalışma zamanının uygulamanın bir profilini oluşturmasını bekleme süresi, uygulama ilk kez başlatıldığında
- dalvik.vm.ps-min-save-period-ms: Bir uygulamanın profilini güncellemeden önce minimum bekleme süresi
- dalvik.vm.systemservercompilerfilter: cihazın sistem sunucusunu yeniden derlerken kullandığı derleyici filtresi
A/B'ye özel yapılandırma
ROM yapılandırması
Android 7.0'dan itibaren, cihazlar A/B sistem güncellemelerini etkinleştirmek için iki sistem bölümü kullanabilir. Sistem bölümü boyutundan tasarruf etmek için önceden seçilmiş dosyalar kullanılmayan ikinci sistem bölümüne yüklenebilir. Daha sonra ilk açılışta veri bölümüne kopyalanırlar.
Örnek kullanım (
device-common.mk içinde):
PRODUCT_PACKAGES += \ cppreopts.sh PRODUCT_PROPERTY_OVERRIDES += \ ro.cp_system_other_odex=1
Ve cihazın
BoardConfig.mk :
BOARD_USES_SYSTEM_OTHER_ODEX := true
Önyükleme sınıf yolu kodunun, sistem sunucusu kodunun ve ürüne özgü çekirdek uygulamaların her zaman sistem bölümünü derlediğine dikkat edin. Varsayılan olarak, diğer tüm uygulamalar kullanılmayan ikinci sistem bölümünde derlenir. Bu, varsayılan olarak bir değere sahip olan
SYSTEM_OTHER_ODEX_FILTER ile kontrol edilebilir:
SYSTEM_OTHER_ODEX_FILTER ?= app/% priv-app/%
Arka plan dexopt OTA
A/B özellikli cihazlarla, yeni sistem görüntüsüne güncelleme için uygulamalar arka planda derlenebilir. Derleme komut dosyasını ve ikili dosyaları isteğe bağlı olarak sistem görüntüsüne dahil etmek için arka planda Uygulama derlemesine bakın. Bu derleme için kullanılan derleme filtresi şu şekilde kontrol edilir:
pm.dexopt.ab-ota=speed-profile
Profil yönlendirmeli derlemeden yararlanmak ve depolama alanından tasarruf etmek için
speed-profile kullanmanızı öneririz.