你應該知道的Android調試神器adb
最近跟著一個前輩在做TV應用,因為不能通過usb連接調試,接觸到了adb,突然間覺得自己似乎發現了另外一個世界,借助adb shell命令對應用進行調試,簡直方便得不行。更重要的是,這是命令行操作啊!!!裝逼神器啊,還沒學的趕緊來試試看吧。
效果
老規矩,先上幾張截圖看看效果,這是查看xml文件數據,和sqlite數據庫數據的效果
介紹
adb,網上介紹其實很多,就是用來對安卓系統進行一些命令操作的工具。如果你的應用需要經常查看 sharePreference文件數據 、 Sqlite 數據庫數據 ,以及 本地的各種數據 的話,那么使用adb將會非常方便。
如果你需要從電腦上發送一些文件到手機里,或者從手機獲取一些文件到電腦上(比如視頻之類的應用,需要經常把應用存在手機里的視頻文件發送到電腦),那么借助adb也可以很方便實現。
如果你想做一些TV應用的話,那么就應該要學學ADB了,學學如何通過wifi連接調試,如果pull,push文件等等了。
使用
好了,現在就來看看一些常用的命令了,adb 的命令其實很多,不用特意去記,平常要用時上網搜下,等用熟悉了,自然就把一些常用的命令給記住了。下面,稍微介紹一些我經常使用到的命令:
基本命令:ls、cd、cat、rm、cp、mkdir
這些命令是linux系統上的一些基本命令,至少要對 ls 、 cd 、 cat 這幾個命令熟悉點,才能很流暢的使用adb工具,如果你還不熟悉,建議先去了解下這幾個命令吧。
①adb shell
這個是進入手機shell操作的一個命令。通常情況下,你調試用的模擬器或者手機通過usb連接電腦后,在win上通過 Ctrl + R ,輸入 cmd ,在dos窗口內執行該命令即可進入手機的shell操作。
如果你連接當前電腦的手機不止一部時,這時就需要借助參數來進行選擇指定的設備了。如下圖:
②借助ls、cd命令進入應用數據地址:/data/data/{包名如:coder.dasu.meizi}/
該目錄下就是存放該應用的 xml數據,cache數據,file數據,以及sqlite數據庫數據了,如下:
③cat命令查看SharePreference的xml數據
xml中經常保存一些應用的配置數據,比如用戶是否首次啟動app,用戶賬戶,用戶對應用操作的一些設置啊,比如關閉消息推送等等。
這些數據在開發時,都可以通過log方式打印出來,查看效果是否正確。但有時,如果想要查看較多的xml數據時,又懶得一個個的敲代碼,或者log信息太雜,忘記以前寫的過濾條件時,這時就可以借助adb來實現了。
④神器: sqlite3 * .db命令查看數據庫
以上介紹的一些功能其實就算不借助adb,也可以使用打印log等方式實現。但如果我們開發過程中,需要經常查看一些數據庫內的數據時,也可以使用ddms,把db文件導出來借助工具查看,但這樣總會麻煩了點,需要每次都進行導出db文件。所以,這時候,如果借助 sqlite3 這個命令,將會非常方便。
執行完 sqlite3 meizi.db 后,會進入一個sqlite命令狀態,在這里可以使用sql語言來進行查詢,也可以使用.help來查看sqlite3提供的一些快速命令.
如,執行 .table 可以查看當前數據庫所有的表,執行 .schema 可以查看創建數據庫的sql命令
上面那圖中有兩張表,我們看看USER表中有什么數據,可以使用sql命令查詢
ps:查詢結果默認是一個記錄一行的,也可以設置成list、或上圖等各種顯示方式,通過 .mode .header 命令來執行,這些命令都可以通過 .help 來查看說明。
雖然需要執行sql命令才能查詢,但其實也就 select 一下,并不會很復雜,而且還可以借機多接觸一下sql語言,學習一下。更重要的是,這很裝逼,有沒有O(∩_∩)O。不管在同學面前操作,還是操作給不懂這個的老板看,都會讓對方覺得你很吊的。
哈哈,反正我是喜歡上用這個工具就是了,因為最近開發負責的部分很多跟數據庫操作相關,而且還經常出現一些bug,需要經常查看數據庫內容來定位以及解決bug,所以這個用著是特別方便,相比于以前用導出db文件的方式來的話。
如果你也有調試數據庫這方面的需求,建議你也可以使用這個工具試試看。
其他功能
我使用adb工具更多的是用它來查看應用的一些數據。但其實,它還是有很多其他實用的功能的。
wifi連接調試 adb connect {ip}
如果你不想用usb連接調試,可以選擇使用adb 連接調試,命令是 adb connect {ip} ,需要在同一個局域網內。這個功能也比較實用,但首次連接時,需要另外一些配置,建議可以網上搜索下 adb wifi連接手機 等關鍵字看看。
屏幕截屏 screencap -p {圖片存儲地址}
這個其實直接通過手機截屏再發送到電腦就可以了,但我開發的是TV應用,在盒子上沒法截屏,所以這個命令對我來說還是較實用的。
獲取或推送文件 adb pull/push
這個也挺實用的,獲取手機指定位置的文件到電腦上,或者從電腦發送文件到手機上
如果上面有什么錯誤,歡迎指正一下。如果你還知道其他更實用的功能,也歡迎告知一下,題主也是個新手,一起好好學習學習。
來自:http://www.jianshu.com/p/a6dcdb2c74c3