美文网首页程序员
聊聊Android Gradle的几种依赖方式

聊聊Android Gradle的几种依赖方式

作者: 一只懂音乐的码虫 | 来源:发表于2021-01-06 18:23 被阅读0次

目前gradle支持的依赖配置有五种,分别是

  • implementation
  • api
  • compileOnly
  • runtimeOnly
  • annotationProcessor。
    常用的依赖配置是implementation、api、compileOnly。
一、implementation

依赖不可传递
会将对应的依赖添加到编译路径,并将依赖打包输出

假设项目下有两个模块A(app)、B,A依赖B,A可以访问B,B使用implementation方式依赖C,B可以访问到C,但是A是无法访问到C的。

implementation依赖设置表示当前这个依赖在编译时只能在当前这个模块中访问,其他模块在编译时不能访问,依赖这个模块的其他模块在运行时可以访问这个库的实现。

二、api

依赖可传递
会将对应的依赖添加到编译路径,并将依赖打包输出

模块A依赖模块B,B依赖库C,模块B在编译时能够访问到库C,在模块A中库C也是可以访问的。

三、compileOnly

依赖不可传递
会添加到编译路径中,但是不会打包到apk中,只能在编译时访问

可保证编译正常,但是在运行时会报错java.lang.noClassDefFoundError: failed resolution of ...

使用场景:例如封装一个网络库N,需要用到json库A,这个网络库N可能被宿主工程引用,而此时宿主工程也用到了同一个json库,此时就会存在包依赖冲突的问题,这种场景可以使用compileOnly来解决,但是要注意的是,在宿主工程中,必须得impementaion或者api的方式添加这个json库的依赖,否则会报java.lang.noClassDefFoundError: failed resolution of ...找不到这个json库的错误。

四、runtimeOnly

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

不太常用

五、annotationProcessor

用于注解处理器的依赖配置,不太常用。

其他

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

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

相关文章

网友评论

    本文标题:聊聊Android Gradle的几种依赖方式

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