美文网首页
AAR 包中的依赖

AAR 包中的依赖

作者: 你可记得叫安可 | 来源:发表于2020-12-25 09:11 被阅读0次

    在 aar 的源码中不论使用 implementation 或者 api,打成 aar 包之后,当我们通过 gradle 脚本上传到服务器时,我们可以通过 pom.project 来将 aar 源码中的依赖生成 pom.xml 文件。这些依赖配置项会通过脚本,被转义成 maven 中的依赖配置项。脚本片段如下:

    uploadArchives {
        repositories {
            mavenDeployer {
                repository(url: gradle.mavenUrl) {
                    authentication(userName: gradle.mavenUserName, password: gradle.mavenPwd)
                }
                pom.project {
                    name libraryName
                    description mavenDesc
                    url siteUrl
    
                    groupId publishedGroupId
                    artifactId artifact
                    version publishVersion
                }
            }
        }
    }
    

    上面是我们工程中的配置。在 pom.project 的配置中其实还可以添加 scope 配置选项,如果未显示指明,那么 scope 就是 compile。因此,在未显示指明 scope 的情况下,aar 源码中无论是使用 implementation 还是 api,最终在 maven 中都会变为 compile

    所以在默认配置下,依赖在 mavenpom.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 不同,从而导致了一些编译上的不方便。

    关于 pom 中的 compile 可以阅读:Introduction to the Dependency Mechanism

    相关文章

      网友评论

          本文标题:AAR 包中的依赖

          本文链接:https://www.haomeiwen.com/subject/lolbnktx.html