compile 和 api 的作用是一样的
compile(旧) == api (新) : 使用这个关键字引入的包对与其他module 来说时=是可见的
implementation
使用这个关键字implementation 引入的包对与其他module 来说是不可见的
apt 和 annotationProcessor的作用是一样的
apt(旧) == annotationProcessor: 用来引入注解包。在Android Studio 3.0 开始 使用annotationProcessor 代替 apt
kapt
Android Kapt(Kotlin Annotation Processing Tool)是Kotlin编程语言的一个官方注解处理器,它用于在编译时生成额外的代码,例如实体类的getter和setter方法、数据库访问层代码等。自从Kapt被引入以来,它已经经历了一些更新和改进,带来了新的功能。以下是Android Kapt的一些新功能:
- 注解处理器API改进:Kapt提供了更强大的注解处理器API,允许开发者更灵活地处理注解、生成代码以及与其他编译器插件集成。
- 更好的代码生成优化:Kapt在代码生成方面进行了优化,提高了生成的代码质量和性能。这包括更快的编译速度、更小的生成的代码体积以及更好的类型安全性。
- 支持更多的Kotlin注解:随着Kotlin语言的发展,Kapt也不断扩展其支持的注解列表。这使得开发者能够更方便地使用各种Kotlin注解来简化代码编写。
- 与Android Gradle插件的更好集成:Kapt与Android Gradle插件之间的集成得到了改进,提供了更流畅的开发体验。例如,Kapt现在可以更好地处理Android资源文件中的注解,以及与其他编译器插件的冲突问题。
- 支持跨平台开发:虽然Kapt最初是为Android设计的,但它也可以用于跨平台开发,例如Kotlin Multiplatform项目。这使得开发者能够在多个平台上重用代码,并利用Kapt的强大功能。
- 更好的错误报告和诊断信息:Kapt提供了更详细的错误报告和诊断信息,帮助开发者更快地发现和解决问题。这包括对注解使用错误的详细说明、生成代码的问题报告等。
需要注意的是,以上功能可能因Android Studio版本和Kotlin版本的不同而有所差异。为了获得最佳的开发体验,建议您使用最新版本的Android Studio和Kotlin编译器插件。
在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。