AAR 包中的依赖
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AAR 包中的依赖相关的知识,希望对你有一定的参考价值。
参考技术A在 aar 的源码中不论使用 implementation 或者 api ,打成 aar 包之后,当我们通过 gradle 脚本上传到服务器时,我们可以通过 pom.project 来将 aar 源码中的依赖生成 pom.xml 文件。这些依赖配置项会通过脚本,被转义成 maven 中的依赖配置项。脚本片段如下:
上面是我们工程中的配置。在 pom.project 的配置中其实还可以添加 scope 配置选项,如果未显示指明,那么 scope 就是 compile 。因此, 在未显示指明 scope 的情况下,aar 源码中无论是使用 implementation 还是 api ,最终在 maven 中都会变为 compile 。
所以在默认配置下,依赖在 maven 的 pom.xml 文件中都是存在的,且表述为 compile 。因此,当项目中通过 gradle 使用 maven 上的 aar 包时, pom.xml 文件中的依赖项就会被 gradle 解析。而此时 gradle 发现 maven 上的依赖配置是 compile ,于是 gradle 会将其解析为 api 配置。
这就造成了,当我们在工程中直接依赖 aar 包时,aar 包中的依赖项因为被 gradle 解析为 api ,因此在我们的工程中可以「看到」这些依赖项。
但是,当我们在工程中通过源码直接使用 aar 的源码工程时,如果 aar 工程中的依赖是通过 implementation 配置的,那么我们工程中就「看不到」aar 中的依赖项了。
这就导致了工程直接依赖 aar 和通过源码依赖 aar 时,他两的 gradle DAG 不同,从而导致了一些编译上的不方便。
以上是关于AAR 包中的依赖的主要内容,如果未能解决你的问题,请参考以下文章
外部 AAR 依赖项中的 proguard.txt 损坏(非 ascii 字符)