APT Android代码怎么调试

3,186 阅读1分钟

背景

    @Override
    public synchronized void init(ProcessingEnvironment processingEnv) {
        
    public boolean process(Set<? extends TypeElement> set, RoundEnvironment roundEnv) {
    

APT代码固定模板ProcessingEnvironment是什么? TypeElement是什么? RoundEnvironment又是什么?

解决办法

debug一下代码在调试窗口看看对象里面装的什么值. 步骤如下:

1.打开APT调试模式

切换到Android目录下,编译全局的gradle.properties文件.增加以下代码:

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.调试

  1. 执行下clean.保证APT代码没有生成
  2. 打上断点,执行apt调试的debug. 这里没有断点状态也没关系,是IDE的原因,只要连接到 Connected to the target VM, address: 'localhost:5005', transport: 'socket'即可.

3. 执行宿主的build构建.

4. 重复调试. 如果已经调试过一遍会生成APT自动构造的代码,下次就不会进入调试,所以每次debug都需要clean,clean执行顺序在debug前后都可以.

总结

在Debug的时候熟悉对象含义,然后把代码拼凑出来. 注意点:

  1. 调试完成后一定把调试开关关闭了,即把全局的gradle.properties修改回来. 否则会影响正常的开发.
  2. 调试的时候如果出现错误 Error running 'Remote Debugger': Unable to open debugger port (localhost:5005): java.net.ConnectException. 把5005端口占用的进程杀掉或者重启下IDE.
  3. 不要多个项目同时调试.