【问题标题】:Difference between AAR, JAR, DEX, APK in AndroidAndroid中AAR、JAR、DEX、APK的区别
【发布时间】:2015-11-04 22:33:59
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 就目前而言,APK 是 Android 上应用程序唯一可接受的二进制格式。

标签: java android apk dex aar


【解决方案1】:

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 相似。

【讨论】:

  • 谢谢真的很有帮助。AAR 信息大多不为许多人所知
  • 为 AAR (Android ARchive) 添加更多内容 - developer.android.com/studio/projects/android-library
  • 我在解压 AAR 后发现了一个classes.jar。我解压classes.jar 后找到了manifest 和class 文件。阅读本文后,使用unzip file 有助于学习。
  • 我觉得这个答案错过了 AAR 和 APK 之间的区别。 However, instead of compiling into an APK that runs on a device, an Android library compiles into an Android Archive (AAR) file that you can use as a dependency for an Android app module. source
【解决方案2】:

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

那是因为它一个Java JAR。

AAR 是 JAR 文件 + 资源

正确。

但它的用例是什么?用于分发 Android 开发库?

正确。

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

一般来说,是的。

DEX 文件呢?

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

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

我不知道你所说的“分发”是什么意思。

如果您的意思是“分发应用程序”,您的 .so 文件将在 APK 中。

如果您的意思是“作为库分发给其他开发人员”,请使用 AAR 或仅使用源代码形式的 Android 项目。

【讨论】:

  • 那么例如 AAR 库没有编译成 Dalvik 字节码?如果是,与 DEX 有什么区别?如果不是,是否应该在链接应用程序时将它们转换为 Dalvik?
  • @sapito:“例如,AAR 库没有编译成 Dalvik 字节码?” - 正确的。如果您查看其中一个(它们只是一个 ZIP 存档),您会在里面看到一个 JAR。 “链接应用程序时是否应该将它们转换为Dalvik?” -- 是的。
  • @CommonsWare “查看内部”AAR 文件是什么意思?它不是您可以检查的文件夹。
  • @IgorGanapolsky:这是一个 ZIP 风格的存档,可以被各种 ZIP 实用程序读取。
  • @IgorGanapolsky:然后制作 AAR 文件的副本,为副本提供 ZIP 扩展名,然后尝试打开它。或者,为 Mac 找到更好的 ZIP 实用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-25
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多