Compilatore di Android, architettura e runtime, come funziona insieme?

Sto studiando recentemente Android runtime, specialmente concentrandosi sullo strumento dex2oat che è il cuore. Tuttavia dex2oat non è isolato ma funziona insieme all'image di avvio di Android, all'origine radice, all'istruzione, al runtime arg

Qualcuno può spiegare che cosa sono e per cui vengono utilizzati? E le loro connessioni interne?

  • Gestione di connessioni SQLite in Android
  • Quante colonne di database associate ad un SMS in android?
  • Come faccio a determinare la quantità di text che si inserisce in un TextView in Android?
  • java.lang.NoClassDefFoundError: android.support.v4.view.LayoutInflaterCompatHC in Android Studio
  • Il frammento di aggiornamento di ViewPager su spia
  • Android discorso - come puoi leggere il text in Android?
  • La differenza tra il pubblico finale void moveCamera (Aggiornamento CameraUpdate) e la pubblica finale void animateCamera (Aggiornamento CameraUpdate)?
  • Eliminare tutto dopo una parte di una string
  • La pressione del button di alimentazione di Android non viene ricevuta dal ricevitore
  • Installa un'app Approvato GooglePlay da NFC
  • Crea SSL-Socket in Android con certificato auto-firmato
  • Android Studio improvvisamente ha iniziato a visualizzare in grado di risolvere i messaggi di errore com.android.support ... 25.0.0 e tutti i miei file java sono errati ora?
  • One Solution collect form web for “Compilatore di Android, architettura e runtime, come funziona insieme?”

    Ok so dex2oat entra come parte del nuovo Android Runtime (ART). L'idea è di sostituire l'interpnetworking bytecode di Android (e il compilatore JIT) con un compilatore avanzato e fornire un nuovo runtime che può caricare ed eseguire applicazioni compilate.

    dex2oat

    L'utilità dex2oat è una suite completa di compilazione che fornisce molte opzioni di compilazione, diversi compilatori e codici di generazione di codice per each piattaforma di processre in cui è in esecuzione Android. Quindi, se qualcuno si riferisce a dex2oat , il compilatore Android AOT (suite) è inteso. Il suo formato di input è dex bytecode e emette i cosiddetti file di avena che sono oggetti condivisi ELF. Il vantaggio della compilazione AOT in contrasto con l'interpretazione (o la compilazione di JIT) è che non rallentiamo il tempo di esecuzione se appliciamo ottimizzazioni più complesse come accadono PRIMA dell'app. Inoltre, mentre parliamo di un compilatore sul dispositivo, le applicazioni possono ancora essere spedite come bytecode dex, ma sono compilate sul dispositivo per la sua architettura concreta. Quindi alla mia conoscenza, ci sono backends per ARM, MIPS e x86 per 32 e 64 bit ciascuno al momento.

    Immagine di avvio

    Pre-ART, Android ha utilizzato lo Zygote per fork each process di app e precaricare e preinizializzare alcune classi per scopi di ottimizzazione. Su ART, l'insieme di librerie di jar che devono essere precaricate in each process di app viene compilato una volta nella cosiddetta image di avvio. È composto da due file, boot.oat e boot.art. Boot.oat contiene il codice compilato mentre il boot.art contiene un mucchio preinizializzato, ecc. Entrambi sono generati anche da dex2oat . Questa image di avvio viene caricata nel process di ciascuna applicazione come ottimizzazione.

    Ambiente di runtime

    Poiché le applicazioni sono ora compilate file di avena, ART fornisce un nuovo runtime per caricarli e eseguirli. Quindi l'idea è di caricare l'object condiviso ELF nel process dell'applicazione preinizializzato e di eseguire l'applicazione. Poiché il codice è già stato compilato, non è necessario interpretare in runtime. Alcune eccezioni sono sisthemes che funzionano a bassi livelli di archiviazione permanente (file d'oca sono grandi), applicazioni che vengono eseguite da debug ecc. In questi casi, l'ART può ricadere all'interpretazione. Ma in generale, la compilazione di applicazioni AOT è il nuovo default.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.