gradle新的依赖方式你真的了解吗?
来源:互联网 发布:php curl exec返回空 编辑:程序博客网 时间:2024/06/08 15:51
在 gradle3.0之前,gradle 依赖项目配置有 compile,apk,provided三种方式
compile:指定编译时依赖项。Gradle 将此配置的依赖项添加到类路径和应用的 APK。这是默认配置。
apk: 指定 Gradle 需要将其与应用的 APK 一起打包的仅运行时依赖项。您可以将此配置与 JAR 二进制依赖项一起使用,而不能与其他库模块依赖项或 AAR 二进制依赖项一起使用。
provided:指定 Gradle 不与应用的 APK 一起打包的编译时依赖项。如果运行时无需此依赖项,这将有助于缩减 APK 的大小。您可以将此配置与 JAR 二进制依赖项一起使用,而不能与其他库模块依赖项或 AAR 二进制依赖项一起使用。
从上面截图可以看到,在AS 的 project structure的添加 dependency 界面,你会看到每个 dependency 后面可以致命 scope, 因为我的 gradle 是3.0版本,compile,apk,provided 这三种依赖方式已经 deprecated. 取而代之的implementation, api, compileOnly, and runtimeOnly几种方式
那新旧之间有什么不同呢?
gradle3.0之前的 build.gradle 文件是这样的,依赖项目默认都是通过compile
而gradle3.0后,module 下的build.gradle 项目依赖可以是这样子
也许到此刻,有些同学还是处于懵懵懂懂的状态,下面让我以几个例子来详细说明他们的作用
在我的项目里共有 app,common,factory,lang这4个module
他们的依赖关系是 [app->factory->common->lang]
那么此时如果我的 common这个 module中使用 implementation 来引入 gson 库,那么在 factory 和 app 这两个 module中,你是无法是用Gson 的,编译时期是无法找到这个类的,implementation 不具有传递性,如果使用 api 或者 compile 来引入 gson 库,便可以在 app 和 factory 中直接使用 gson 库,而不必再次引入.
什么时候用到 compileOnly呢?
我们在开发的时候,如果想要查看 PhoneWindow ,WindowManager 这些 framework 层的代码,可以将 sdk 中的 platforms中的 android.jar 放入 lib 文件夹中,然后add as Library,此时会在 build.gradle 文件中生成一句 implementation files('libs/android.jar')
我们可以将 implementation替换为 compileOnly,此时就可以查看 PhoneWindow 这些 framework 层的源码了
以上如有错误,请多指教!
- gradle新的依赖方式你真的了解吗?
- gradle 详解——你真的了解Gradle吗?
- gradle 详解——你真的了解Gradle吗
- 【Gradle 系列文章:你真的了解 Gradle 吗】一:Gradle 入门
- 你真的了解telnet吗?
- 你真的了解telnet吗?
- 你真的了解HTML吗
- 你真的了解while(n--)吗?
- 你真的了解HTML吗
- 你真的了解计算机除法吗
- 你真的了解xargs命令吗
- 你真的了解null吗?
- 你真的了解find命令吗
- 你真的了解HTML吗
- 你真的了解互联网吗?
- 你真的了解 console 吗
- 你真的了解 console 吗
- 二维码,你真的了解吗?
- Spring boot helloWorld
- 数据库索引分析
- OpenMV参数标定
- 入门训练 圆的面积
- 对于线程的理解
- gradle新的依赖方式你真的了解吗?
- mybatis框架(4)---输入输出映射
- 线程结束,GetExitCodeThread后结束值一直STILL_ACTIVE,259的问题
- 奎特尔入侵指南
- dubbo学习进度追踪
- CCF 公共钥匙盒
- Redis 高可用集群
- uboot-relocation学习总结
- LeetCode刷题(48)--Remove Duplicates from Sorted List II