2015-11-04 6 views
12

In Android-Systemen oder Entwicklungsumgebungen, was sind die Unterschiede zwischen AAR, JAR, DEX und APK-Dateien? Was ist der Zweck eines jeden?Unterschied zwischen AAR, JAR, DEX, APK in Android

AFAIK, JAR sind genau wie eine Sammlung von .class-Dateien (wie in Java).

AAR sind JAR-Dateien + Ressourcen. Aber was ist der Anwendungsfall? Wird verwendet, um Entwicklungsbibliotheken für Android zu verteilen?

APK scheint Paketen wie .deb oder .rpm ähnlich zu sein. Ist es die einzige Möglichkeit, Anwendungen auf Android zu installieren?

Was ist mit DEX-Dateien? Kompilierte Anwendungen ... aber was ist der Unterschied zu einer JAR- oder AAR-Datei?

Moreveor, beim Verteilen von .so (d. H. Nativen Code) Dateien für Android, was ist der beste Weg, es zu tun?

+0

So wie es aussieht, ist APK das einzige akzeptable Binärformat für eine App auf Android. –

Antwort

12

JAR sind genau wie eine Sammlung von .class-Dateien (wie in Java).

Das ist, weil es ein Java JAR ist.

AAR sind JAR-Dateien + Ressourcen

Richtig.

Aber was ist der Anwendungsfall? Wird verwendet, um Entwicklungsbibliotheken für Android zu verteilen?

Korrekt.

Ist dies die einzige Möglichkeit, Anwendungen auf Android zu installieren?

Im Allgemeinen ja.

Was ist mit DEX-Dateien?

DEX-Dateien enthalten die kompilierten Dalvik-Bytecodes, die den Anwendungscode darstellen. Entwickler schreiben Java, aber Android läuft Dalvik Bytecodes. Im APK finden Sie eine DEX-Datei, die diese Bytecodes darstellt.

Moreveor, beim Verteilen von .so (d. H. Nativen Code) -Dateien für Android, was ist der beste Weg, es zu tun?

Ich weiß nicht, was Sie mit "verteilen" meinen.

Wenn Sie "eine App verteilen" meinen, werden Ihre .so Dateien in der APK sein.

Wenn Sie "Verteilen als eine Bibliothek für andere Entwickler" meinen, verwenden Sie ein AAR oder nur ein Android-Projekt in Quellform.

+1

Also zum Beispiel AAR-Bibliotheken sind nicht in Dalvik Bytecodes kompiliert? Wenn das so ist, was ist der Unterschied zu DEX? Wenn nicht, sollten sie bei der Verknüpfung der Anwendung in Dalvik umgewandelt werden? – sapito

+0

@ sapito: "Also zum Beispiel AAR-Bibliotheken sind nicht in Dalvik Bytecodes kompiliert?" -- richtig. Wenn Sie in eins schauen (sie sind nur ein ZIP-Archiv), sehen Sie ein JAR darin. "Sollten sie bei der Verknüpfung der Anwendung in Dalvik umgewandelt werden?" -- Ja. – CommonsWare

+0

@CommonsWare Was meinst du mit "schaue ins Innere" einer AAR-Datei? Es ist kein Ordner, den Sie überprüfen können. –

16

JAR (Java Archive)

JAR ist ein Paket-Dateiformat für die Verteilung von Java-Anwendung entwickelt, um auf seiner Plattform. Es enthält kompilierte Java-Klassendateien und einige weitere Dateien wie MANIFEST. Grundsätzlich ist es nur ein ZIP-Archiv mit einigen Einschränkungen.

DEX (Dalvik Executable)

DEX ist Binärdateiformat, so dass es kompiliert wird. Wir könnten sagen, dass .dex Datei für DVM (Dalvik Virtual Machine) etwas wie .class Dateien für JVM ist.

DEX-Dateiformat wird wirklich von Java CLASS-Dateien von Dex Compiler von Android SDK generiert. Dieser Compiler übersetzt JVM-Bytecode in DVM-Bytecode und fügt alle Klassendateien in eine Dex-Datei ein.

APK (Applikation für Android Package)

APK ist Dateiformat für die Verteilung von Android-Anwendung auf seiner Plattform entwickelt. Es hat einige Ähnlichkeiten mit dem JAR-Format. Wieder ist es einfach nur ZIP-Archiv, aber APK-Dateien haben vordefinierte spezifische Struktur. Zum Beispiel muss es immer die Datei AndroidManifest.xml und viele mehr enthalten. Auch dieses Paket aggregiert kompilierte Klassen im Dex-Format.

AAR

AAR ist die binäre Verteilung eines Android Library Project. Es hat eine ähnliche Struktur wie APK.

+0

Vielen Dank war sehr hilfreich. Die AAR Informationen sind meist nicht bekannt –