adb詳解及經常使用命令總結

前言

若是想要調試Android系統裏的應用,通常的方式是手動經過jwdp attach到指定應用的虛擬機進行調試,這種方式很費事費力。除此之外,想要拷貝修改文件,查看系統信息等等,都不是很方便,好在系統給咱們提供了一個很好的工具。shell

adb (Android Debug Bridge) 全稱安卓調試橋,是一個集調試應用、操做系統內文件、查看系統/應用相關信息於一身的開發工具。緩存

adb和安卓系統中的系統服務同樣,一樣採用了CS (client-server) 的架構。其內部主要包含三個部分: adb client、adb server和adbd。其中,bash

  • adb client: 運行於PC上,提供PC端運行的命令,好比咱們常常調用的adb shell。
  • adb server: 一樣運行於PC上,做爲後臺進程,負責client與手機/模擬器中的守護進程(daemon)的socket通訊,正如其名像一座橋同樣。
  • adbd (adb daemon): 運行於手機/模擬器,做爲系統啓動後的守護進程

調試相關

調試Application的onCreate中的斷點

若是咱們要調試的斷點很靠前,好比在Application的onCreate方法中,以致於不能足夠快的將進程設置爲debug模式,此時可使用adb命令解決該問題架構

在應用未啓動時,輸入如下命令後點擊app啓動app

adb shell am set-debug-app -w <your-app-package-name>
複製代碼

若是不想每次都運行該命令才能開始調試,能夠加上參數socket

adb shell am set-debug-app -w --persistent  <your-app-package-name>
複製代碼

使用此參數,記得調試完成後要關閉tcp

adb shell am clear-debug-app
複製代碼

無線鏈接

正由於adb這種cs架構,因此adb能夠進行無線調試,甚至咱們能夠在雲測平臺遠程調試雲測手機。工具

  1. 若是設備沒有開啓監聽端口,須要先有線鏈接usb,終端輸入要監聽的端口號,開啓adb server
adb tcpip <port> 例如5555
複製代碼
  1. 斷開有線鏈接
adb connect <device-ip-address>:<port>
複製代碼

有時候adb運行該命令會報鏈接錯誤,這個時候能夠嘗試如下命令開發工具

  1. 關閉PC端的adb server
adb kill-server
複製代碼
  1. 開啓PC端的adb server
adb start-server
複製代碼

5.Android端開啓adbd(須要root)ui

su

setprop service.adb.tcp.port  5555

start adbd // 若是失敗,則先進行stop adbd
複製代碼

應用相關

查看應用列表

adb shell pm list packages
複製代碼
參數 顯示列表
-f 顯示應用關聯的 apk 文件
-s 只顯示系統應用
-3 只顯示第三方應用

安裝應用

adb install <path_to_apk>
複製代碼
參數 含義
-r 容許覆蓋安裝
-d 容許降級覆蓋安裝
-g 授予全部運行時權限

卸載應用

adb uninstall [-k] <packagename>
複製代碼

參數-k:表示卸載應用但保留數據和緩存目錄

清除應用數據與緩存

adb shell pm clear <packagename>
複製代碼

此操做在應用內是沒法調用的,除非root.

若是僅想刪除應用數據而保留用戶數據,能夠嘗試使用(須要root), adb shell su -c "rm -rf /data/data/<app's package>/cache/*"

若是是debug包,可使用run-as命令在非root狀況下刪除數據, adb shell run-as <app's package> "rm -rf /data/data/<app's package>/cache/*"

查看前臺Activity

adb shell dumpsys activity top
複製代碼

此方法一般用於很方便地定位activity類的名稱,使用頻率很高

查看正在運行的 Services

adb shell dumpsys activity services [<packagename>]
複製代碼

查看應用詳細信息

adb shell dumpsys package <packagename>
複製代碼

設備IP 地址

adb shell ifconfig
複製代碼

查看cpu信息

adb shell cat /proc/cpuinfo
複製代碼

查看內存信息

adb shell cat /proc/meminfo
複製代碼

屏幕截圖

截圖並保存在當前文件目錄下,很是實用

adb exec-out screencap -p > sc.png
複製代碼

若是常常須要使到截圖功能,能夠考慮寫shell腳本,一個簡單的實現方式以下,

snap_screen() {
  //自定義要保存的圖片名稱
  if [ $# -eq 0 ]
  then
    //不輸入名稱,則默認值以下
    name="screenshot.png"
  else
    name="$1.png"
  fi
  adb shell screencap -p /sdcard/$name
  adb pull /sdcard/$name
  adb shell rm /sdcard/$name
  curr_dir=pwd
  echo "save to `pwd`/$name"
}
複製代碼

該腳本能夠保存在~/.zshrc(這裏推薦一下終端zsh,很是好用), 或~/.bashrc裏,source一下,下次就能夠很方便的使用了

錄製屏幕

錄製屏幕以 mp4 格式保存到 /sdcard:

adb shell screenrecord /sdcard/filename.mp4
複製代碼

須要中止時按 Ctrl-C,默認錄製時間和最長錄製時間都是 180 秒。

若是須要導出到電腦:

adb pull /sdcard/filename.mp4
複製代碼
相關文章
相關標籤/搜索