新旧对比
gradle3.x 与 2.x 的依赖方式有了很大区别,具体来说,有了下面这样的改动
3.x | 2.x |
---|---|
implementation | 无 |
api | compile |
compileOnly | provided |
runtimeOnly | apk |
debugImplementation | debugCompile |
releaseImplementation | releaseCompile |
androidTestImplementation | androidTestCompile |
区别和使用
implementation 和 api
implementation 和 api 是取代之前的 compile 的,其中 api 和 compile 是一样的效果。implementation 有所不同,通过 implementation 依赖的库只能自己库本身访问,举个例子,A依赖B,B依赖C,如果B依赖C是使用的 implementation 依赖,那么在A中是访问不到C中的方法的,如果需要访问,需要使用api依赖。
compileOnly
compileOnly 和 provided 效果是一样的,只在编译的时候有效, 不参与打包。
runtimeOnly
runtimeOnly 和 apk效果一样,只在打包的时候有效,编译不参与
test implementation
testImplementation 和 testCompile 效果一样,在单元测试和打包测试 apk 的时候有效
debug implementation
debugImplementation 和 debugCompile 效果相同, 在 debug 模式下有效
release implementation
releaseImplementation 和 releaseCompile 效果相同,只在 release 模式和打 release 包情况下有效