1 android studio 2.x和3.x 依赖方式
2.x版本的依赖方式.png3.x版本的依赖方式.png
在Android studio3.0中,compile依赖关系已被弃用,被implementation和api替代,provided被compile only替代,apk被runtime only替代。
2 implementation 和compile的区别
implementation可以让module在编译时隐藏自己使用的依赖,但是在运行时这个依赖对所有模块是可见的。而api与compile一样,无法隐藏自己使用的依赖。
implementation的目的
- 加快编译速度。
- 隐藏对外不必要的接口。
例子
- 如果mylibrary3使用api依赖mylibrary4,那么当mylibrary4发生变化时,编译需要重新编译mylibrary4、mylibrary3、mylibrary1;
- 如果mylibrary3使用implemention依赖mylibrary4,那么当mylibrary4发生变化时,编译需要重新编译mylibrary4、mylibrary3,这个时候不需要编译mylibrary1,这样就可以节约build time;
3 其他
2.x 版本依赖(括号里对应的是 3.0 版本的依赖方式)
-
compile(api)
使用该方式依赖的库将会参与编译和打包。 -
provided(compileOnly)
只在编译时有效,不会参与打包 -
apk(runtimeOnly)
只在生成apk的时候参与打包,编译时不会参与,很少用。 -
testCompile(testImplementation)
testCompile 只在单元测试代码的编译以及最终打包测试apk时有效。 -
debugCompile(debugImplementation)
debugCompile 只在 debug 模式的编译和最终的 debug apk 打包时有效 -
releaseCompile(releaseImplementation)
Release compile仅仅针对 Release 模式的编译和最终的 Release apk 打包。
参考
android gradle依赖:implementation 和compile的区别
api与implementation的区别
网友评论