Android gradle tools 3.X 中新的依赖方式

前言

2017年,Android studio 版本更新至3.0,连带着 gradle tools 工具也升级到了3.0.0,在3.0.0中使用了最新的 Gralde 4.0 里程碑版本作为 gradle 的编译版本,该版本 gradle 编译速度有所加速,更加欣喜的是,完全支持 Java8。当然,对于 Kotlin 的支持,在这个版本也有所体现,Kotlin插件默认是安装的。

gradle 3.0 版本依赖的声明写法

1
compile fileTree(dir: 'libs', include: ['*.jar'])

但在3.0后的写法为

1
2
3
implementation fileTree(dir: 'libs', include: ['*.jar'])

api fileTree(dir: 'libs', include: ['*.jar'])

Module中使用

implementation

只能在内部使用此模块,比如我在一个 libiary 中使用 implementation 依赖了 gson 库,然后我的主项目依赖了 libiary,那么,我的主项目就无法访问 gson 库中的方法。这样的好处是编译速度会加快,推荐使用 implementation 的方式去依赖,如果你需要提供给外部访问,那么就使用 api 依赖即可

api

这种是我们最常用的方式,使用该方式依赖的库将会参与编译和打包。

compileOnly

只在编译时有效,不会参与打包
可以在自己的moudle中使用该方式依赖一些比如 com.android.support,gson 这些使用者常用的库,避免冲突。

debugImplementation

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

使用Maven生成aar

上传到 maven 上的 aar 文件中不会包含依赖,依赖体现在 pom 文件中,implementation 和 api 生成的 pom 文件没有区别,都会带有依赖路径;其他的列如 compileOnly 不会带有依赖