1 编译期注解调试步骤

编译普通程序,只需要直接点击“app”就能够完成编译,调试更是简单,直接点击debug build或者attach to process 就可以开始调试。
注解处理器Processor在编译期执行的,此时还没有app的进程,那么如何把调试器attach到编译期间的进程上,只能通过远程调试,远程调试可以把调试器attach到任意时期的进程上。

1.1新建远程调试

如下图所示,选择Edit Configurations …

java注解在编译时 java编译期注解处理_java注解在编译时


选择Remote,所有配置不用修改,只需要给Romote起一个名字

java注解在编译时 java编译期注解处理_java_02

java注解在编译时 java编译期注解处理_java_03


复制得到的配置:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005,后面修改task时会用到

1.2 配置compileDebugJavaWithJavac 任务

找到app下的task任务compileDebugJavaWithJavac(因为编译时会先运行这个任务),右键选择create ‘CanvasDrawDemo:app’

java注解在编译时 java编译期注解处理_java_04


把前面复制的配置放在VM options下,修改suspend= n为suspend=y,让任务一直等待进程。

java注解在编译时 java编译期注解处理_调试器_05

1.3 如何开始调试

注意:compileDebugJavaWithJavac命令有一个特性,如果注解所在文件不发生任何改变的话,编译时注解处理器只会运行一遍,所以运行过一次之后,如果不clean project,会直接build完成,这就是processor生成文件时要看到结果需要每次点击rebuild project。
所以开始调试前,执行clean project。

别忘了在processor中设置断点

选择配置了参数的compileDebugJavaWithJavac运行,可以在Edit Configurations 下修改删除。

java注解在编译时 java编译期注解处理_远程调试_06


选择新建的Romote 命令(processor_debug),点击运行Debug ‘processor_debug’(哪个debug图标)。

java注解在编译时 java编译期注解处理_java_07


进入调试:

java注解在编译时 java编译期注解处理_调试器_08


编译时注解学习一之 Element元素编译时注解学习二之 注解处理器初探AbstractProcessor

编译时注解学习三之 注解处理器AbstractProcessor工具和Element属性简述

编译期注解学习四 简单的view注入框架

编译期注解学习五 - ElementKind,TypeKind,不同Element类型判断

编译期注解学习六- 生成java文件javapoet

编译期注解学习七-如何进行调试

编译时注解学习八 -模板文件读取