版權聲明:shell
本帳號發佈文章均來自公衆號,承香墨影(cxmyDev),版權歸承香墨影全部。app
未經容許,不得轉載。工具
在實際開發過程當中,若是碰到 Bug ,必然免不了須要打印輸出一些 Log 信息,或者直接進入 Debug 模式進行調試。而在 Android Studio 中,其實也提供了很是便利的進入 Debug 模式的方法。可是有些時候也不太方便,例如須要從新運行一下,若是項目比較大的話,可能會致使編譯運行的時間佔據了咱們查找 Bug 的大部分時間。命令行
本文就這個問題,介紹一下在須要的時候,如何快速的進入 Debug 調試狀態。線程
在 Android Studio 中,其實已經提供了很是便利的 Debug 的方式。debug
而 Attach debugger to Android Process 是一個很是方便的功能,正如它的英文描述,它能夠選擇當前連接的設備上,處於運行狀態下,而且能夠被 Debug 的進程,將它掛上 Debug 模式。3d
雖然 Attach debugger to Android Process 很是的方便好用,能夠節約咱們再一次 Debug 運行的時間,而且能夠直接掛載一個 Debug 狀態下的線程。調試
可是它也是有缺陷的:code
若是須要調試的斷點,在運行的時機比較靠前的話,例如:調試 Application.onCreate()
的代碼,咱們就無法使用這種 Attach 的方式,掛載一個進程進行調試了。cdn
而一般來講,咱們查找 Bug 常常須要屢次 Debug 來定位問題。而若是使用 Debug 按鈕來運行調試 App 的話,也會很是的耽誤時間。
那麼有沒有辦法讓咱們能及時的使用 Attach debugger to Android Process 的方式掛載上調試進程呢?
還記得當咱們使用 Debug Run 調試 App 的時候,會出現一個 Waiting For Debugger 的對話框,這個對話框就是一個等待調試App 進程被掛載的等待對話。
其實 adb 的 am 命令中,就有設置某個 App 以 Debug 的方式運行,命令也很是的簡單。
adb shell am set-debug-app -w <package_name>
其中:
這樣,當咱們再次運行
而這種方式是一次性的,再次運行就會恢復以前的狀態。可是就像前面說的,常常須要重複屢次的 Debug 才能定位問題而且解決問題,那麼屢次調試則在所不免,若是每次都須要執行這個命令,明顯更麻煩了,有點得不償失。
其實 set-debug-app 還提供了一個 —persistent
的參數,設置一個須要持續調試的 App。
完整的命令以下:
adb shell am set-debug-app -w --persistent <package_name>
當使用 —persistent
標記以後,這個 App 就會一直被處於調試模式來運行,因此每次啓動就會彈出 Waiting For Debugger 的窗口等待咱們,哪怕咱們卸載從新安裝,也不會改變。固然若是咱們安裝一個 Release 簽名的同名 App ,必然不會處於Debug模式。
若是添加了 —persistent
參數以後,調試完成以後,還須要使用 clear-debug-app 來清理被標記爲 debug 的 App。
完整的命令以下:
adb shell am clear-debug-app
而這些,都是能夠在 am 的文檔中找到答案的,am 其實提供了不少很是好用的工具,方便咱們使用。
若是你以爲使用 命令行 的工具,仍是很是的不方便,那麼其實也是有圖形話界面工具給咱們使用的。
咱們若是須要調試設備,都須要在開發者選項中,開啓 USB 調試,這是常識。而開發者選項中,提供了設置某個 App 爲調試應用的選項。
進入 開發者選項,找到 『選擇調試應用』,在其中找到咱們須要調試的 App,而後再開啓『等待調試器』。
am set-debug-app
的方式是同樣的。固然,在使用完成以後,還須要將『
等待調試器』的開關關閉,否者會一直等待掛載。
最後,我想說,當你在作重複的事情的時候,做爲一開發者 ,你須要思考若是跟快捷的完成這項工做,而不是一味的作重複的工做。