2015-11-04 11 views
12

Nei sistemi Android o negli ambienti di sviluppo, quali sono le differenze tra i file AAR, JAR, DEX e APK? Qual è lo scopo di ognuno?Differenza tra AAR, JAR, DEX, APK in Android

AFAIK, JAR sono proprio come una raccolta di file .class (come in Java).

AAR sono file JAR + risorse. Ma qual è il suo caso d'uso? Da utilizzare per distribuire le librerie di sviluppo per Android?

L'APK sembra essere simile a pacchetti come .deb o .rpm. È l'unico modo per installare applicazioni su Android?

E i file DEX? Applicazioni compilate ... ma qual è la differenza con un file JAR o AAR?

Moreveor, quando si distribuiscono file .so (cioè codice nativo) per Android, qual è il modo migliore per farlo?

+0

Allo stato attuale, l'APK è l'unico formato binario accettabile per un'app su Android. –

risposta

12

JAR sono proprio come una raccolta di file .class (come in Java).

Questo perché è un JAR Java.

AAR sono JAR files + risorse

corretta.

Ma qual è il suo caso di utilizzo? Da utilizzare per distribuire le librerie di sviluppo per Android?

Corretto.

È l'unico modo per installare applicazioni su Android?

In generale, sì.

E i file DEX?

I file DEX contengono i bytecode Dalvik cross-compilati che rappresentano il codice dell'applicazione. Gli sviluppatori scrivono Java, ma Android esegue i bytecode di Dalvik. Nell'APK, troverai un file DEX che rappresenta quei bytecode.

Moreveor, quando si distribuiscono i file .so (codice nativo) per Android, qual è il modo migliore per farlo?

Non so cosa intendi per "distribuzione".

Se si intende "distribuire un'app", i file .so si troveranno nell'APK.

Se si intende "distribuzione come libreria per altri sviluppatori", utilizzare un AAR o solo un progetto Android in formato sorgente.

+1

Quindi, ad esempio, le librerie AAR non sono compilate in bytecode Dalvik? Se lo sono, qual è la differenza con DEX? Se non lo sono, dovrebbero essere convertiti in Dalvik quando si collega l'applicazione? – sapito

+0

@sapito: "Quindi, ad esempio, le librerie AAR non sono compilate in bytecode Dalvik?" -- corretta. Se guardi all'interno di uno (sono solo un archivio ZIP), vedrai un JAR all'interno. "dovrebbero essere convertiti in Dalvik quando si collega l'applicazione?" -- sì. – CommonsWare

+0

@CommonsWare Che cosa intendi per "guardare dentro" un file AAR? Non è una cartella che puoi ispezionare. –

16

JAR (Java Archive)

JAR è un formato di file del pacchetto progettato per la distribuzione di applicazioni Java sulla sua piattaforma. Contiene file di classi Java compilati + altri file come MANIFEST. Fondamentalmente è solo un archivio ZIP con alcune restrizioni.

DEX (Dalvik Executable)

DEX è formato di file binario, in modo che viene compilato. Potremmo dire che il file .dex è per DVM (Dalvik Virtual Machine) qualcosa come .class file per JVM.

Il formato di file DEX viene generato dai file java CLASS dal compilatore dex di Android SDK. Questo compilatore converte il bytecode JVM in bytecode DVM e inserisce tutti i file di classe in un unico file dex.

APK (Android Application Package)

APK è formato di file progettato per la distribuzione di applicazioni Android sulla sua piattaforma. Ha alcune somiglianze con il formato JAR. Anche in questo caso è semplice solo l'archivio ZIP, ma i file APK hanno una struttura specifica predefinita. Ad esempio, deve sempre contenere il file AndroidManifest.xml e molti altri. Anche questo pacchetto aggrega le classi compilate in formato dex.

AAR

AAR è la distribuzione binaria di un Progetto Biblioteche di Android. Ha una struttura simile all'APK.

+0

Grazie è stato davvero utile. L'informazione AAR è per lo più sconosciuta da molte persone –

Problemi correlati