我一直在Gradle中安装依赖项,我不明白为什么有时我需要在生命周期和房间数据库等库中使用kapt来使用@Something
注释。但是在像Retrofit2和Gson这样的库中,我不需要使用kapt,我可以使用像@SerializedName
这样的批注
发布于 2019-06-23 04:34:23
通常,库通过以下两种方式之一与注释交互:
kapt
或annotationProcessor
。注解处理器是在主编译步骤之前调用的编译器插件,它可以访问注解及其周围的代码,并基于此输入执行任务。批注处理器通常以单独的工件形式出现,因为它们包含运行时不需要的代码,因此不应该将其打包到APK中。例如: Butterknife,它在编译期间处理批注,并附带一个包含批注处理器的独立butterknife-compiler
模块。您应该将butterknife-compiler
用作kapt
或annotationProcessor
依赖项,而不是implementation
、api
或compile
,因为您在运行时不需要批注处理器。要回答您的问题,没有通用的方法来了解依赖批注的库是否附带批注处理器。您应该查看特定库的文档,并按照安装说明进行操作。
https://stackoverflow.com/questions/56691764
复制相似问题