Bar*_*ski 16
注释(例如@Something)基本上是代码的标签。您标记代码的一部分,以便其他代码可以找到这些标记。
这个“其他代码”通常是一个注释处理器。它查找注释并使用标有这些注释的代码执行某些操作。例如,它可以生成新代码(如 Dagger、Butterknife 等)。
根据您的项目引进依赖的方式,(取决于keyword您使用- ,implementation,api,compileOnly,runtimeOnly,annotationProcessor,kapt等),相关性将被你的项目不同的使用。
如果您使用annotationProcessor,您的依赖项将不会打包在您的应用程序中,而是会在您的应用程序编译期间使用。
您不想@AnAnnotation在您的应用程序中打包编译器(处理 的代码),因为它只是用于正确准备您的应用程序代码(并且永远不会在您的应用程序运行时使用)。
可以这样想:
如果您要坐火车并且需要打印火车票,您不想在火车上随身携带打印机。打印机打印完车票后,您拿着车票上火车。打印机已经完成了它的工作。你可以离开它。
如果您标记一些代码,@AnAnnotation您只希望处理该注释的库完成其工作并消失。因此依赖的特殊类型 - annotationProcessor.
现在关于kapt. 这很简单。如果你想使用注解处理器在与科特林代码项目,只是使用kapt替代annotationProcessor。把它想象成annotationProcessorKotlin 支持。
一些库使用@Annotations不同。它们不会导致在编译时生成任何代码,但它们在运行时使用注解。
这些通常是基于反射的库,它们在运行时“查看”代码。就像 Retrofitinterface在您的应用程序执行时查看您的内容一样。
这就是为什么您@Annotations在应用程序中通常包含一个库,并且这些注释被打包在您的 apk 中用于运行时操作。
总结:
annotationProcessor和kapt关键字,用于帮助您指定如何在项目中使用依赖项。
如果您想引入一个使用注释并生成一些代码的库,请kapt不要使用已经完成其工作且永远不会再次使用的代码来“膨胀”您的 apk。
| 归档时间: |
|
| 查看次数: |
2273 次 |
| 最近记录: |