当前位置: 首页 > 面试题库 >

Android Archive Library(AAR)与标准jar

韩明德
2023-03-14
问题内容

我一直在阅读有关Gradle作为Android应用程序的标准构建系统的新采用的一些文章。好吧,来自标准Java开发,我通常依赖 jar
文件来构建我的项目。然而似乎安卓也有 AAR 包,这是相当于 DLL
在Windows操作系统文件,提到这里:

首先,您必须意识到Android平台不允许应用程序级别的“共享库”。在“传统”编程语言平台(C,C
++,Java)中,您可以使用它来共享运行库的这种html" target="_blank">机制。(例如,Windows上的DLL,Unix上的DSO,JVM上的Jar等)。但是,在Android上,除非您是Google或手机制造商,否则不能这样做(请参阅下面的脚注1)。作为应用程序开发人员,这可能是一个基本限制。在构建时和运行时,“共享”或“重用”代码是软件工程实践中非常重要的一部分。由于上述限制,这在Android上相当困难(并非没有可能,只是更加困难)。

但是,我对此概念有些怀疑。我的意思是,开发人员何时应该对它的应用程序中包含 aar 依赖感兴趣?是否已将这些依赖关系限制为某些SDK最低版本?

例如,在一个项目中,我访问一个COM端口,该端口使用NDK预编译的
.so 库。如果要共享此实用程序,是否必须创建aar?


问题答案:

AAR文件与Jars相比与Dlls 更相似,原因如下:

Dll可以在AARs和jar与您的应用程序打包在一起的应用程序之间共享。

AARs与Jars:

之间的主要区别JarAARAAR小号包括资源,如layouts, drawables等。这使得很多更容易地创建自包含的可视化组件。例如,如果您有多个使用相同登录屏幕的应用程序,而Jar您可以使用s共享类,但不能共享布局,样式等,则您仍然必须复制它们。使用AARs时,所有内容都捆绑在一个整齐的包中。

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

注意:
apk-libs 进行了类似的尝试,但由于AARs更好,因此现在已作废。



 类似资料:
  • 但是,围绕这个概念,我有些怀疑。我的意思是,开发人员什么时候应该有兴趣在其应用程序中包含aar依赖项?这种依赖关系是否已收紧到某个SDK最低版本? 例如,在一个项目中,我访问一个COM端口,我使用NDK预编译的.so库。如果要共享此实用程序,是否必须创建aar?

  • 我注意到当涉及到std::function对象和std::bind时,std::is_convertible和std::is_assignable会产生一些奇怪的结果。 我假设当这些函数返回true时,就可以进行转换了。还是我错过了什么? 下面的代码在不同的编译器上打印不同的结果,我希望它打印0,因为这些类型不能赋值。 它在以下编译器上打印0: null 它在以下编译器上打印 1: 4.7 VC

  • 本页列出了所有Apache遵守的相关标准,并伴有简要描述。 除了下面列出的参考信息,下列资源也值得看看: http://purl.org/NET/http-errata - HTTP/1.1 勘误表 http://www.rfc-editor.org/errata"http://ftp.ics.uci.edu/pub/ietf/http/"> http://ftp.ics.uci.edu/pub/

  • Ceph 确实由于各种原因在某些地方偏离了严谨的 POSIX 语义: Sparse files propagate incorrectly to tools like df. They will only use up the required space, but in df will increase the “used” space by the full file size. We do

  • 知识产权 工业产权 专利、商标、工业品外观设计、实用新型、服务标记、厂商名称、产地标记、原场地标记 软件著作权(版权) 分类 人身权 发表权:与著作权的保护期同为50年。(其他权利均永久受法律保护) 署名权(开发者身份权) 财产权 使用权、复制权、修改权、发行权、翻译权、注释权、信息网络传播权、出租权、 使用许可和获得报酬权、转让权 主体 公民:独立开发、委托开发合同约定、转让途径取得、合作开发

  • 我正在尝试将Hibernate Criteria与命名查询进行性能比较。我知道这一切都取决于实际查询本身,最后一个词是它们在运行时的配置文件。尽管如此,仍在尝试整理每个查询的内容。 我试图将Q分为两部分 PART-1 -- Hibernate条件和命名查询的基本工作原理: Criteria适用于参数。在运行时,查询不需要解析——有几个搜索和“表单存在”参数,例如对结果进行排序,将它们返回为可滚动的