如何debug自定義AbstractProcessor

作為一個(gè)Android / Java開發(fā)人員,你可能會(huì)使用自定義注解來做一些代碼生成的工作。Java API已經(jīng)提供了掃描源碼并解析注解的框架,你可以繼承AbstractProcessor類來提供實(shí)現(xiàn)自己的解析注解邏輯。

在開發(fā)時(shí),你可能對(duì)如何調(diào)試自己的AbstractProcessor有些一籌莫展。本文將介紹如何使用Android Studio和gradle來調(diào)試你自己的AbstractProcessor。


第一步,在你代碼中對(duì)init()方法或process()方法設(shè)置代碼斷點(diǎn)!

設(shè)置斷點(diǎn)

第二步,設(shè)置gradle daemon端口和JVM參數(shù)。把下面兩行加入到你的gradle.properties文件。
我的gradle.properties文件在哪里?

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

在命令行中運(yùn)行g(shù)radle daemon來啟動(dòng)守護(hù)線程。

gradle --daemon

第三步,在Android Studio建立Remote Debugger并運(yùn)行它。

Remote Debugger 配置

我們?cè)谶@里使用默認(rèn)設(shè)置,IP:localhost,端口:5005。一旦你完成并運(yùn)行它,那它就會(huì)連接到daemon線程中了。

最后我們用gradle命令來運(yùn)行構(gòu)建。

gradle clean assembleDebug

既然我們已經(jīng)啟動(dòng)了守護(hù)線程,Remote Debugger將觸發(fā)斷點(diǎn)并掛起構(gòu)建運(yùn)行。完成!


感謝以下文章!

  1. Debugging an annotation processor in every IDE
  2. Debug an Android annotation processor with gradle and IntelliJ (or Eclipse)
  3. Annotation實(shí)戰(zhàn)【自定義AbstractProcessor】
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,523評(píng)論 25 708
  • 編譯時(shí)注解處理 若希望對(duì)編譯時(shí)的注解進(jìn)行處理需要做 自定義類集成自AbstractProcessor 重寫其中的p...
    生活理當(dāng)如此閱讀 8,991評(píng)論 3 18
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評(píng)論 19 139
  • 城區(qū)交警在搞行動(dòng),整治無牌無證的摩托車電動(dòng)車!一不小心,我撞上了槍口,在離家不到1公里的十字路口等紅燈時(shí),被交警逮...
    ld熊壯壯閱讀 270評(píng)論 0 0
  • 作者:梁山 古老的東方有條龍,它的名字叫長(zhǎng)城。 兒時(shí)的我貪玩,常常和玩伴結(jié)伴而行去挖野菜喂豬。離家不遠(yuǎn)有條城墻圪梁...
    長(zhǎng)城腳下人家福遇緣閱讀 604評(píng)論 0 0