Xtr*_*ica 124 java android jar aar
我一直在阅读一些关于Gradle作为Android应用程序的标准构建系统的新采用的文章.好吧,来自标准的Java开发,我通常依赖于jar文件来构建我的项目.然而似乎安卓也有AAR包,这是相当于DLL在Windows操作系统文件,提到这里:
首先,您必须意识到Android平台不允许应用程序级别的"共享库".在"传统"编程语言平台,C,C++,Java中,您可以命名它,我们有这种共享运行时库的机制.(例如,Windows上的DLL,Unix上的DSO,JVM上的Jar等).但是,在Android上,除非您是Google或手机制造商,否则您无法做到这一点(请参阅下面的脚注1).作为应用程序开发人员,这可能是一个基本限制.在构建时和运行时"共享"或"重用"代码是软件工程实践中非常重要的一部分.由于上述限制,这在Android上相当困难(并非不可能,更难).
但是,我对这个概念有些怀疑.我的意思是,开发人员何时应该对其应用程序中包含aar依赖项感兴趣?这种依赖关系是否收紧到SDK最低版本?
例如,在一个项目中,我访问一个COM端口,我使用NDK预编译 .so库.如果我想分享这个实用程序,我是否必须创建一个aar?
uni*_*ify 206
AAR由于以下原因,文件更类似于Jars而不是Dlls:
Dlls可以在应用程序之间共享,其中AARs和jar与您的应用程序一起打包.
AARs vs Jars:
之间的主要区别
Jar和AAR是AAR小号包括资源,如layouts, drawables等.这使得很多更容易地创建自包含的可视化组件.例如,如果您有多个使用相同登录屏幕的应用程序,Jar您可以共享类而不是布局,样式等,您仍然需要复制它们.随着AARs一切都捆绑在一个整洁的包装.
总之,AARs是朝着正确方向迈出的重要一步.
注意:
使用apk-libs 进行了类似的尝试,但它们现在已经过时,因为AAR它们要好得多.
yoA*_*ex5 12
JAR 与 AAR
\nJAR\xe2\x80\x93 Java 存档。包含.classjava资源
AAR\xe2\x80\x93 Android 存档。包含classes.jar和其他 Android 相关文件,如 AndroidManifest.xml、R.txt、proguard.txt、res 文件夹(布局、值、drawable)等。
Android 可以处理文件jar和aar. 作为库开发人员通常aar用于共享 Android 资源,否则 -jar喜欢更轻量级和通用的方式来分发工件。
既然aar包含jar你就可以使用它[关于]
不同之处:
\n小智 10
声明" Jar和AAR之间的主要区别在于AAR包括布局,drawable等资源 "并不符合JAR文件规范,因此不是事实.根据JAR文件规范:
JAR文件是基于流行的ZIP文件格式的文件格式,用于将许多文件聚合为一个文件.JAR文件本质上是一个包含可选META-INF目录的zip文件.
如您所见,没有内容限制禁止在JAR文件中包括布局,绘图等资源.有关更多详细信息,请参阅Java®虚拟机规范的第5.3条"创建和加载".
所以关于Android Archive Library(aar)vs标准jar的问题.答案取决于您使用的构建工具.
如果您使用Android Studio作为构建工具(分别作为项目组织者),您最好使用*.aar文件在Android项目之间共享封装资源.AAR文件格式是Android Studio构建的一部分,因为它在其他评论中有评论,其用户界面支持Android库的aar格式.
但除了Android Studio之外,世界其他地方都不知道那个东西是什么文件(神器).例如,如果您的Android构建基于Maven,则资源共享的首选文件将是jar,因为这是本机Maven Java项目工件,并且对标准jar文件中的内容没有限制.此外,还有一种方法可以解释Maven的任何文件格式,包括使用生命周期增强功能和新组件.这里有一个简单的例子如何为Maven创建一个新的包装类型?
问题中的引用与当前现实没有什么共同之处。当然,可以在Android中使用外部库,并且有很多可用的库。也许他们想说每个应用程序都必须捆绑它需要的所有库,但是在构建时重用该库(静态链接)确实不是问题。
.aar不同于.jar不超过.jar从不同.zip。它具有其上样的内容应该有预期的某些概念,但两者.jar和.aar最经常包含编译的类和他们的资源。.aar只是指定该库是特定于Android的,并且具有某些预期的结构,对于此类库来说是合理的(当然,.jar也具有某些预期的结构)。
也不再支持.aar仅受Android Studio支持的视图。可以将此类库部署到Maven Central,例如gradle之类的工具可以使用@aar后缀来引用它们,例如:
dependencies {
compile ('io.github.andviane:uncover:2.0.1@aar')
..
}
Run Code Online (Sandbox Code Playgroud)
引用此 Maven中央部署。