超詳細的Android開發調試工具ADB命令及安裝介紹
一、ADB簡介
簡稱:ADB
英文全稱:Android Debug Brige
中文全稱:Android調試橋
作用:與Android設備進行通信的工具
二、安裝ADB
adb 包含在 Android SDK平臺工具軟件包中。您可以使用 SDK 管理器下載此軟件包,該管理器會將其安裝在 android_sdk/platform-tools/ 下。
或者,如果您需要獨立的 Android SDK 平臺工具軟件包,可以點擊此處進行下載。
三、環境變量
Windows、Mac、Linux下不同的配置方式,根據對應平臺去百度或者Google搜索即可,限於篇幅本文略過
四、連接真機
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個
adb devices 命令或adb devices -l獲取所有設備的序列號
1、adb -s 序列號 命令 …… 舉個例子:adb -s dasdfew123 install xxx.apk
或者
1、ANDROID_SERIAL環境變量,可以指定單個設備的序列號
2、ANDROID_SERIAL環境變量,可指定n個設備的序列號,以逗號“,”作為分隔符
不使用 -s 指定序列號時,adb會讀取ANDROID_SERIAL環境變量的值
同時使用 -s 和ANDROID_SERIAL環境變量,則-s會覆蓋掉ANDROID_SERIAL環境變量的值
WLAN連接
前提:手機與PC處於同一局域網(同一個WLAN下)
原理:PC上的adb服務端與Android設備上的adbd進程建立TCP連接
如何建立連接?
1、 先將手機與PC通過USB連接
adb tcpip 5555
運行後,Android設備上的adbd進程將開始監聽5555端口(處於Listener狀態)
2、從USB連接上拔掉手機
adb connect <手機IP>
運行後,PC上的adb服務端與Android設備上的adbd進程(監聽5555端口)建立TCP連接
如何斷開WLAN連接?
adb disconnect
如何將Android設備的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客戶端啟動,負責與Android設備上的adbd進程通信、負責與PC上的ADB客戶端進程通信;PC上的ADB客戶端與Android設備上的adbd進程通信,全靠PC上的ADB服務端進程進行轉發……
3、adbd進程
運行在Android設備上,負責與PC上的ADB服務端進程通信
進程通信方式
1、ADB客戶端與ADB服務端
ADB客戶端、ADB服務端均運行在PC上,采用TCP建立連接,即Network Socket
2、PC上的ADB服務端與Android設備上的adbd進程
采用USB cable建立連接(默認)
or
采用TCP建立連接(無線adb)
進程生命周期
1、ADB客戶端進程的生命周期
在命令行中輸入任意的adb命令,會創建ADB客戶端進程,待客戶端的命令執行結束,adb客戶端進程會自然銷毀
2、ADB服務端進程的生命周期
由任意客戶端喚起(如adb命令行,Android Studio等等),常駐在PC的內存中,作為守護進程
3、adbd進程的生命周期
由init進程通過讀取init.rc文件(該文件存有adbd進程的配置信息),然後fork出來adbd進程,adbd進程是在Android系統啟動後即創建,它一直運行在Android的內存中,作為Android設備的守護進程
5037端口
1、當啟動任意一個ADB客戶端(Android Studio、命令行工具等等),ADB客戶端會檢查ADB服務器進程是否正在運行
2、如果ADB服務端沒有運行,ADB客戶端將執行啟動一個ADB服務端進程的代碼
3、ADB服務端啟動後就會在PC的本地5037端口(TCP端口)綁定,監聽所有ADB客戶端發出的命令,所有ADB客戶端均通過TCP端口5037與ADB服務端進行通信
十、小秘密
發現一個秘密,Mac上將Android Studio關閉後,ADB 服務端進程(adb server)一定會被殺死,不信你試一試……
參考文獻:
https://developer.android.google.cn/studio/debug/dev-options 配置設備上的開發者選項
https://developer.android.google.cn/studio/run/device 在硬件設備上運行應用
以上就是超詳細的Android調試工具ADB安裝使用技巧介紹的詳細內容,更多關於Android調試工具ADB介紹的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Python與Appium實現手機APP自動化測試的示例代碼
- python實現電腦操控安卓手機
- Android Studio模擬器運行apk文件
- Python+Appium自動化測試的實戰
- python UIAutomator2使用超詳細教程