Android中的AAR,JAR,DEX,APK之间的差异

时间:2015-11-04 22:34:00

标签: java android apk dex aar

在Android系统或开发环境中,AAR,JAR,DEX和APK文件之间有什么区别?每个人的目的是什么?

AFAIK,JAR就像.class文件的集合(就像在Java中一样)。

AAR是JAR文件+资源。但是它的使用案例是什么?要用于分发Android的开发库吗?

APK似乎类似于.deb或.rpm等软件包。这是在Android上安装应用程序的唯一方法吗?

DEX文件怎么样?编译的应用程序......但是与JAR或AAR文件的区别是什么?

Moreveor,在为Android分发.so(即本机代码)文件时,最好的方法是什么?

2 个答案:

答案 0 :(得分:22)

JAR(Java档案)

JAR是一种包文件格式,用于在其平台上分发Java应用程序。它包含已编译的Java类文件+更多文件,如MANIFEST。基本上它只是一个ZIP存档,但有一些限制。

DEX(Dalvik Executable)

DEX是二进制文件格式,因此编译。我们可以说, .dex 文件适用于DVM(Dalvik虚拟机),类似于JVM的 .class 文件。

DEX文件格式实际上是由Android SDK中的dex编译器从java CLASS文件生成的。此编译器将JVM字节码转换为DVM字节码,并将所有类文件放入一个dex文件。

APK(Android应用程序包)

APK是专为在其平台上分发Android应用程序而设计的文件格式。它与JAR格式有一些相似之处。同样简单的只是ZIP存档,但APK文件具有预定义的特定结构。例如,它始终必须包含名为 AndroidManifest.xml 的文件等等。此包还以dex格式聚合编译的类。

AAR

AAR是Android库项目的二进制分发版。它具有与APK类似的结构。

答案 1 :(得分:14)

  

JAR就像.class文件的集合(就像在Java中一样)。

那是因为 是一个Java JAR。

  

AAR是JAR文件+资源

正确。

  

但它的用法是什么?要用于分发Android的开发库吗?

正确。

  

APK似乎类似于.deb或.rpm等软件包。这是在Android上安装应用程序的唯一方法吗?

一般来说,是的。

  

DEX文件怎么样?

DEX文件包含代表应用程序代码的交叉编译的Dalvik字节码。开发人员编写 Java,但Android 运行 Dalvik字节码。在APK中,您将找到表示这些字节码的DEX文件。

  

Moreveor,在为Android分发.so(即本机代码)文件时,最好的方法是什么?

我不知道“分发”是什么意思。

如果您的意思是“分发应用”,则您的.so文件将位于APK中。

如果您的意思是“作为其他开发者的图书馆分发”,请使用AAR或源代码形式的Android项目。