- 使用ASM在編譯期修改字節碼來完成各類功能(統計方法耗時、全埋點統計...),就須要開發Gradle插件。開發插件中遇到問題排查使用日誌輸出效率過低了,能斷點調試的話就更好了。其實已經有不少文章寫了調試插件的方法,可是本身照着他們的步驟下來仍是遇到一些問題,把這些問題記錄下來方便你們少走彎路。
- Android Studio版本是3.5.2,Gradle版本是3.5.1
- 點擊【Run】->【Edit Configurations...】:
- 而後點擊左上角的【+】,選擇【Remote】:
- 名字隨便起,把命令行參數複製下來,【Use module classpath】選擇要調試的插件,其餘默認便可,而後點擊【OK】:
這樣服務端就搞好了,稍後咱們須要配置客戶端調試器讓其鏈接過來,就能夠調試了
- 在目標項目新建gradle任務並鏈接到服務端
- 在目標項目(即引入插件的那個項目),打開gradle目錄,啓動模塊通常都是app,因此咱們展開到【:app】->【Tasks】右擊【build】選擇create
5. 在打開的界面把第3步複製下來的內容粘貼到【VM options】,而且將suspend=n改成suspend=y而後點擊【OK】:
6. 【:app】->【Tasks】->【Run Configgurations】會生成一個任務,最終在最終就是下邊這個樣子:
7. 如今能夠開始調試了,在插件代碼裏面須要調試的地方打好斷點,雙擊咱們新建的gradle任務:
- 將工具欄的運行選項改爲咱們新建的遠程調試那個選項,沒有取名字的話默認就是【unnamed】,而後點擊啓動調試的圖標:
啓動成功會有以下輸出
- 目標項目的調試器很快就會鏈接到咱們創建的服務端並自動跳轉,遇到斷點則會斷下來:
問題
- 斷點只能進入Plugin的apply方法,不能進入Transform的transform方法,clean項目再執行上面步驟七、8