android gradle依赖:implementation 和compile的区别

1 android studio 2.x和3.x 依赖方式

android gradle依赖:implementation 和compile的区别_第1张图片
2.x版本的依赖方式.png

android gradle依赖:implementation 和compile的区别_第2张图片
3.x版本的依赖方式.png

在Android studio3.0中,compile依赖关系已被弃用,被implementation和api替代,provided被compile only替代,apk被runtime only替代。

2 implementation 和compile的区别

implementation可以让module在编译时隐藏自己使用的依赖,但是在运行时这个依赖对所有模块是可见的。而api与compile一样,无法隐藏自己使用的依赖

implementation的目的

    1. 加快编译速度。
    1. 隐藏对外不必要的接口。

例子

android gradle依赖:implementation 和compile的区别_第3张图片
6988326-7ee8cefdef81767e.jpg

  1. 如果mylibrary3使用api依赖mylibrary4,那么当mylibrary4发生变化时,编译需要重新编译mylibrary4、mylibrary3、mylibrary1;
  2. 如果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的区别

你可能感兴趣的:(android gradle依赖:implementation 和compile的区别)