android gradle依赖:implementation 和compile的区别

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

2.x版本的依赖方式.png

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. 隐藏对外不必要的接口。

例子

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的区别

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容