gradle plugin調試

假設我們這裏是開發一個按照如下方式依賴的annotationProcessor

// app模塊build.gradle
annotationProcessor project(":router-compiler")

調試該插件需要做兩件事情

  • 以debug方式啓動gradle task
  • 連接到debugger

調試模式啓動gradle task

在終端中按照如下方式啓動即可,正常情況下編譯會停住,等待debugger連接

./gradlew assembleDebug -Dorg.gradle.daemon=false -Dorg.gradle.debug=true

此時可能會出現如下錯誤,提示端口被佔用

Please read the following process output to find out more:
-----------------------
ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]

解決方式是結束佔用端口的進程,同時可以停止其它在運行的gradle deamon以避免干擾

[wangxue@wangxue-mac] Router$ lsof -i:5005
COMMAND  PID    USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
java    4354 wangxue    4u  IPv4 0xc7ff8f48c51926d      0t0  TCP *:avt-profile-2 (LISTEN)
[wangxue@wangxue-mac] Router$ 
[wangxue@wangxue-mac] Router$ kill 4354
[wangxue@wangxue-mac] Router$ ./gradlew --stop
Stopping Daemon(s)
1 Daemon stopped

連接調試器

打開Edit Configurations窗口,添加remote類型配置
Edit Configurations
簡單修改一下名稱,同時可以選擇Use module classpath爲插件所在的模塊,其它不用修改,點擊OK保存。

選擇配置爲剛纔新建的plugin,點擊工具欄中的調試按鈕即可連接調試器,之後gradle編譯任務會繼續運行,在插件代碼中的斷點也可以正常停住了。
連接到調試器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章