Gradle for Android:依赖管理

Android项目的依赖管理是通过gradle来配置的,下面的代码我们在我们的项目中见的很多,那这些gradle都是什么意思呢?

1.compile 'com.android.support:appcompat-v7:23.4.0'
2.provided 'com.squareup.dagger:dagger-compiler:1.2.1'(网络下载)
  provided fileTree(include: '*.jar', dir: '../../../core/Base/Gdroid/libs')(本地路径)
3.compile files('libs/picasso-2.4.0.jar')
4.compile project(':androidPullToRefresh')

2.X vs 3.X

在这里插入图片描述

compile(api)指令

如果你的jar包/依赖代码 在编译的时候需要依赖,在运行的时候也需要,那么就用compile.前提:apply plugin: 'war’或者apply plugin: ‘java’。

compile是从repository(默认是jCenter())里下载一个依赖包进行编译并打包。
如下:

compile ‘org.springframework:spring-webmvc:4.3.9.RELEASE’

  

compile files(‘libs/picasso-2.4.0.jar’)

compile files是从本地的libs目录下寻找picasso-2.4.0.jar这个文件进行编译并打包。类似的命令有
compile fileTree(dir: ‘libs’, include: ‘*.jar’)
意思是将libs目录下所有jar文件进行编译并打包。

provided(compileOnly)指令

provided只提供编译支持,但是不会写入apk。比如我在编译的时候对某一个jar文件有依赖,但是最终打包apk文件时,我不想把这个jar文件放进去,可以用这个命令。

testCompile(testImplementation)

testCompile 只在单元测试代码的编译以及最终打包测试apk时有效。

apk(runtimeOnly)

只在生成apk的时候参与打包,编译时不会参与,很少用。

debugCompile(debugImplementation)

debugCompile 只在debug模式的编译和最终的debug apk打包时有效

releaseCompile(releaseImplementation)

Release compile 仅仅针对Release 模式的编译和最终的Release apk打包。

implementation指令

这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。

简单的说,就是使用implementation指令的依赖不会传递。例如,有一个module为testsdk,testsdk依赖于gson:

implementation ‘com.google.code.gson:gson:2.8.2’

这时候,在testsdk里边的java代码是可以访问gson的。

另一个module为app,app依赖于testsdk:

implementation project(’:testsdk’)

这时候,因为testsdk使用的是implementation 指令来依赖gson,所以app里边不能引用gson。

但是,如果testsdk使用的是api来引用gson:

api ‘com.google.code.gson:gson:2.8.2’

则与gradle3.0.0之前的compile指令的效果完全一样,app的module也可以引用gson。这就是api和implementation的区别。

更多细节可访问:
android gradle 3.0.0 中依赖指令implementation、api 的区别
https://blog.csdn.net/Next_Second/article/details/78428086

安卓工程依赖新方式:Implementation vs API dependency
https://juejin.im/entry/59476897da2f60006786029f

exclude指令

用于解决重复依赖

具体可参考下面的一篇文章:
com.android.support冲突的解决办法
https://blog.csdn.net/yuzhiqiang_1993/article/details/78214812

参考资料

Android Studio3.x新的依赖方式(implementation、api、compileOnly)
https://blog.csdn.net/yuzhiqiang_1993/article/details/78366985

升级Gradle3.0
https://wfeii.github.io/gradle/%E5%8D%87%E7%BA%A7Gradle3.0/

Gradle依赖项学习总结,dependencies、transitive、force、exclude的使用与依赖冲突解决
http://www.paincker.com/gradle-dependencies

Gradle for Android(三) 依赖管理
https://www.jianshu.com/p/b8ad7ea0511b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值