compile 和 api 的作用是一样的
compile(旧) == api (新) : 使用这个关键字引入的包对与其他module 来说时=是可见的
implementation
使用这个关键字implementation 引入的包对与其他module 来说是不可见的
apt 和 annotationProcessor的作用是一样的
apt(旧) == annotationProcessor: 用来引入注解包。在Android Studio 3.0 开始 使用annotationProcessor 代替 apt
kapt
在kotlin 项目中不使用 annotationProcessor 来引入注解包, 而是使用 kapt
使用之前要 添加 plugin
plugins {
id 'kotlin-kapt'
}
Gradle中的api和implementation的区别
api 和 implementaion主要是解决多个module依赖时的重复编译问题。
app -> lib1 -> lib2 即app依赖于lib1,而lib1 则依赖于lib2.
使用 api lib2
那么如果lib2有了改变,则会导致app的重新编译,也就是引入的包对 app 来说是可见
使用 implementation lib2
那么lib2的改变只会影响到lIb1,而不会再影响到app的编译,也就是引入的包对 app 来说是不可见
使用场景:
比如自定义了一个module名字叫做mylibrary, 引入了retrofit2, 如果希望主app 也可以使用mylibrary中引入的retrofit2,可以在mylibrary的build.gradle中是使用 api 修饰引入的retrofit2。
如果希望主app 不希望知道mylibrary中引入了retrofit2,可以在mylibrary的build.gradle中是使用 implementation修饰引入的retrofit2。