implementation:与compile对应,会添加依赖到编译路径,并且会将依赖打包到输出(aar或apk),但是在编译时不会将依赖的实现暴露给其他module,也就是只有在运行时其他module才能访问这个依赖中的实现。使用这个配置,可以显著提升构建时间,因为它可以减少重新编译的module的数量。建议,尽量使用这个依赖配置。
api:等同于 compile, 用 api 指令编译,表示 三方库的依赖对 module 是可见的,即等同 app Module 可以使用此三方库依赖。
compileOnly:与 provided 对应,Gradle 把依赖加到编译路径,编译时使用,不会打包到输出(aar 或 apk)。这可以减少输出的体积,在只在编译时需要,在运行时可选的情况,很有用。
runtimeOnly:与 apk 对应。Gradle添加依赖只打包到 apk,运行时使用,但不会添加到编译路径。这个没有使用过。
annotationProcessor:与 compile 对应,用于注解处理器的依赖配置,这个没用过。