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

sap*_*ito 18 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(即本机代码)文件时,最好的方法是什么?

hra*_*cek 26

JAR(Java档案)

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

DEX(Dalvik可执行文件)

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类似的结构.


Com*_*are 15

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项目.

  • @IgorGanapolsky:然后制作 AAR 文件的副本,给副本一个 ZIP 扩展名,然后尝试打开它。或者,为 Mac 找到更好的 ZIP 实用程序。 (2认同)