Bu sayfada, Android çalışma zamanının (ART) nasıl yapılandırılacağı ve derleme seçenekleri açıklanmaktadır. Konular
Burada ele alınan konular, sistem görüntüsünün önceden derlenmesinin yapılandırmasını içerir (dex2oat
)
derleme seçenekleri ve sistem bölüm alanı, veri bölümü alanı ve
bazı yolları da görmüştük.
ART ile çalışmak için ART ve Dalvik ve Dalvik yürütülebilir biçimine göz atın. Bkz. Doğrulama Uygulamalarınızın çalışmasını sağlamak için Android Çalışma Zamanı'nda (ART) Uygulama Davranışı gerekir.
ART'ın işleyiş şekli
ART, önceden (AOT) derlemesini kullanır ve Android 7'den itibaren Bu yöntemde AOT derlemesi, tam zamanı (JIT) derlemesi ve yorumundan oluşan karma bir kombinasyon kullanılır. AOT derlemesi profil rehberliğinde yapılabilir. Tüm bu yürütme modları bir arada kullanılır. yapılandırılabilir ve bu bölümde ele alınacaktır. Örneğin, Pixel cihazlar şu şekilde yapılandırılır: şu akışta çalışır:
- Bir uygulama başlangıçta tarafından dağıtılan bir dex meta veri (
.dm
) dosyasıyla yüklenir Bulut profili içeren Play Store. ART AOT, bulutta listelenen yöntemleri derler seçin. Uygulama bir dex meta veri dosyası olmadan yüklenirse AOT derlemesi gerçekleştirildi. - Uygulama ilk birkaç kez çalıştığında AOT tarafından derlenmemiş yöntemler yorumlanır. Sık sık uygulananlar, yorumlanan yöntemler arasında JIT tarafından derlenir. SANATÇILAR yürütmeye göre bir yerel profil oluşturur ve bunu bulut profiliyle birleştirir (eğer varsa mevcut).
- Cihaz boşta ve şarj olurken, bir derleme arka plan programı uygulamayı yeniden derlemek için çalışır oluşturulan birleşik profile göre değişir.
- Uygulamanın sonraki çalıştırmalarında ART, derleme tarafından oluşturulan yapıları kullanır. sırasında oluşturulanlara kıyasla daha fazla AOT tarafından derlenmiş kod içeren arka plan programı AOT tarafından derlenmemiş yöntemler de yorumlanır veya JIT tarafından derlenir. ART, profili günceller buna göre belirlenir. Daha sonra profil, sonraki çalıştırmalar derleme arka plan programı.
ART, bir derleyici (dex2oat
aracı) ve bir çalışma zamanından oluşur.
(libart.so
) gösterilir. İlgili içeriği oluşturmak için kullanılan
dex2oat
aracı bir APK dosyası alıp bir veya daha fazla dosya oluşturur
çalışma zamanı tarafından yüklenen derleme yapı dosyalarıdır. Dosya sayısı,
Uzantılar ve adlar, sürümler ve sürümler bazında değişiklik gösterebilir, ancak
Android 8 sürümünde şu dosyalar oluşturulur:
.vdex
: Doğrulama sürecini hızlandırmak için bazen kodunu kullanarak APK'nın sıkıştırılmamış DEX koduyla değiştirin..odex
: Şuradaki yöntemler için AOT tarafından derlenmiş kodu içerir: APK'ya dokunun..art (optional)
, dahili ART değerini içeriyor APK'da listelenen bazı dizelerin ve sınıfların temsilleri (APK'ları hızlandırmak için kullanılır) uygulama başlatma.
Derleme seçenekleri
ART için iki derleme seçeneği kategorisi vardır:
- Sistem ROM yapılandırması: sistem görüntüsü.
- Çalışma zamanı yapılandırması: ART'ın olanak tanır.
Derleyici filtreleri
Bu iki kategoriyi yapılandırmaya yönelik temel ART seçeneği, derleyicidir.
filtreleri hakkında daha fazla bilgi edinin. Derleyici filtreleri, ART'ın DEX kodunu derleme şeklini belirler ve
seçeneği dex2oat
aracına iletildi. Android 8'den itibaren
resmi olarak desteklenen dört filtre vardır:
verify
: Yalnızca DEX kodu doğrulamasını çalıştırın (AOT derlemesi yoktur).quicken
: (Android 11'e kadar) DEX kodunu çalıştır daha iyi çevirmen performansı elde etmek için bazı DEX talimatlarını optimize edin.speed
: DEX kod doğrulaması çalıştırın ve tüm yöntemleri AOT ile derleme.speed-profile
: DEX kod doğrulaması ve AOT derleme yöntemlerini çalıştırma bir profil dosyasında listelenir.
Sistem ROM yapılandırması
Önceden yüklenmiş kitaplıklar ve uygulamalar bir sistem görüntüsü derlenirken AOT tarafından derlenir. Bu dexpreopt adımına geçersiniz. Bu derlenen dosyalar, tüm bağımlılıklar olduğu sürece kullanılabilir değişmeden kalır.
Not: Cihaz sistem modülü güncellemeleriyle birlikte, başlatma sınıf yolu olan bir sonraki güncellemede değişebilir. Bu durum, tüm dexpreopt dosyalarının eski ve kullanılamaz hale gelmesini sağlar.
Dexpreopt'i yapılandırmak için çeşitli ART derleme seçenekleri vardır. Yapılandırma şekliniz bu seçenekler sistem görüntüsü için kullanılabilir depolama alanına ve uygulamalar olabilir. Sistem ROM'si olarak derlenen JAR'ler/APK'lar dörte ayrılabilir. kategoriler:
- Önyükleme sınıf yolu kodu:
speed-profile
derleyici filtresiyle derlenen: varsayılandır. - Sistem sunucusu kodu (bkz.
PRODUCT_SYSTEM_SERVER_JARS
,PRODUCT_APEX_SYSTEM_SERVER_JARS
PRODUCT_STANDALONE_SYSTEM_SERVER_JARS
,PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS
belgesini bu dokümanın ilerleyen bölümlerinde bulabilirsiniz):- (Android 14 ve sonraki sürümler)
speed-profile
ile derlendi varsayılan olarak derleyici filtresi kullanabilir veyaspeed
bir profil sağlanmamıştır. - (Android 13 ve önceki sürümler)
speed
ile derlendi varsayılan olarak derleyici filtresini kullanabilirsiniz.
PRODUCT_SYSTEM_SERVER_COMPILER_FILTER
aracılığıyla yapılandırılabilir (bunun ilerleyen kısımlarına bakın) dokümanı) ekleyebilirsiniz. - (Android 14 ve sonraki sürümler)
- Ürüne özgü temel uygulamalar (Bu makalenin ilerleyen kısımlarında
PRODUCT_DEXPREOPT_SPEED_APPS
bölümüne bakın. belge): varsayılan olarakspeed
derleyici filtresiyle derlenmiştir. - Diğer tüm uygulamalar: varsayılan olarak
speed-profile
derleyici filtresiyle derlenmiştir. veya profil sağlanmamışsaverify
derleyici filtresiyle derlenir.PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER
ile yapılandırılabilir (bunun ilerleyen kısımlarına bakın) dokümanı) ekleyebilirsiniz.
Dosya oluşturma seçenekleri
WITH_DEXPREOPT
DONT_DEXPREOPT_PREBUILTS
(Android 5 ve sonraki sürümler)PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER
(Android 9) ve üzeri)WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY
. (Android 8 MR1'den itibaren)LOCAL_DEX_PREOPT
PRODUCT_DEX_PREOPT_BOOT_FLAGS
PRODUCT_DEX_PREOPT_DEFAULT_FLAGS
PRODUCT_DEX_PREOPT_MODULE_CONFIGS
PRODUCT_DEXPREOPT_SPEED_APPS
(Android 8'den itibaren)PRODUCT_SYSTEM_SERVER_APPS
(Android 8'den itibaren)PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD
(Android'den itibaren) 8)WITH_DEXPREOPT_PIC
(Android 7'ye kadar)WITH_DEXPREOPT_BOOT_IMG_ONLY
(Android 7'ye kadar) MR1)PRODUCT_SYSTEM_SERVER_COMPILER_FILTER
- (Android 14 ve sonraki sürümler) Belirtilmemişse
speed-profile
derleyici filtresi veya profil derleyici değilsespeed
derleyici filtresi kullanılır. sağlar. - (Android 13 ve önceki sürümler) Belirtilmemişse
speed
derleyici nasıl kullanacağınızı göstereceğim. speed
değerine ayarlanırsaspeed
derleyici filtresi kullanılır.speed-profile
değerine ayarlanırsaspeed-profile
derleyici filtresi kullanılır. veya profil sağlanmamışsaverify
derleyici filtresi kullanılır.verify
değerine ayarlanırsaverify
derleyici filtresi 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
: Şuradaki sistem sunucusu sınıf yolu JAR'lerinin listesi: platform (yaniSYSTEMSERVERCLASSPATH
kapsamında) Sistem sunucusu ekleniyor classpath JAR'lerinin eklenmesi gerekir. Sistem sunucusu sınıf yolu JAR'ları listeye eklenemedi bu JAR'lerin yüklenmemesine neden olur. - (Gerekli)
PRODUCT_APEX_SYSTEM_SERVER_JARS
: Sistem sunucusu sınıf yolu JAR'lerinin listesi APEX ile teslim edilir (yaniSYSTEMSERVERCLASSPATH
kapsamında). Biçim<apex name>:<jar name>
. APEX sistem sunucusu sınıf yolu JAR'lerini şuraya ekleme: buna izin verilmelidir. APEX sistem sunucusu sınıf yolu JAR'lerinin bu listeye eklenmemesi şu sonuçları doğurur: bu JAR'ler yüklenmez. - (İsteğe bağlı, Android 13 ve önceki sürümler)
PRODUCT_STANDALONE_SYSTEM_SERVER_JARS
: Sistem sunucusunun yüklediği JAR'lerin listesi ayrı sınıf yükleyiciler kullanarak (SystemServiceManager.startServiceFromJar
) tıklayın. Bağımsız sistem sunucusu JAR'lerini bu liste gerekli değildir ancak JAR'leri derlediği ve hemfikir olduğu için kesinlikle önerilir. iyi bir çalışma zamanı performansına sahiptir. - (Android 13'ten itibaren gereklidir)
PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS
: Şu listenin listesi: Sistem sunucusunun ayrı sınıf yükleyiciler (yaniSystemServiceManager.startServiceFromJar
aracılığıyla veya<apex-system-service>
). Biçim<apex name>:<jar name>
. Bağımsız APEX sistem sunucusu JAR'lerini buna izin verilmelidir. Bağımsız APEX sistem sunucusu JAR'lerinin bu listeye eklenmemesi şu sonuçları doğurur: başlatma hatası.
dex2oat
işlevinin sistem görüntüsünde yüklü olan DEX kodunda çağrılıp çağrılmadığını belirtir. Varsayılan olarak etkindir.
DONT_DEXPREOPT_PREBUILTS
etkinleştirildiğinde önceden oluşturulmuş öğeler engellenir
desteği sonlandırıldı. Bunlar, include $(BUILD_PREBUILT)
içeren uygulamalardır
Android.mk
içinde belirtilmiş. Atlanıyor
Google Play aracılığıyla güncellenmesi muhtemel önceden oluşturulmuş uygulamaları kullanımdan kaldırma
sistem görüntüsünde yer tasarrufu sağlar ancak ilk başlatma süresine eklenir. Bu seçeneğin hiçbir etkisinin olmadığını unutmayın.
Android.bp
içinde tanımlanan önceden oluşturulmuş uygulamalarda.
PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER
, varsayılan derleyici filtresini belirtir
desteği sonlandırılmıştır. Bu uygulamalar Android.bp
içinde tanımlanmıştır veya
Android.mk
öğesinde include $(BUILD_PREBUILT)
belirtilmiş. Belirtilmemişse
speed-profile
, varsayılan değer belirtilmemişse verify
olur.
ve profil sağlanmaz.
WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY
etkinleştirildiğinde yalnızca
sınıf yolunu ve sistem sunucusu jar dosyalarını başlat.
Dexpreopt, tek tek uygulama bazında da etkinleştirilebilir veya devre dışı bırakılabilir:
modül tanımında LOCAL_DEX_PREOPT
seçeneğini belirterek
Bu, hemen gösterilebilecek uygulamaların desteğinin sonlandırılmasının devre dışı bırakılmasında yararlı olabilir
Güncellemeler desteği sonlandırılmış verileri oluşturacağından, Google Play
sistem görüntüsündeki kod eski. Bu, büyük projelerde
alandan tasarruf etmek için de
kullanıcıların halihazırda yeni sürümlere sahip olabileceği için
veri bölümü.
LOCAL_DEX_PREOPT
, true
veya false
değerlerini destekler
dexpreopt'i etkinleştirin veya devre dışı bırakın. Ayrıca, nostripping
şunları yapabilir:
dexpreopt'in, classes.dex
öğesini çıkarmaması gerekiyorsa belirtilmelidir
APK veya JAR dosyasından indirebilirsiniz. Normalde bu dosya
daha uzun süre gerekli olabilir, ancak bu son seçenek,
üçüncü taraf APK imzalarının geçerli kalmasına izin verir.
Başlatma görüntüsünün ne şekilde olduğunu kontrol etmek için seçenekleri dex2oat
cihazına iletir
derlendi. Özelleştirilmiş görüntü sınıfı listelerini belirtmek için kullanılabilir, derlenmiş
sınıf listeleri ve derleyici filtreleri.
Şunların dışındaki her şeyi kontrol etmek için seçenekleri dex2oat
cihazına gönderir
başlatma görüntüsü derlenir.
Belirli bir konu için dex2oat
seçeneklerini iletme olanağı sağlar
modülü ve ürün yapılandırması. Bir ürünün
$(call add-product-dex-preopt-module-config,<modules>,<option>)
dosyası için device.mk
dosyası
burada <modules>
, LOCAL_MODULE
ve
JAR ve APK dosyaları için sırasıyla LOCAL_PACKAGE
ad.
Ürünün temel bileşeni olarak tanımlanan uygulamaların listesi ve
speed
derleyici filtresiyle derlemek istenen sonuçları içerir. Örneğin,
örneğin, SystemUI gibi kalıcı uygulamalar
sadece bir sonraki yeniden başlatmada profil rehberli derlemedir, bu yüzden
ürününün her zaman AOT tarafından derlenmesini sağlayın.
Sistem sunucusu tarafından yüklenen uygulamaların listesi. Bu uygulamalar
varsayılan olarak speed
derleyici filtresiyle derlenir.
Cihazda ART'ın hata ayıklama sürümünün eklenip eklenmeyeceğini belirtir. Bu ayar varsayılan olarak
userdebug ve eng derlemeleri için etkinleştirildi. Davranış açık bir şekilde geçersiz kılınabilir
true
veya false
olarak ayarlıyorsunuz.
Cihaz, varsayılan olarak hata ayıklama olmayan sürümü (libart.so
) kullanır.
Geçiş yapmak için persist.sys.dalvik.vm.lib.2
sistem özelliğini şuna ayarlayın:
libartd.so
.
Android 5.1.0 ile Android 6.0.1 arasındaki sürümlerde WITH_DEXPREOPT_PIC
şunları yapabilir:
konumdan bağımsız kodu (PIC) etkinleştirmek için belirtilir. Bununla, derlenen
Bu yüzden, resimdeki kodun
/data/dalvik-cache
içine /system
işlemi uygulandı. Bu sayede veri bölümünde yer açıldı.
Ancak bu işlem, avantajlı bir optimizasyonu devre dışı bırakacağından çalışma zamanı etkisi
bir yapılandırmadır. Genellikle /data
ürününde yerden tasarruf etmek isteyen cihazlar
PIC derlemesini etkinleştirmelidir.
Android 7.0'da PIC derlemesi varsayılan olarak etkindi.
Bu seçenek WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY
ile değiştirildi
sunucu JAR'lerini de önceden kabul eder.
Bu seçenek sistem sunucusu için derleyici filtresini belirtir.
Sistem sunucusu tarafından yüklenen JAR'lerin listeleri aşağıda verilmiştir. JAR'ler
PRODUCT_SYSTEM_SERVER_COMPILER_FILTER
tarafından belirtilen derleyici filtresi
Başlatma sınıf yolu yapılandırması
Önceden yüklenmiş sınıflar listesi, Zygote'un başlattığı sınıfların listesidir
başlatma. Bu sayede uygulamalar, söz konusu sınıf başlatıcıları çalıştırma zahmetinden kurtulmuş olur.
ayrı ayrı ekleyerek daha hızlı başlamalarını ve sayfaları bellekte paylaşmalarını sağlar. İlgili içeriği oluşturmak için kullanılan
önceden yüklenmiş sınıf listesi dosyası frameworks/base/config/preloaded-classes
konumunda bulunuyor
olarak ayarlanır ve tipik telefon kullanımı için ayarlanmış bir liste içerir. Bu,
giyilebilir cihazlar gibi diğer cihazlar için farklı olmalı ve
buna göre hazırlar. Bu ayarı kullanırken dikkatli olun; çok fazla sınıf atığı
belleğe yükler. Çok az sınıf eklenmesi her uygulamayı
ve bu durumda da
hafıza kaybına uğrar.
Örnek kullanım (ürünün device.mk
cinsinden):
PRODUCT_COPY_FILES += <filename>:system/etc/preloaded-classes
Not: Bu satırı
varsayılan dosyayı alan tüm ürün yapılandırması oluşturma dosyalarını devralma
build/target/product/base.mk
.
Çalışma zamanı yapılandırması
JIT seçenekleri
Aşağıdaki seçenekler yalnızca ART JIT derleyicisinin yüklü olduğu Android sürümlerini etkiler kullanılabilir.
dalvik.vm.usejit
: JIT'in etkin olup olmadığı.dalvik.vm.jitinitialsize
(varsayılan 64K): Başlangıçtaki kapasite geri yüklenir. Kod önbelleği düzenli olarak GC'ye dahil edilir ve gerekirse artar.dalvik.vm.jitmaxsize
(varsayılan 64 M): Kod önbelleğinin maksimum kapasitesi.dalvik.vm.jitthreshold
(varsayılan 10000): "Sıcaklık"ın bir yöntemin sayacının yöntemin JIT olarak derlenmesi için gereklidir. "Sıcaklık" sayaç, dahili bir metriktir ekler. Bu raporda çağrı sayısı, geriye doğru dallar ve faktörleri olur.dalvik.vm.usejitprofiles
(Android 13'e kadar): Yoksa JIT profilleri etkin değil; bu değer,dalvik.vm.usejit
yanlış olsa bile kullanılabilir. Bu değer yanlışsaspeed-profile
derleyici filtresinin şunu yapacağına dikkat edin: herhangi bir yöntemi AOT derlemez veverify
ile eşdeğerdir. Başlangıç Android 14, JIT profilleri her zaman etkindir ve devre dışı bırakılamaz.dalvik.vm.jitprithreadweight
(varsayılan ayar:dalvik.vm.jitthreshold
/ 20): JIT "örneklerinin" ağırlığı hakkında daha fazla bilgi edinin. Derlemeyi hızlandırmak için kullanın etkileşimde bulunurken kullanıcı deneyimini doğrudan etkileyen yöntemlerin uygulamasını indirin.dalvik.vm.jittransitionweight
(varsayılan ayar:dalvik.vm.jitthreshold
/ 10): Yöntemin ağırlığı derleme kodu ile yorumlayıcı arasında geçiş yapan çağrıdır. Bu, kullanıcıların yöntemlerin, geçişleri en aza indirmek için derlendiğinden emin olun. pahalıya mal olur).
Dex2oat seçenekleri
Bu seçenekler, cihaz üzerinde derlemeyi (dexopt olarak da bilinir) etkiler ve birkaç seçenek, dexpreopt, yalnızca yukarıdaki Sistem ROM yapılandırması bölümünde ele alınan seçeneklerdir dexpreopt'i etkiler.
Kaynak kullanımını kontrol etme seçenekleri:
dalvik.vm.image-dex2oat-threads
/dalvik.vm.image-dex2oat-cpu-set
(Android 11'e kadar): İş parçacığı sayısı ve CPU çekirdeği grubu (bkz. kullanın.dalvik.vm.boot-dex2oat-threads
/dalvik.vm.boot-dex2oat-cpu-set
:- (Android 11'e kadar) İş parçacığı sayısı ve CPU çekirdeği grubu (aşağıya bakın) komutunu kullanmanızı öneririz.
- (Android 12'den itibaren) İş parçacığı sayısı ve CPU çekirdeği grubu
kullanın.
- Özellikle, Android 14'ten itibaren bu model
ART Hizmeti'nde
PRIORITY_BOOT
öncelik sınıfı.
- Özellikle, Android 14'ten itibaren bu model
ART Hizmeti'nde
dalvik.vm.restore-dex2oat-threads
/dalvik.vm.restore-dex2oat-cpu-set
:- (Android 11'den Android 13'e kadar) buluttan geri yükleme işlemi için kullanılacak iş parçacığı sayısı ve CPU çekirdeği grubu (aşağıya bakın) yedekleme.
- (Android 14'ten itibaren) İş parçacığı sayısı ve CPU çekirdeği grubu
(aşağıya bakın) dahil olmak üzere, normalden daha fazla gecikmeye duyarlı olan her şey için kullanın.
yedeklemeden geri yükleme.
- Bu, özellikle öncelik sınıfına karşılık gelir
ART Hizmetinde
PRIORITY_INTERACTIVE_FAST
.
- Bu, özellikle öncelik sınıfına karşılık gelir
ART Hizmetinde
dalvik.vm.background-dex2oat-threads
/dalvik.vm.background-dex2oat-cpu-set
(Android 14'ten itibaren): İş parçacığı sayısı ve CPU çekirdeği grubu (bkz. aşağıda) yer alır.- Özellikle bu,
PRIORITY_BACKGROUND
ART Hizmeti.
- Özellikle bu,
dalvik.vm.dex2oat-threads
/dalvik.vm.dex2oat-cpu-set
: Diğer her şey için kullanılacak iş parçacığı sayısı ve CPU çekirdeği grubu.
CPU çekirdeği grubu, CPU kimliklerinin virgülle ayrılmış listesi olarak belirtilmelidir. Örneğin, 0-3 CPU çekirdeklerinde dex2oat'ta, set:
dalvik.vm.dex2oat-cpu-set=0,1,2,3
CPU benzeşim özelliklerini ayarlarken, gereksiz bellek ve G/Ç'yi önlemek için seçilen CPU sayısıyla eşleşen dex2oat iş parçacığı sayısı çekişme:
dalvik.vm.dex2oat-cpu-set=0,1,2,3 dalvik.vm.dex2oat-threads=4
Yukarıdaki sistem özelliklerine ek olarak, dex2oat kaynak kullanımı (bkz. Cgroup Soyutlama Katmanı).
Desteklenen görev profilleri:
Dex2OatBackground
. (Android 14'ten itibaren) (varsayılan olarakDex2OatBootComplete
değerini devralır): Arka planda kullanılacak kaynakları kontrol eder.- Özellikle bu,
PRIORITY_BACKGROUND
ART Hizmeti.
- Özellikle bu,
Dex2OatBootComplete
:- (Android 13'e kadar) Her şey için kullanılacak kaynağı kontrol eder sonra %100'dür.
- (Android 14'ten itibaren) Her şey için kullanılacak kaynağı kontrol eder
arka planda değil.
- Bu, özellikle öncelik sınıfına karşılık gelir
ART'de
PRIORITY_INTERACTIVE_FAST
vePRIORITY_INTERACTIVE
Hizmet.
- Bu, özellikle öncelik sınıfına karşılık gelir
ART'de
Hem sistem özellikleri hem de görev profilleri belirtildiğinde ikisi de geçerli olur.
Yığın boyutunu kontrol etme seçenekleri:
dalvik.vm.image-dex2oat-Xms
: Başlatma görüntüleri için başlangıç yığın boyutu.dalvik.vm.image-dex2oat-Xmx
: Başlatma görüntüleri için maksimum yığın boyutu.dalvik.vm.dex2oat-Xms
: Diğer her şeyin başlangıçtaki yığın boyutudur.dalvik.vm.dex2oat-Xmx
: Diğer her şey için maksimum yığın boyutu.
için başlangıç ve maksimum yığın boyutunu kontrol eden seçenekler
dex2oat
azaltılmasına gerek kalmamalıdır çünkü
uygulama derlenebilir.
Derleyici filtresini kontrol etme seçenekleri:
dalvik.vm.image-dex2oat-filter
(Android 11'e kadar): Başlatma görüntüleri için derleyici filtresi. Android 12'den beri derleyici başlatma görüntüleri filtresi her zamanspeed-profile
değerine ayarlanır ve değiştirilemez.dalvik.vm.systemservercompilerfilter
(Android 13'ten itibaren): Sistem sunucusu için derleyici filtresi. Bkz.PRODUCT_SYSTEM_SERVER_COMPILER_FILTER
değerleridir.dalvik.vm.systemuicompilerfilter
(Android 13'ten itibaren): Sistem Kullanıcı Arayüzü paketi için derleyici filtresi.dalvik.vm.dex2oat-filter
(Android 6'ya kadar): Diğer her şey için derleyici filtresi.pm.dexopt.<reason>
(Android 7'den itibaren): Diğer her şey için derleyici filtresi. Görüntüleyin Android için ART Hizmet Yapılandırması 14 ve üzeri veya Şunun için Paket Yöneticisi Yapılandırması: Android 13 ve önceki sürümler.
Başlatma görüntüleri dışında her şeyin derlenmesini kontrol eden diğer seçenekler:
dalvik.vm.dex2oat-very-large
(Android 7.1'den itibaren): bayt (AOT derlemesini devre dışı bırakmak için) kullanın.dalvik.vm.dex2oat-swap
(Android 7.1'den itibaren) (varsayılan: true): Değişim kullanılmasına izin verir dex2oat dosyası oluşturun. Bu işlem, bellek dışı çökmelerin önlenmesine yardımcı olabilir. Bu seçenek her ne kadar etkinleştirilirse dex2oat, bir değişim dosyasını yalnızca belirli koşullarda (ör. sayı dex dosyasının boyutu büyük ve dosyalar değişebilir.dalvik.vm.ps-min-first-save-ms
(Android 12'den itibaren): çalışma zamanı uygulamanın profilini oluşturmadan önce beklenecek minimum süre; uygulama başlatılır.dalvik.vm.ps-min-save-period-ms
(Android 12'den itibaren): minimum bekleme süresi (uygulamanın profilini güncellemeden önce) gerekir.dalvik.vm.dex2oat64.enabled
. (Android 11'den itibaren) (varsayılan: yanlış): dex2oat'un 64 bit sürümünün kullanılıp kullanılmayacağını belirler.dalvik.vm.bgdexopt.new-classes-percent
. (Android 12'den itibaren) (varsayılan: 20): Yeniden derlemeyi tetiklemek için bir profildeki yeni sınıfların minimum yüzdesi (0 ile 100 arasında). Yalnızca profil rehberli derleme (speed-profile
) için geçerlidir; genellikle sırasında arka plan dexopt'si. Ek olarak, en az 50 yeni sınıf için bir eşiğin olduğunu unutmayın. yüzde eşiğidir ve yapılandırılamaz.dalvik.vm.bgdexopt.new-methods-percent
. (Android 12'den itibaren) (varsayılan: 20): Yeniden derlemeyi tetiklemek için bir profildeki yeni yöntemlerin minimum yüzdesi (0 ile 100 arasında). Yalnızca profil rehberli derleme (speed-profile
) için geçerlidir; genellikle sırasında arka plan dexopt'si. Ek olarak en az 100 yeni yöntem eşiği olduğunu unutmayın olduğunu ve yapılandırılamaz.dalvik.vm.dex2oat-max-image-block-size
. (Android 10'dan itibaren) (varsayılan: 524288) Sıkıştırılmış resimler için maksimum düz blok boyutu. Büyük bir resim, düz bir kümeye ayrılır hiçbir engel maksimum boyuttan fazla olmayacak şekilde bloke eder.dalvik.vm.dex2oat-resolve-startup-strings
. (Android 10'dan itibaren) (varsayılan: doğru) Doğru değerine ayarlanırsa dex2oat, "başlangıç" profilde bulabilirsiniz.debug.generate-debug-info
. (varsayılan: yanlış) Yığın geri alma gibi yerel hata ayıklama için hata ayıklama bilgilerinin oluşturulup oluşturulmayacağı ELF sembolleri ve cüce bölümleri için de geçerlidir.dalvik.vm.dex2oat-minidebuginfo
. (Android 9'dan itibaren) (varsayılan: doğru) Aşağıdaki işlemler için gereken LZMA ile sıkıştırılmış hata ayıklama bilgisinin minimum miktarda üretilip üretilmemesi kullanır.
ART hizmeti seçenekleri
Android 14'ten beri uygulamalar için cihaz üzerinde AOT derlemesi (dexopt olarak da bilinir) ART Hizmeti tarafından işlenir. ART Hizmeti'nin yapılandırılması hakkında bilgi edinmek için bkz. ART Hizmeti yapılandırması.Paket yöneticisi seçenekleri
Android 14'ten önce uygulamalar için cihaz üzerinde AOT derlemesi (dexopt olarak da bilinir) paket yöneticisi tarafından işlenir. Dexopt için paket yöneticisini yapılandırma hakkında bilgi edinmek üzere Package Manager Yapılandırması adlı makaleyi inceleyin.A/B'ye özel yapılandırma
ROM yapılandırması
Android 7.0'dan itibaren cihazlar iki sistem bölümünü kullanarak aşağıdakileri etkinleştirebilir: A/B sistem güncellemeleri. Sistem bölümü boyutundan tasarruf etmek için, önceden optimize edilen dosyalar kullanılmayan ikinci sistem bölümünü devre dışı bırakır. Daha sonra veri bölümüne kopyalanır. ilk başlatmada.
Örnek kullanım (device-common.mk
cinsinden):
PRODUCT_PACKAGES += \ cppreopts.sh PRODUCT_PROPERTY_OVERRIDES += \ ro.cp_system_other_odex=1
Ayrıca cihazın BoardConfig.mk
uygulamasında:
BOARD_USES_SYSTEM_OTHER_ODEX := true
Önyükleme sınıf yolu kodu, sistem sunucu kodu ve ürüne özgü çekirdeğin
uygulamaları her zaman sistem bölümünde derlenir. Varsayılan olarak
uygulamalar kullanılmayan ikinci sistem bölümü için derlenir. Bu özellik,
sahip SYSTEM_OTHER_ODEX_FILTER
ile kontrol edilir.
varsayılan değeri:
SYSTEM_OTHER_ODEX_FILTER ?= app/% priv-app/%
Arka plan OTA dexopt'si
A/B özellikli cihazlarda uygulamalar yeni sistem görüntüsüdür. Uygulama derlemesi için bkz. arka plan'ı kullanabilirsiniz. İlgili içeriği oluşturmak için kullanılan Bu derleme için kullanılan derleme filtresi aşağıdakilerle kontrol ediliyor:
pm.dexopt.ab-ota=speed-profile
Profil rehberliğinden yararlanmak için speed-profile
kullanmanızı öneririz
ve depolama alanından tasarruf edebilir.
JDWP seçenekleri
Userdebug derlemelerinde Java Debug Wire Protocol (JDWP) iş parçacığı oluşturma işlemi
persist.debug.dalvik.vm.jdwp.enabled
sistem özelliğini etkinleştirin. Varsayılan olarak bu mülk
ayarlanmaz ve JDWP ileti dizileri yalnızca hata ayıklaması yapılabilecek uygulamalar için oluşturulur. JDWP iş parçacıklarını her ikisi için de etkinleştirmek üzere
hata ayıklanabilir ve hata ayıklama yapılamayan uygulamalar, persist.debug.dalvik.vm.jdwp.enabled
olarak ayarla
Hedef: 1
. Özellikte yapılan değişikliklerin geçerli olması için cihazın yeniden başlatılması gerekir.
Userdebug derlemesinde hata ayıklanamayan bir uygulamada hata ayıklamak için aşağıdaki komutu çalıştırarak JDWP'yi etkinleştirin komut:
. ziyaret edin. Android 13 ve önceki sürümleri çalıştıran cihazlarda çalışma zamanı JDWP oluşturur. kullanıcı hata ayıklama derlemelerindeki hata ayıklanabilir ve hata ayıklanamayan uygulamalar için iş parçacıkları. Bu, daha az müşteriyle hata ayıklayıcı ekleyin veya userdebug derlemelerinde herhangi bir uygulamanın profilini oluşturun.adb shell setprop persist.debug.dalvik.vm.jdwp.enabled 1
adb reboot