美文网首页实用
Gradle依赖之‘五种依赖配置’

Gradle依赖之‘五种依赖配置’

作者: Miss_Ella | 来源:发表于2022-09-24 14:34 被阅读0次

    [转]Gradle依赖之‘五种依赖配置’

    目前gradle支持的依赖配置有五种,分别是implementation, api, compileOnly, runtimeOnly和annotationProcessor。常用的依赖配置是implementation, api和compileOnly。

    1. 第一种:implementation

    会将指定的依赖添加到编译路径,并且会将该依赖打包到输出,如apk中,但是这个依赖在编译时不能暴露给其他模块,例如依赖此模块的其他模块。这种方式指定的依赖在编译时只能在当前模块中访问。

    当前项目中有两个模块app和decoder


    image.png

    模块app依赖模块decoder

    decoder中添加了远程二进制库依赖joda-time

    image.png

    在decoder模块中使用这个库

    image.png

    在app模块中条用decoder模块提供的方法

    image.png

    尝试在app模块中使用joda-time库

    image.png

    出现错误:


    image.png

    从上面的例子中我们可以看出,complementation依赖设置表示当前这个依赖在编译时只能在当前这个模块中访问,其他模块在编译时不能访问,依赖这个模块的其他模块在运行时可以访问这个库的实现。

    2. 第二种:api

    使用api配置的依赖会将对应的依赖添加到编译路径,并将依赖打包输出,但是这个依赖是可以传递的,比如模块A依赖模块B,B依赖库C,模块B在编译时能够访问到库C,但是与implemetation不同的是,在模块A中库C也是可以访问的。

    我们修改decoder模块中对joda-time库的依赖配置

    image.png

    在app模块中使用joda-time库

    image.png

    输出


    image.png

    3. 第三种:compileOnly

    compileOnly修饰的依赖会添加到编译路径中,但是不会打包到apk中,因此只能在编译时访问,且compileOnly修饰的依赖不会传递。

    image.png

    编译时通过,运行时报错:

    image.png

    由于写Android的时间比较短,不知道这个配置的具体应用场景,希望有经验的大佬能够在评论区回复一下具体的应用场景。

    4. 第四种:runtimeOnly

    这个与compileOnly相反,它修饰的依赖不会添加到编译路径中,但是被打包到apk中,运行时使用。没有使用过。

    5. 第五种:annotationProcessor

    用于注解处理器的依赖配置,还没有使用过。

    除了上面五种,还有两种testImplementation和androidTestImplementation两种,用于指定在测试代码的依赖。

    对于上面这么多的依赖,其中Implementation是我们最常用的依赖配置选项。

    官方文档

    相关文章

      网友评论

        本文标题:Gradle依赖之‘五种依赖配置’

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