Android 存档库(aar) VS 标准 jar

我一直在阅读一些关于 Gradle 作为 Android 应用标准构建系统的文章。从标准的 Java 开发来看,我通常依赖于 罐子文件来构建我的项目。然而,Android 似乎也有 包,相当于 Windows 操作系统中的 DLL文件,正如前面提到的 给你:

首先,您必须意识到 Android 平台不允许应用程序级别的“共享库”。在“传统的”编程语言平台中,C、 C + + 、 Java 等等,我们有这种共享运行时库的机制。(例如,Windows 上的 DLL,Unix 上的 DSO,JVM 上的 Jar,等等)。然而,在 Android 上,你不能这样做,除非你是谷歌或手机制造商(见下面的脚注1)。作为应用程序开发人员,这可能是一个基本限制。在构建时和运行时,“共享”或“重用”代码是软件工程实践中非常重要的一部分。由于前面提到的限制,这在 Android 上相当困难(不是不可能,只是更困难)。

然而,我对这个概念有些怀疑。我的意思是,什么时候开发人员应该对在其应用程序中包含 依赖项感兴趣?这种依赖关系是否被加强到某个 SDK 最小版本?

例如,在一个项目中,我访问一个 COM 端口,我为其使用 NDK 预编译 。所以库。如果我想共享这个实用程序,我必须创建一个 aar 吗?

75222 次浏览

由于以下原因,AAR文件与 Jar文件比与 Dll文件更为相似:

Dll可以像 AAR和 jar 一样跨应用程序共享 和你的应用程序一起打包。

AARJar:

JarAAR的主要区别在于 AAR包括 资源,如 layouts, drawables等,这使得它容易得多 创建自包含的视觉组件。例如,如果您有 多个应用程序使用相同的登录屏幕,使用 Jar你可以 共享类,但不共享布局、样式等,你仍然必须 使用 AAR,所有的东西都捆绑在一个整洁的包中。

总之,AAR是朝着正确方向迈出的一大步。

注意: < br/> 类似的尝试在 apk-lib上也有过,但是现在已经过时了,因为 AAR要好得多。

Jar 和 AAR 之间的主要区别在于 AAR 包括布局、绘图等资源。”语句不符合 JAR 文件规范,因此不是真实的。 根据 JAR 文件规范:

JAR 文件是一种基于流行的 ZIP 文件格式的文件格式,用于将多个文件聚合为一个文件。JAR 文件本质上是一个包含可选 META-INF 目录的 zip 文件。

正如您所看到的,没有内容限制,禁止在 JAR 文件中包含布局、绘图等资源。有关详细信息,请参阅 Java 虚拟机规范的第5.3条“创建和加载”。

因此,对于 Android 存档库(aar)与标准 jar 的问题。答案取决于您所使用的构建工具。

如果您使用 Android Studio 作为构建工具(分别作为项目组织者) ,那么您最好使用 * 。Aar 文件在 Android 项目之间共享封装的资源。AAR 文件格式是 Android Studio 构建的一部分,正如其他评论中所说,它的用户界面支持 Android 库的 AAR 格式。

但是除了 Android Studio,世界上其他人并不知道什么是 aar 文件(工件)。例如,如果您的 Android 版本是基于 Maven 的,那么资源共享的首选文件将是 jar,因为这是 Maven Java 项目的本地工件,并且在标准 jar 文件中放置内容没有限制。此外,还有一种方法可以解释 Maven 的任何文件格式,通过使用新组件的生命周期增强来包含 aar。这里有一个简单的例子 如何为 Maven 创建新的包装类型?

这个问题中的引用与当前的现实没有任何共同之处。当然,在 Android 中使用外部库是可能的,而且有很多可用的库。也许他们想说,每个应用程序必须捆绑所需的所有库,但在构建时重用库(静态链接)实际上不是问题。

.aar.jar的差异不超过 .jar.zip的差异。它有一些关于应该期待哪种内容的概念,但是 .jar.aar通常都包含已编译的类和它们的资源。.aar只是指定了这个库是 Android 特有的,并且有一些预期的结构,对于这样的库来说是合理的(好吧,.jar也有一些预期的结构)。

那种观点。Aar 只支持 Android 工作室也不赞成。这样的图书馆可以部署到 Maven Central,像 gradle 这样的工具可以使用@aar 后缀引用它们,例如:

dependencies {
compile ('io.github.andviane:uncover:2.0.1@aar')
..
}

参考 这个 Maven 中央部署。

主要区别是 aar 在机器人内部被分裂为 jar。

如果您的应用程序将只在用户应用程序中使用在 android 工作室,那么 aar 是首选。

如果您计划让应用程序与 c/c + + 编译的 lib.so 进行通信,那么最好使用文件 jar。

根据需要使用震击器和震击器工作方便, 罐子更灵活。

这是作为我的知识到安卓5棒棒糖。新版本我不知道。

JAR VS AAR

包含 .class,Java 资源

AAR-Android 资料库。包含 classes.jar和其他 Android 相关文件,如 AndroidManifest.xml、 R.txt、 proguard.txt、 res 文件夹(布局、值、可绘制)等。

Android 可以同时处理 jaraar文件。作为一个库开发人员,通常使用 aar来共享 Android 资源,否则-jar就像是更轻量级和更通用的分发工件的方式。

由于 aar包含 jar,因此可以使用 it< sup > [ About ]

区别: