美文网首页
编译时注解处理器学习实践

编译时注解处理器学习实践

作者: 慎独静思 | 来源:发表于2019-10-10 22:19 被阅读0次

本文是一篇实践文章,主要记录学习注解处理器的实践过程,以及在这个过程中遇到的问题。

目录:

1、创建注解;

2、创建注解处理器;

3、注册注解处理器;

4、应用注解;

5、遇到的问题;


1、创建注解

首先,在项目中新创建一个”Java Library“ module,专门用来存放注解,取名为annotation。

创建module

在module中定义一个编译时注解:

编译时注解BindView

2、创建注解处理器

另创建一个”Java Library“ module processor用来存放注解处理器,并让它依赖刚才创建的annotation module。

附上processor module的gradle配置

processor

其中的javapoet是用来生成Java文件的SDK。

编写一个注解处理器类ClassProcessor,使它继承AbstractProcessor。

ClassProcessor

这里使用注解SupportedAnnotationTypes,SupportedSourceVersion来替代了getSupportedAnnotationTypes和getSupportedSourceVersion这两个方法,并且在init中进行了简单的初始化。

process

在process方法中进行注解的处理操作,这里通过javapoet生成了一个Java文件。

3、注册注解处理器

1)在processor库的main目录下新建 resources资源文件夹;

2)在resources中再建立META-INF文件夹;

3)在META-INF下再建立services文件夹;

4)在services中新建javax.annotation.processing.Processor文件;

5)这个文件的内容就是刚刚新建的注解处理器的名称,

比如此处是:com.kaikaili.processor.ClassProcessor

4、应用注解

annotationProcessor project(':processor')

implementation project(':annotation')

至此,注解处理器实践完成。

5、遇到的问题

Android Studio 版本号:3.5;Gradle版本号:5.4.1;Android Gradle插件版本:3.5.0

1)运行之后生产的文件不在 generated/apt文件夹下,而在generated/ap_generated_sources下

generated

2)Google开源的AutoService库不能正常生产Processor文件,导致注解处理失败,最终采用手动创建的方式。

3)META-INF/services 或 META-INF.services不是一个文件夹的名称,是两个文件夹的名称。

4)Gradle console在新版的Android studio应该是去掉了,gradle的输出信息,可以直接在BuildOutput中查看。

BuildOutput

5)Java Source Version使用1.7报错,统一改成了1.8

Done

相关文章

  • 拓展篇:注解处理器最佳实践

    在基础篇中,我们介绍了什么是注解以及如何开发注解处理器,今天就来说说在开发编译时注解处理器中的那些最佳实践。 什么...

  • 编译时注解处理器学习实践

    本文是一篇实践文章,主要记录学习注解处理器的实践过程,以及在这个过程中遇到的问题。 目录: 1、创建注解; 2、创...

  • 编译时注解器初探(一)

    编译时注解器初探(一) 注解处理器 (Annotation Processor) 编译时注解和运行时注解定义的方式...

  • 注解处理器的编写(Kotlin)

    注解处理器的的作用 注解处理器可以在编译时对@Retention值为AnnotationRetention.BIN...

  • Java编译时注解(RetentionPolicy.CLASS)

    说到编译时注解(RetentionPolicy.CLASS)都要和注解处理器(Annotation Process...

  • APT

    APT 简介   APT 就是注解处理器,他是 javac 的一个工具,用来在编译时扫描和处理注解。一个注解处理器...

  • Android使用注解处理器自动生成代码(了解)

    注解处理器(Annotation Processor 是javac的一个工具,它是在编译时扫描注解和处理注解(An...

  • Lombok实现原理

    Java插入式注解处理器 3. 实现原理 Lombok 的核心工作原理就是编译时注解(作用于 javac 编译的过...

  • Android 编译时注解实现

    编译时注解:在编译的时候,通过注解处理器处理对应的注解。1.新建一个项目,然后在新建两个Java Module(a...

  • 注解学习笔记

    什么是注解注解分类注解作用分类 元注解 Java内置注解 自定义注解自定义注解实现及使用编译时注解注解处理器注解处...

网友评论

      本文标题:编译时注解处理器学习实践

      本文链接:https://www.haomeiwen.com/subject/tcgipctx.html