java - Android中AAR、JAR、DEX、APK的区别

标签 java android apk dex aar

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

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

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

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

DEX 文件呢?已编译的应用程序...但是 JAR 或 AAR 文件有什么区别?

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

最佳答案

JAR(Java 存档)

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

DEX(Dalvik 可执行文件)

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

DEX 文件格式实际上是由 Android SDK 的 dex 编译器从 java CLASS 文件生成的。该编译器将JVM字节码翻译成DVM字节码,并将所有的class文件放到一个dex文件中。

APK(Android 应用程序包)

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

AAR

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

关于java - Android中AAR、JAR、DEX、APK的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33533370/

相关文章:

java - 如何仅将appium指定给一台设备

java - 反射运行时性能 - Java 与 CLR

android - 使用 Canvas Android 在填充的矩形内绘制文本

Android 从 URL 安装 apk

android - 使用apktool反编译报错

java - 如何验证来自不同应用程序的广播接收器的 onReceive 方法是否确实被调用?

java - 如何在 java 中使用循环读取 XML 子节点值

android - 使用SwipeRefreshLayout实现Pull to Refresh的一些问题

java - Android:无法添加附件: `SecurityException when openAssetFileDescriptor`

android - 我的 Android 应用程序的 apk 文件在哪里? (通过 eclipse )