ADB是什麼
adb(全稱Android Debug Bridge):Android除錯橋樑。用來協助相關人員更快更好的除錯apk,adb具有安裝解除安裝apk、拷貝推送檔案、檢視裝置硬體資訊、檢視應用程式佔用資源、在裝置執行shell命令等功能。
ADB架構
ADB是一個C/S架構的應用程式,由三部分組成:
- 執行在pc端的adb client:
命令列程式"adb"用於從shell或指令碼中執行adb命令。首先,"adb"程式嘗試定位主機上的ADB伺服器,如果找不到adb伺服器,"adb"程式自動啟動一個ADB伺服器。接下來,當裝置的adbd和pc端的ADB server建立連線後,adb client就可以向ADB server傳送服務請求; - 執行在pc端的abd server:
ADB Server是執行在主機上的一個後臺程式。它的作用在於檢測USB埠感知裝置的連線和拔除,以及模擬器例項的啟動或停止,ADB Server還需要將adb client的請求通過usb或者tcp的方式傳送到對應的adbd上; - 執行在裝置端的常駐程式adb demon(adbd):
程式"abdb"作為一個後臺程式在Android裝置或者模擬器系統中執行。它的作用是連線ADB伺服器,並且為執行在主機上的客戶端提供一些服務;
ADB基本用法
adb能做什麼? 答案是所有能對手機的操作都能用adb實現。
adb命令的基本語法如下: adb [-d|-e|-s ]
單一裝置/模擬器連線
如果只有一個裝置/模擬器連線時,可以省略掉[-d|-e|-s ] 這一部分,直接使用adb
多個裝置/模擬器連線
如果有多個裝置/模擬器連線,則需要為命令指定目標裝置,下表是指定目標裝置的命令選項:
引數 | 含義 |
---|---|
-d | 指定當前唯一通過USB連線的Android裝置為命令目標 |
-e | 指定當前唯一執行的模擬器為命令目標 |
-s | 指定相應裝置序列號的裝置/模擬器為命令目標 |
adb shell
Android的核心本身就是Linux,所有Android本身也支援Linux命令。 在手機中執行Shell命令,每次都加上adb shell來進行命令的傳送和執行。
adb常用命令
用途 | 命令 |
---|---|
檢視adb的版本資訊 | adb version |
啟動adb服務 | adb start-server |
停止adb服務 | adb kill-server |
查詢已連線的裝置/模擬器列表 | adb devices |
指定adb server的網路埠 | adb -P start-server,adb的預設埠為:5037 |
以root許可權執行adbd | adb root |
Activity Manager
用途 | 命令 |
---|---|
獲得應用的啟動時間 | adb shell am start -W<package_name>/.<activity_class_name> |
啟動activity | adb shell am start -n<package_name>/.<activity_class_name> |
殺掉APP | adb shell am force-stop <package_name> |
dump
用途 | 命令 |
---|---|
檢視版本號 | adb shell dumpsys package com.youxiang.soyoungapp |
獲取系統資料 | adb shell dumpsys |
Package Manager
用途 | 命令 |
---|---|
安裝應用 | adb install |
直接安裝應用 | adb install test.apk |
覆蓋安裝 | adb install -r test.apk |
解除安裝應用 | adb uninstall |
直接解除安裝 | adb uninstall test.apk |
保留資料解除安裝 | adb uninstall -k test.apk |
列印apk路徑 | adb shell pm path |
清除應用快取 | adb shll pm clear |
File Manager
用途 | 命令 |
---|---|
從Android裝置下載檔案到pc | adb pull [local] adb pull /sdcard/test.png c:\user |
把pc檔案放到Android裝置 | adb push |
列出目錄內容 | adb shell ls [option] |
進入資料夾 | adb shell cd |
刪除檔案或目錄 | adb shell rm [options] |
建立資料夾 | adb shell mkdir[options] |
複製檔案 | adb shell cp [options] |
移動或者更名檔案 | adb shell mv [options] |
Logcat
用途 | 命令 |
---|---|
列印日誌檔案 | adb logcat [options] [filter-specs] |
Screenshot
用途 | 命令 |
---|---|
截圖儲存為test.png | adb shell screencap /sdcard/test.png |
錄屏儲存為test.mp4 | adb shell screencord /sdcard/test.mp4 |
裝置管理連線
USB 連線
通過 USB 連線來正常使用 adb 需要以下步驟:
- 確認硬體狀態正常(包括 Android 裝置處於正常開機狀態,USB 連線線和各種介面完好)。
- Android 裝置的開發者選項和 USB 除錯模式已開啟(可以在「設定」-「開發者選項」-「USB除錯」開啟USB除錯)。
- 確認裝置驅動狀態正常(安裝ADB驅動程式)。
- 通過 USB 線連線好電腦和裝置後確認狀態。
- 通過 adb devices 命令檢視裝置連線情況。
WLAN 連線(需要 USB 線)
藉助 USB 通過 WiFi 連線來正常使用 adb 需要以下步驟:
- 將 Android 裝置與要執行 adb 的電腦連線到同一個 WiFi。
- 將裝置與電腦通過 USB 線連線(可通過 adb devices 命令檢視裝置連線情況)。
- 通過 adb tcpip 5555 命令讓裝置在 5555 埠監聽 TCP/IP 連線。
- 斷開 USB 連線。
- 找到裝置的 IP 地址(可以在「設定」-「關於手機」-「狀態資訊」-「IP地址」檢視 IP 地址)。
- 通過 adb connect 命令使用 IP 地址將 Android 裝置與電腦連線。
- 通過 adb devices 命令檢視裝置連線情況。
- 使用完畢後可通過 adb disconnect 命令斷開無線連線。
WLAN 連線(無需藉助 USB 線)
注:需要 root 許可權。不借助 USB 通過 WiFi 連線來正常使用 adb 需要以下步驟:
- 在 Android 裝置上安裝一個終端模擬器(可通過Terminal Emulator for Android Downloads下載)。
- 將 Android 裝置與要執行 adb 的電腦連線到同一個 WiFi。
- 開啟 Android 裝置上的終端模擬器,在裡面依次執行命令:
su
setprop service.adb.tcp.port 5555
複製程式碼
- 找到裝置的 IP 地址(可以在「設定」-「關於手機」-「狀態資訊」-「IP地址」檢視 IP 地址)。
- 通過 adb connect 命令使用 IP 地址將 Android 裝置與電腦連線。
- 通過 adb devices 命令檢視裝置連線情況。
WiFi 連線轉為 USB 連線
通過adb usb命令以USB模式重新啟動ADB:
adb usb
複製程式碼