如何debug自定义AbstractProcessor

作为一个Android / Java开发人员,你可能会使用自定义注解来做一些代码生成的工作。Java API已经提供了扫描源码并解析注解的框架,你可以继承AbstractProcessor类来提供实现自己的解析注解逻辑。

在开发时,你可能对如何调试自己的AbstractProcessor有些一筹莫展。本文将介绍如何使用Android Studio和gradle来调试你自己的AbstractProcessor。


第一步,在你代码中对init()方法或process()方法设置代码断点!

设置断点

第二步,设置gradle daemon端口和JVM参数。把下面两行加入到你的gradle.properties文件。
我的gradle.properties文件在哪里?

org.gradle.daemon=true
org.gradle.jvmargs=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

在命令行中运行gradle daemon来启动守护线程。

gradle --daemon

第三步,在Android Studio建立Remote Debugger并运行它。

Remote Debugger 配置

我们在这里使用默认设置,IP:localhost,端口:5005。一旦你完成并运行它,那它就会连接到daemon线程中了。

最后我们用gradle命令来运行构建。

gradle clean assembleDebug

既然我们已经启动了守护线程,Remote Debugger将触发断点并挂起构建运行。完成!


感谢以下文章!

  1. Debugging an annotation processor in every IDE
  2. Debug an Android annotation processor with gradle and IntelliJ (or Eclipse)
  3. Annotation实战【自定义AbstractProcessor】

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 137,833评论 20 589
  • 编译时注解处理 若希望对编译时的注解进行处理需要做 自定义类集成自AbstractProcessor 重写其中的p...
    生活理当如此阅读 6,068评论 3 16
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 86,841评论 14 122
  • 城区交警在搞行动,整治无牌无证的摩托车电动车!一不小心,我撞上了枪口,在离家不到1公里的十字路口等红灯时,被交警逮...
    ld熊壮壮阅读 57评论 0 0
  • 作者:梁山 古老的东方有条龙,它的名字叫长城。 儿时的我贪玩,常常和玩伴结伴而行去挖野菜喂猪。离家不远有条城墙圪梁...
    长城脚下人家福遇缘阅读 58评论 0 0