首页 > 解决方案 > aar 库在安装/使用时如何处理?

问题描述

我试图了解aar库如何在安装和运行时工作。我到处搜索,信息很少。aar我得到的库有 4 个.SO用于多个ABIs 的文件。

我在手机上使用了一个资源管理器应用程序并导航到应用程序文件夹(安装后)/data/app/packagepath并找到一个名为 lib 的文件夹,其中包含一个.SO文件,该文件是我设备的ABI.

我是否正确地假设 Android 设备选择了.SO与其相关的文件而忽略了其余部分。然后,在启动时,应用程序将使用.SO文件/data/app/packagepath夹中的文件,而完全忽略包含在其中的 aar 文件APK。那么,该aar文件就像一种仅在安装时使用一次且仅在安装时使用的资源?

谢谢。

标签: javaandroid

解决方案


Android Archive(AAR 文件)应被视为依赖交付打包,而不是直接捆绑在 APK 中。

APK本身不区分资产和资源,因为它们都属于一个应用程序,因此所有组件都合并到各自的目录中。

在 AAR 之前,尝试集成第三方库意味着集成开发人员必须处理合并过程,这意味着需要跟踪图像、JNI 二进制文件等资源,并处理依赖冲突。

Android 库文档中所述,AAR 处理管道的一些功能包括:

  • 资源合并冲突
  • 每个库模块创建自己的 R 类
  • 一个库模块可能包含它自己的 ProGuard 配置文件

至于为什么只有一个.so文件,我希望看到 APK 中的所有 ABI,系统只会为设备安装适当的平台二进制库。

实际上在安装时,会发生 Ahead Of Time (AOT) 编译,有关更多详细信息,请参阅Android Runtime (ART) 和 Dalvik


推荐阅读