【版權申明】非商業目的可自由轉載
博文地址:https://blog.csdn.net/ShuSheng0007/article/details/92795576
出自:shusheng007
概述
當我們開發一個Android Annotation Processor的時候肯定需要調試我們的代碼,但是Annotation Processor的執行是與編譯並行執行的,所以如果我們只是按照通常的方式簡單的打一個斷點,代碼是不會中斷的。
調試方法
我們需要使用遠程調試,我們就以上篇文章秒懂Android註解處理器中開發的 AnnotationProcessorToy爲例來演示一下如何調試Annotation Processor。
1 配置remote configuration
在Android Studio中配置configuration ,如下圖所示
點擊+ 號,選擇Remote
給新建的configuration命名,例如命名爲APT. 複製藍色框中的參數,接下來會用到。
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
點擊apply 按鈕
2 配置gradle.properties 文件
在gradle.properties文件中添加如下兩行內容,第二行的值爲上一步藍框中的內容。
org.gradle.daemon=true
org.gradle.jvmargs= -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
3 運行調試
首先選擇選擇第一步創建的 configuration APT,然後點擊debug按鈕。
如果一切正常的話,在Console窗口會輸出如下內容,表示遠程進程已經啓動了
在processor代碼中要調試的地方打上斷點,然後切換到configuration app ,然後點擊debug按鈕即可
note:注意,只有被註解標記的類內容有改變時註解處理器纔會執行,所以如果發現斷點沒有中斷,記得改一下源代碼。
總結
Annotation Processor的調試主要還是使用了remote調試的技術,Android Stuido的debugger 是運行在自己的進程中,而Annotation Processor 運行在另一個進程中,我們就是通過Remote Debug使得 debugger 可以調試運行在另一個進程中的程序。