QNA > Q > Quali Sono I Dettagli Tecnici Del Runtime Android Art Introdotto In Android 4.4?

Quali sono i dettagli tecnici del runtime Android ART introdotto in Android 4.4?

Aggiornamento

Quindi avevo ragione. Comunque, ecco il video ufficiale che spiega a fondo il runtime ART:


RISPOSTA ORIGINALE

Non ho esaminato completamente il ramo della piattaforma/art (c'è molto codice) ma ecco la mia comprensione di cos'è ART e come funziona:

ART (o Android RunTime) è un nuovo runtime sperimentale che è destinato a succedere a Dalvik nel prossimo futuro. Contiene un nuovo compilatore e una nuova VM, scritti in C++ nativo invece del C della Dalvik e ha due obiettivi principali:

  1. Compilare il codice su due backend, uno chiamato Quick [1], che è basato su JIT e uno chiamato Portable [2], che è basato su LLVM.
  2. Offrono una migliore Garbage Collection (GC)


La nuova VM [3] può tradurre il bytecode Java in codice nativo (JIT) quando esegue un payload Quick ed eseguire direttamente il codice nativo (AOT) quando esegue un payload Portable.

Il payload nativo è memorizzato in un formato OAT (da dex2oat [4], che è un'applicazione a riga di comando basata su libart), che è contenuto in un oggetto dinamico ELF (un file .so). Google ha anche creato un compilatore re-targatable molto avanzato che produce una rappresentazione intermedia basata su SSA e poi va ai backend menzionati sopra [5].

Quando si installa un'applicazione (APK), dex2oat converte il bytecode Dalvik (file .odex) in codice nativo e lo memorizza in un file .oat. Così ogni applicazione ha un corrispondente file .oat (al contrario di .odex quando è su Dalvik).

ART è attualmente in fase sperimentale quindi non è consigliabile passare ad esso da Dalvik in questo momento, ma personalmente, l'unica app che non funziona per me è Quora, il resto delle applicazioni installate sul mio telefono (Whatsapp, Twitter, Facebook, XDA-Developers, ecc) funziona bene. Ho anche notato una diminuzione del consumo di memoria (anche per app), specialmente all'avvio:

main-qimg-289e56d5a9b8e49dd9b75a6e2c3b7695.webp


Se sei uno sviluppatore di ROM, puoi modificare la variabile PRODUCT_RUNTIMES in core_minimal.mk o core_base.mk per controllare quali runtime sono disponibili all'utente.

[1] compilatore/dex/quick - platform/art - Git at Google
[2] compilatore/dex/portable - platform/art - Git at Google
[3] runtime - platform/art - Git at Google
[4] dex2oat - platform/art - Git at Google
[5] compilatore/sea_ir - platform/art - Git at Google

Di Dore

Chi è il vlogger numero 1? :: Quali sono i migliori siti di incontri per persone che non vogliono una relazione completa?
Link utili