在安装/使用时如何处理AAR库?

时间:2019-05-22 20:42:19

标签: java android

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

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

我正确地假设Android设备选择了与之相关的ABI文件,而忽略了其余文件。然后,在启动时,应用程序将使用.SO文件夹中的.SO文件,而忽略/data/app/packagepath附带的aar文件。因此,APK文件就像是只能使用一次且仅在安装时使用的资源?

谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

the documentation for Android library中所述,AAR处理管道的某些功能包括:

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

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

实际上,在安装时,会进行AOT(提前)编译,有关更多详细信息,请参见Android Runtime (ART) and Dalvik