我一直在读一些关于Gradle作为Android应用程序的标准构建系统的新采用的文章.嗯,来自标准Java开发的我通常依赖jar个文件来构建我的项目.不过,看起来Android也有aar个包,相当于Windows操作系统中的dll个文件,前面提到了here个:

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

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

例如,在一个项目中,我访问一个COM端口,我使用NDK precompiled.so库来访问它.如果我想共享这个实用程序,我必须创建aar吗?

推荐答案

AAR个文件更类似于Jars,而不是Dlls,原因如下:

Dll可以在应用程序之间共享,其中as AAR和JAR是

AAR秒对Jar秒:

JarAAR的主要区别在于AAR包括

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

Note:
Similar attempts were made with apk-libs but they are now obsolete as AARs are much better.

Android相关问答推荐

listOf(listOf(字符串))在lazyArchitect(lazyStream)中合成

打开平板电脑的下载文件夹中的文件,例如使用其mimeType将Intent发送到我们的应用程序

AdMob:MobileAds. initialize()—java. lang. xml对于某些设备不能强制转换为java. lang. String""

了解数据加载在Kotlin中的工作原理

将Android Studio插件复制到离线网络

Play Google上发布的一款应用的房间数据库迁移

如何使用其他组件的位置来定位自定义弹出窗口

如何在另一个函数中初始化主类参数? (我是初学者)代码推荐

如何在这段代码android jetpack compose中实现全屏滚动

如何在每次显示可组合项时执行代码(并且只执行一次)

我可以从 Android 中的选定文本中获取周围的文本吗?

Android Compose 为什么 Checkbox 在父对象可点击时需要 onCheckChanged?

发布 MAUI 应用程序时出现遇到重复程序集错误

安卓模拟器打不开

如何在 JetpackCompose 的 LazyColumn 中 Select 多个项目

Android:appcompat 和 material 如何从默认创建 appcompat 和 material 视图?

验证硬编码密码

如何从日期 Select 器计算年龄?

插入查询室 OnConflictStrategy.REPLACE

为什么在try 实例化 Mediaplayer 时会出现 NullPointerException?安卓Kotlin