Android除錯工具-ADB史上最強介紹

叫我王員外就行發表於2020-10-27

一、ADB簡介

簡稱:ADB

英文全稱:Android Debug Brige

中文全稱:Android除錯橋

作用:與Android裝置進行通訊的工具

 

二、安裝ADB

adb 包含在 Android SDK平臺工具軟體包中。您可以使用 SDK 管理器下載此軟體包,該管理器會將其安裝在 android_sdk/platform-tools/ 下。或者,如果您需要獨立的 Android SDK 平臺工具軟體包,可以點選此處進行下載

 

三、環境變數

Windows:

Mac:

Linux:

 

四、連線真機

1、啟用開發者選項

連續點按版本號7 次(設定 > 關於手機 > 版本號)

2、啟用USB除錯

開發者選項 > USB 除錯

3、啟用檔案傳輸

將USB充電模式改為檔案傳輸

4、手機RSA金鑰授權

裝置中彈出對話方塊,必須手工確定才能執行USB除錯和其他 adb 命令

 

五、常用命令

 

檢視ADB版本

adb version

 

幫助資訊(重要)

adb --help

adb help

adb

ADB的幫助資訊描述的非常全面,學會檢視命令列工具的幫助資訊,事半功倍

 

開啟ADB服務端

adb start-server

 

關閉ADB服務端

adb kill-server

 

檢查裝置連線情況

簡略資訊:adb devices

詳細資訊:adb devices -l

 

安裝App

普通安裝:adb install xxx.apk

重新安裝,保持資料不清除(覆蓋安裝) :adb install -r xxx.apk

允許debug包安裝:adb install -t xxx.apk

授權AndroidManifest.xml檔案的執行時許可權安裝:adb install -g xxx.apk

將多個apk推送到裝置,作為一個包安裝:adb install-multiple xxx1.apk xxx2.apk

 

解除安裝App

普通解除安裝:adb uninstall com.xxx.package_name

保持資料解除安裝:adb uninstall -k com.xxx.package_name

 

Push檔案

從本機推送到Android裝置上:adb push local remote

local表示本機檔案的路徑

remote表示Android裝置的路徑

 

Pull檔案

從Android裝置上拉取到本機:adb pull remote local

remote表示Android裝置的檔案或目錄的路徑

local表示本機檔案或目錄的路徑

 

檢視日誌

adb logcat

 

 

六、高階技巧…

指定多個裝置中的1個或n個

1、adb devices 命令或adb devices -l獲取目標裝置的序列號

2、adb -s 序列號 命令 …… 舉個例子:adb -s dasdfew123 install xxx.apk

或者

1、ANDROID_SERIAL環境變數,指定單個裝置

2、ANDROID_SERIAL環境變數,指定n個裝置,以逗號“,”作為分隔符

不加-s,adb會去讀取ANDROID_SERIAL環境變數的值

WLAN連線

前提:手機與PC處於同一區域網(同一個WLAN下)

原理:adb服務端與Android裝置上的adbd程式建立TCP連線

建立連線

1、 將手機與PC通過USB連線

adb tcpip 5555

執行後,adbd程式將監聽5555埠

2、拔掉手機

adb connect <手機IP>

執行後,adb服務端與Android裝置上的adbd程式(監聽5555埠)建立連線

 

如何斷開WLAN連線?

adb disconnect

如何將WLAN連線切換為USB連線?

adb usb

 

藍芽連線

……暫時不寫

埠轉發

……暫時不寫

 

七、高階Unix命令列工具(Android基於Linux核心)

檢視Android裝置可用命令(重要)

adb shell ls /system/bin

進入裝置shell

adb shell

執行任意的可用命令(adb shell ls /system/bin中列出來的命令都可使用)

top

ps

dumpsys

am

input

等等等等……各種命令

 

八、經常使用的Unix命令列工具

檢視程式狀態:ps

檢視cpu狀態:top

系統服務:dumpsys

 

九、ADB原理

客戶端/服務端架構(C/S架構)的3個程式組成

1、ADB客戶端程式

執行在PC上,用於傳送命令,為CLI客戶端,在命令列中啟動程式,命令執行結束,程式隨著結束

2、ADB服務端程式

執行在PC上, 由ADB客戶端啟動,負責與裝置上的adbd程式通訊、負責與ADB客戶端通訊,幫助PC上的ADB客戶端與裝置上的adbd程式通訊

3、adbd程式

執行在Android裝置上,負責與ADB服務端程式通訊

 

程式通訊方式

1、PC上的adb客戶端與PC上的adb服務端

採用TCP建立連線,即Network Socket

2、PC上的adb服務端與Android裝置上的adbd程式

採用USB cable建立連線(預設)

or

採用TCP建立連線

 

程式生命週期

1、adb客戶端程式的生命週期

在命令列中輸入adb命令,會建立adb客戶端程式,待命令執行結束,adb客戶端程式自然銷燬

2、adb服務端程式的生命週期

由任意客戶端喚起(如adb命令列,Android Studio等等),常駐在PC的記憶體中,作為守護程式

3、adbd程式的生命週期

由init程式通過讀取init.rc檔案(該檔案存有adbd程式的配置資訊),然後fork出來的adbd程式,所以adbd程式是在Android系統啟動後即建立了,它一直執行在記憶體中,作為Android裝置的守護程式

 

 

十、小祕密

發現一個祕密,將Android Studio關閉後,Adb Server程式一定會被殺死,不信你試一試……

 

參考文獻:

https://developer.android.google.cn/studio/debug/dev-options 配置裝置上的開發者選項

https://developer.android.google.cn/studio/run/device 在硬體裝置上執行應用

 

相關文章