背景
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
public boolean process(Set<? extends TypeElement> set, RoundEnvironment roundEnv) {
复制代码
APT代码固定模板ProcessingEnvironment是什么? TypeElement是什么? RoundEnvironment又是什么?
解决办法
debug一下代码在调试窗口看看对象里面装的什么值. 步骤如下:
1.打开APT调试模式
org.gradle.jvmargs=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
-Dorg.gradle.debug=true
复制代码
2.创建一个APT调试类型
怎么创建可以按照这里来 www.jianshu.com/p/4fef2ad51…
3.调试
- 执行下clean.保证APT代码没有生成
- 打上断点,执行apt调试的debug. 这里没有断点状态也没关系,是IDE的原因,只要连接到 Connected to the target VM, address: 'localhost:5005', transport: 'socket'即可.
总结
在Debug的时候熟悉对象含义,然后把代码拼凑出来. 注意点:
- 调试完成后一定把调试开关关闭了,即把全局的gradle.properties修改回来. 否则会影响正常的开发.
- 调试的时候如果出现错误 Error running 'Remote Debugger': Unable to open debugger port (localhost:5005): java.net.ConnectException. 把5005端口占用的进程杀掉或者重启下IDE.
- 不要多个项目同时调试.