ART'yi yapılandır

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:

  1. 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.
  2. 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).
  3. 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.
  4. 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:

  1. Sistem ROM yapılandırması: sistem görüntüsü.
  2. Ç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 veya speed bir profil sağlanmamıştır.
    • (Android 13 ve önceki sürümler) speed ile derlendi varsayılan olarak derleyici filtresini kullanabilirsiniz.
    ziyaret edin. PRODUCT_SYSTEM_SERVER_COMPILER_FILTER aracılığıyla yapılandırılabilir (bunun ilerleyen kısımlarına bakın) dokümanı) ekleyebilirsiniz.
  • Ü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 olarak speed derleyici filtresiyle derlenmiştir.
  • Diğer tüm uygulamalar: varsayılan olarak speed-profile derleyici filtresiyle derlenmiştir. veya profil sağlanmamışsa verify 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
  • 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 (Android 5 ve sonraki sürümler)
  • 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 (Android 9) ve üzeri)
  • 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. (Android 8 MR1'den itibaren)
  • 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.

  • LOCAL_DEX_PREOPT
  • 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.

  • PRODUCT_DEX_PREOPT_BOOT_FLAGS
  • 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.

  • PRODUCT_DEX_PREOPT_DEFAULT_FLAGS
  • Şunların dışındaki her şeyi kontrol etmek için seçenekleri dex2oat cihazına gönderir başlatma görüntüsü derlenir.

  • PRODUCT_DEX_PREOPT_MODULE_CONFIGS
  • 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.

  • PRODUCT_DEXPREOPT_SPEED_APPS (Android 8'den itibaren)
  • Ü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.

  • PRODUCT_SYSTEM_SERVER_APPS (Android 8'den itibaren)
  • Sistem sunucusu tarafından yüklenen uygulamaların listesi. Bu uygulamalar varsayılan olarak speed derleyici filtresiyle derlenir.

  • PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD (Android'den itibaren) 8)
  • 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.

  • WITH_DEXPREOPT_PIC (Android 7'ye kadar)
  • 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.

  • WITH_DEXPREOPT_BOOT_IMG_ONLY (Android 7'ye kadar) MR1)
  • Bu seçenek WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY ile değiştirildi sunucu JAR'lerini de önceden kabul eder.

  • PRODUCT_SYSTEM_SERVER_COMPILER_FILTER
  • Bu seçenek sistem sunucusu için derleyici filtresini belirtir.

    • (Android 14 ve sonraki sürümler) Belirtilmemişse speed-profile derleyici filtresi veya profil derleyici değilse speed 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ırsa speed derleyici filtresi kullanılır.
    • speed-profile değerine ayarlanırsa speed-profile derleyici filtresi kullanılır. veya profil sağlanmamışsa verify derleyici filtresi kullanılır.
    • verify değerine ayarlanırsa verify 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
  • 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

    • (Gerekli) PRODUCT_SYSTEM_SERVER_JARS: Şuradaki sistem sunucusu sınıf yolu JAR'lerinin listesi: platform (yani SYSTEMSERVERCLASSPATH 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 (yani SYSTEMSERVERCLASSPATH 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 (yani SystemServiceManager.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ı.

    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ışsa speed-profile derleyici filtresinin şunu yapacağına dikkat edin: herhangi bir yöntemi AOT derlemez ve verify 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ı.
    • 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.
    • 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.
    • 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 olarak Dex2OatBootComplete değerini devralır): Arka planda kullanılacak kaynakları kontrol eder.
      • Özellikle bu, PRIORITY_BACKGROUND ART Hizmeti.
    • 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 ve PRIORITY_INTERACTIVE Hizmet.

    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 zaman speed-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:

      adb shell setprop persist.debug.dalvik.vm.jdwp.enabled 1
      adb reboot
      
    . 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.