implementation 、api 、compileOnly、compile 理解

我的开发环境

android studio 3.6.1   

gradle 5.4.1

classpath 'com.android.tools.build:gradle:3.5.2'

classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'

我们先要明白三个角色(我们要站在多个项目、多个module来理解)

1 my library (就是一个新项目工程,然后在这个项目中new了一个 android library,然后把主要功能代码写到library中, 测试代码写在app中, 通过jitpack发布远程依赖)

2 第三方依赖库

3 使用者(依赖my library 的项目工程)

我是站在my library 的角度上理解

compileOnly :我希望别人来导入我需要库,如果你不导入我要的库,运行时我就报错给你看

compileOnly 只会参与编译,而且不会参与打包。 所以在使用complieOnly时,我们要保证使用者包含 complieOnly的依赖

compileOnly 一般依赖公共库,保证整个项目统一,比如support v7,  androidx


implementation :我不准别人使用我依赖的库。你想用,自己去依赖。 你可以不提供我依赖的库并且我保证运行正常

implementation 依赖库只能当前module使用,会参与打包

多个implementation 相同库的不同版本号, 编译器会优先选择版本号高的


api:我允许别人使用我依赖的库

api:会把依赖库传给使用者,使用者的项目External Libraries 中能够看的见。可以在其他module使用,会参与打包。


compile 我老了,有什么事找我儿子api

compile和api一样功能,已被官方废弃不建议使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容