我试图了解aar
库在安装和运行中如何工作。我到处搜索,信息稀缺。我得到的aar
库有4个.SO
文件,用于多个ABI
。
我在手机上使用了一个资源管理器应用程序,并导航到应用程序文件夹(安装后)/data/app/packagepath
,找到了一个名为lib的文件夹,其中包含一个.SO
文件,这是设备{ {1}}。
我正确地假设Android设备选择了与之相关的ABI
文件,而忽略了其余文件。然后,在启动时,应用程序将使用.SO
文件夹中的.SO
文件,而忽略/data/app/packagepath
附带的aar文件。因此,APK
文件就像是只能使用一次且仅在安装时使用的资源?
谢谢。
答案 0 :(得分:1)
应该将Android Archive(AAR文件)视为依赖项交付包装,而不是直接捆绑在APK中。
APKs本身在资产和资源上没有区别,因为它们都属于一个应用程序,因此所有组件都合并到各自的目录中。
在AAR之前,尝试集成第三方库意味着集成开发人员必须处理合并过程,这意味着需要跟踪资源(如图像,JNI二进制文件)并处理依赖冲突。
如the documentation for Android library中所述,AAR处理管道的某些功能包括:
关于为什么只有一个.so
文件的原因,我希望可以看到APK中的所有ABI,而系统只会为该设备安装适当的平台二进制库。
实际上,在安装时,会进行AOT(提前)编译,有关更多详细信息,请参见Android Runtime (ART) and Dalvik。