1.implement
概念 : 将该依赖隐藏在内部,而不对外部公开。比如项目中有一个 mudule
是 basekit ,其内部用 implement
指令依赖了 glide
这个库, 那么在 app mudule 中无法调用 glide 库中的方法.
2.compile
概念: android studio 3.0 版本后废弃该指令 改用 api 代替, api 完全等同于之前的 compile 指令, 也就是普通的依赖, 第三方库在 mudule 中依赖后其他 mudule 都可以使用该库.
官方推荐在不影响的前提下优先使用 implement 指令依赖.
3.compileOnly
只在编译时有效,不会参与打包.
4.runtimeOnly
只在生成apk的时候参与打包,编译时不会参与,很少用。
5.testImplementation
只在单元测试代码的编译以及最终打包测试apk时有效。
6.debugImplementation
只在debug模式的编译和最终的debug apk打包时有效.
7.releaseImplementation
仅仅针对Release 模式的编译和最终的Release apk打包。
8.annotationProcessor
annotationProcessor是APT(Annotation Processing Tool)工具中的一种,随着Android Gradle 插件 2.2 版本的发布,Android Gradle 插件提供了名为 annotationProcessor 的功能来完全代替 android-apt,不需要引入,可以直接在build.gradle文件中使用。
annotationProcessor顾名思义是注解处理器的意思。它对源代码文件进行检测找出其中的Annotation,根据注解自动生成代码。 Annotation处理器在处理Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件,之后将编译生成的源文件和原来的源文件一起生成class文件
annotationProcessor生成额外文件的规则是在依赖库里定义的,只在编译的时候执行,但是库最终不打包到apk中
了解了annotationProcessor和kapt后在去看一些第三方库时,从库的引用方式就可以简单地看出它有没有使用编译期注解的技术了
9. kapt
kpat--Kotlin Annotation Processing,顾名思义,就是服务于Kotlin的Annotation Processing