假設我們這裏是開發一個按照如下方式依賴的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類型配置
簡單修改一下名稱,同時可以選擇Use module classpath爲插件所在的模塊,其它不用修改,點擊OK保存。
選擇配置爲剛纔新建的plugin,點擊工具欄中的調試按鈕即可連接調試器,之後gradle編譯任務會繼續運行,在插件代碼中的斷點也可以正常停住了。