adb常用命令1

一、adb介紹與環境配置

adb:Android調試橋接Android Debug Bridge,是一個C/S架構的命令行工具

1.adb組成:


  • 客戶端(Client):可以通過它對android應用進行安裝、卸載及調試
  • 服務(Server):管理客戶端到android設備上adb後臺進程的連接
  • 守護進程(adb daemon):運行在android設備上的adb後臺進程

     

 

2.下載安裝:

 


  • 下載Android SDK,點擊Android官網 下載
  • 環境配置:將tools和platform-tools目錄配置到系統變量PATH(如何配置詳情請參考http://blog.csdn.net/qq_26967883/article/details/49337043的android配置環境)
  • 驗證是否配置成功:在cmd窗口輸入adb

     

 

3.adb命令格式

adb[-e|-d|-s<設備序列號>]<子命令>
參數   說明  
-e   只運行在模擬器  
-s   運行指定的設備  
-help   列出adb幫助文件  
-version   列出adb版本  
  • 例如:

使用adb devices命令後發現有兩個設備一個模擬器,一個真機


  1. 使用adb -e shell命令進入到模擬器中
  2. 使用adb -d shell命令進入到真機中
  3. 使用adb -s <設備ID> shell命令進入到指定設備中

     

List of devices attached

192.168.213.101:5555device

//上面那串數字就是設備ID

 

二、adb基本命令

1.文件傳輸與安裝命令

子命令 參數 說明
devices [-l] 列出所有已經連接的設備,有三種狀態:
device/offline/device not found
push < local > < remote > 複製一個文件或者目錄到設備中
pull < remote > < local > 從手機複製文件到本地
install [-l   -r   -t   -s -d]< file > 安裝apk
-l:表示應用爲受限應用
-r:替換已經存在的應用
-t:運行安裝測試包
-s:安裝到SD卡中
-d:允許安裝到sd卡中
install-multiple [-l  -r  -t  -s  -d  -p]< file... > 批量安裝
-p:部分應用程序安裝
uninstall [-k]< package > -k:保持data和cache下的文件

2.獲取信息命令

子命令 參數 說明
wait-for-device 等待設備連接(設備未連接之前使用)
start-server 開啓adb服務
kill-server 殺掉adb服務
get-state 獲取adb服務狀態
offline/bootloader/device
get-serialno 獲取SN號
get-devpath 獲取device-path
status-window 連續打印指定設備的設備狀態

3.Log與重啓相關命令

子命令 參數 說明
bugreport 打印當前的dumpsys、sumpstate、locat的輸出
logcat 命令較多 輸出android系統日誌
shell 命令較多 進入遠程shell端
remount 重新掛載系統分區,使系統分區重新可寫(需要root權限)
reboot [bootloader | recovery] 重啓
Bootloader:重啓設備到bootloader狀態
recovery:重啓設備到recovery狀態
reboot-bootloader 重啓到bootloader
root 重新啓動adbd獲取root身份
usb 重新啓動adbd來監聽USB
tcpip < port > 重新啓動adbd來監聽指定TCP端口
  • 針對Logcat相關命令補充

我本人是做測試的,所以對於應用的log這塊比較看重,因此總結了一些指向性的實例:


//使用該命令可以查看指定應用的實時日誌
adb logcat | find "packageName"
//使用該命令後指定的應用的相關日誌會導出到相應位置
adb logcat | find "packageName" >F:\test\test.txt

4.實例演示


1)devices
//列出已連接的設備
adb devices
//列出已連接的設備,並顯示狀態
adb devices -l
2)push
//將C盤目錄下的apktool.log複製到設備的/mnt/sdcard/目錄中

adb push C:\apktool.log /mnt/sdcard/
//將C盤目錄下的apktool.log複製到虛擬設備的/mnt/sdcard/目錄中
adb -e push C:\apktool.log /mnt/sdcard/
3)pull
//查看模擬器設備/data/app目錄下的所有文件
adb -e shell ls /data/app
//將模擬器設備/data/app目錄下的test.txt文件複製到本地c盤根目錄
adb -e pull /data/app/test.txt c:\
  4)remount、pull、root

//在模擬器設備中重新掛載系統分區,使系統分區重新可寫(需要root權限)
adb -e remount
//重新獲取一下模擬器設備的root身份
adb -e root
//複製I:\com.android.cts.uiautomator.apk到/system/app中
adb push I:\com.android.cts.uiautomator.apk /system/app
5)install、uninstall
//將本地.apk文件安裝到模擬器設備中
adb -e install I:\com.android.cts.uiautomator.apk
//替換掉模擬器設備中的.apk文件然後重新安裝一次
adb -e install -r I:\com.android.cts.uiautomator.apk
//卸載包名爲com.android.cts.uiautomator的應用,但是保留保持data和cache下的文件(可以使用"adb -e shell pm list packages "命令查看包名)
adb -e uninstall -k com.android.cts.uiautomator
//完全卸載包名爲com.android.cts.uiautomator的應用。用到這個位置的話是刪除data和cache下的文件的用意
adb -e uninstall com.android.cts.uiautomator
  
6)servers
//殺掉adb服務
adb kill-server
//啓動adb服務
adb start-server
//獲取真機的連接狀態
adb -d  get-state
//獲取真機SN號
adb -d get-serialno
//獲取真機的path
adb -d get-devpath
//不斷獲取真機的連接狀態
adb -d status-window
//會列出許多真機的當前信息
adb -d bugreport
//重啓真機
adb -d reboot
//重啓USB,相當於重新插了一下USB設備的效果
adb -d usb
//在不插入設備的情況下輸入該命令剛開始會提示找不到設備,但那是等插入設備後就可以正常安裝了
adb -d install -r I:\com.android.cts.uiautomator.apk
//他會先等待你連接上設備後再進行替換安裝
adb -d wait-for-device install -r I:\com.android.cts.uiautomator.apk
//等待設備連接後輸出日誌
adb logcat wait-for-device
     

三、adb備份與恢復命令

子命令 參數 說明
backup 將應用的數據文件寫入到指定的文件,在不指定-f輸出目錄的情況下,保持在當前目錄的"backup.ab"
[-f < file >] 指定備份目錄
[-apk | -noapk] 是否備份apk文件,默認是noapk
[-obb | -noobb] 是否備份obb數據包,默認是noobb
[-shared | -noshared] 是否備份SD卡共享內容,默認是noshared
[-all] 備份所有已安裝的應用
[-system | -nosystem] 是否備份系統應用,-all默認是包括系統應用
< packages... > 備份指定的應用列表
restore < file > 將備份文件恢復到手機中
  • 例如:

//數據備份在你本地的當前目錄,比如:"C:\Users\test>adb -apk -all"裏的C:\Users\test路徑就是當前目錄
adb -apk -all 
//將當前目錄的備份文件恢復到設備
adb shell -restore back.ab 

四、adb重定向端口命令

1.端口映射概念

比如將PC上的端口(1314)重定向到設備的端口(5200)上,這樣所有發往PC端口(1314)的數據都會被轉發到設備的端口(5200)上。這個機制可以實現遠程控制Android設備應用。

2.端口映射命令

子命令 參數 說明
forward --list 列出所有套接字連接列表
forward < local > < remote > 重定向端口
forward --no-rebind < local > < remote > 重定向端口,例如local端口已經被佔用則失敗
forward --remove < local > 移除本地已經連接的套接字
forward --remove-all 移除本地已經連接的所有套接字
reverse --list 列出所有連接設備反向的套接字
reverse < remove > < local > 反向連接套接字
reverse --norebind < remove > < local > 反向連接,加入端口已經被佔用則連接失敗
reverse --remove < remove > 刪除一個特定的逆轉套接字連接
reverse --remove-all 刪除所有逆轉的套接字連接設備
  • 注:

a. foward系列的命令是PC端發出的
b. reverse系列的命令是設備發出的

3.實例:

  • 正向連接的例子:

//給設備上的monkey開闢端口1080
adb shell monkey --port 1080
//PC上的1080端口映射到設備上的1080端口(需要再打開一個新的cmd窗口
adb forward tcp:1080 tcp1080
//連接1080端口,連接好後會彈出一個新的窗口,此時可以發送一些按鍵消息比如"press 3"使用完畢關掉該窗口
telent localgost 1080
//查看剛剛映射的端口是否還在
   adb forward --list
//移除所有映射的端口
adb forward --remove-all
    
  • 說明:由於反向連接貌似比較複雜,並且我個人在工作中暫時沒有需求,就沒有進行深入研究,有興趣的朋友可以自己去看看

五、adb無線連接與文件同步

無線連接可以實現不用USB進行調試應用,文件同步可將修改的文件自動快速的push到手機對應的目錄中

1.相關命令

子命令 參數 說明
connect < host >[:< port >] 通過TCP/IP連接到設備
如果沒有指定端口號則使用5555作爲默認端口
disconnect < host >[:< port >] 斷開TCP/IP設備
如果沒有指定端口號則使用5555作爲默認端口
使用這個命令沒有附加參數,將斷開所有連接的TCP/IP設備
sync [< directory >] 只要文件發生改變時就會自動從主機拷貝到設備需要指定環境變量ANDROID_PRODUCT_OUT爲同步目錄

2.無線連接步驟

  1. 將安卓設備root掉
  2. 手機端安裝wireless adb工具(一個命令行工具可以在手中使用命令)
  3. PC和Android設備連接到同一網絡,手機上查看android設備IP可以使用命令"netcfg"
  4. PC端輸入命令`adb connect IP地址:端口`(默認端口爲5555)來通過TCP/IP連接到設備
 
adb connect 192.168.1.104:5555
//這裏的地址就是在手機端使用"netcfg"命令後顯示出來的IP,5555爲默認端口
//然後就可以使用adb的其他命令對手機進行操作了

3.文件同步步驟

  • sync如果沒有指定更新目錄,則會自動更新這些目錄"system"、"vendor"、"data"
  1. 在PC上新建一個目錄,目錄中新建三個文件夾分別命名爲"system"、"vendor"、"data"
  2. 爲新建目錄(就是三個新建文件夾的父文件夾所在的位置)設置系統環境變量ANDROID_PRODUCT_OUT
  3. 使用命令 `adb sync` 進行同步
  • 注意
  1. 如果不是特別常用文件同步功能的話可以設置臨時環境變量,就是在cmd窗口設置臨時環境變量,只能在當前窗口可用,窗口關閉則變量失效
  2. 臨時環境變量設置方式,打開一個cmd窗口然後在命令行輸入`set ANDROID_PRODUCT_OUT=I:\sync`其實sync爲父文件夾的名子,這樣在本cmd窗口內就可以使用該變量了,關閉本cmd窗口則臨時變量消失
  3. 如果要在設備的目錄的子目錄下同步文件需要在PC端創建與手機端同名的文件夾,比如說要在手機的/data/data目錄中同步PC端的文件,那麼只需在PC端的data目錄中再創建一個data文件夾即可。

 

原文:https://www.cnblogs.com/JianXu/p/5158013.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章