超詳細(xì)的Android開(kāi)發(fā)調(diào)試工具ADB命令及安裝介紹
一、ADB簡(jiǎn)介
簡(jiǎn)稱(chēng):ADB
英文全稱(chēng):Android Debug Brige
中文全稱(chēng):Android調(diào)試橋
作用:與Android設(shè)備進(jìn)行通信的工具
二、安裝ADB
adb 包含在 Android SDK平臺(tái)工具軟件包中。您可以使用 SDK 管理器下載此軟件包,該管理器會(huì)將其安裝在 android_sdk/platform-tools/ 下。
或者,如果您需要獨(dú)立的 Android SDK 平臺(tái)工具軟件包,可以點(diǎn)擊此處進(jìn)行下載。
三、環(huán)境變量
Windows、Mac、Linux下不同的配置方式,根據(jù)對(duì)應(yīng)平臺(tái)去百度或者Google搜索即可,限于篇幅本文略過(guò)
四、連接真機(jī)
1、啟用開(kāi)發(fā)者選項(xiàng)
連續(xù)點(diǎn)按版本號(hào)7 次(設(shè)置 > 關(guān)于手機(jī) > 版本號(hào))
2、啟用USB調(diào)試
開(kāi)發(fā)者選項(xiàng) > USB 調(diào)試
3、啟用文件傳輸
將USB充電模式改為文件傳輸
4、手機(jī)RSA密鑰授權(quán)
設(shè)備中彈出對(duì)話(huà)框,必須手工確定才能執(zhí)行USB調(diào)試和其他 adb 命令
五、常用命令
查看ADB版本
adb version
幫助信息(重要)
adb --help
或
adb help
或
adb
ADB的幫助信息描述的非常全面,學(xué)會(huì)查看命令行工具的幫助信息,事半功倍
開(kāi)啟ADB服務(wù)端
adb start-server
關(guān)閉ADB服務(wù)端
adb kill-server
檢查設(shè)備連接情況
簡(jiǎn)略信息:adb devices
詳細(xì)信息:adb devices -l
安裝App
普通安裝:adb install xxx.apk
重新安裝,保持?jǐn)?shù)據(jù)不清除(覆蓋安裝) :adb install -r xxx.apk
允許debug包安裝:adb install -t xxx.apk
授權(quán)AndroidManifest.xml文件的運(yùn)行時(shí)權(quán)限并安裝:adb install -g xxx.apk
將多個(gè)apk推送到設(shè)備,作為一個(gè)包安裝:adb install-multiple xxx1.apk xxx2.apk
卸載App
普通卸載:adb uninstall com.xxx.package_name
保持?jǐn)?shù)據(jù)卸載:adb uninstall -k com.xxx.package_name
Push文件
從本機(jī)推送到Android設(shè)備上:adb push local remote
local表示本機(jī)文件的路徑
remote表示Android設(shè)備的路徑
Pull文件
從Android設(shè)備上拉取到本機(jī):adb pull remote local
remote表示Android設(shè)備的文件或目錄的路徑
local表示本機(jī)文件或目錄的路徑
查看日志
adb logcat
六、高級(jí)技巧…
指定多個(gè)設(shè)備中的1個(gè)或n個(gè)
adb devices 命令或adb devices -l獲取所有設(shè)備的序列號(hào)
1、adb -s 序列號(hào) 命令 …… 舉個(gè)例子:adb -s dasdfew123 install xxx.apk
或者
1、ANDROID_SERIAL環(huán)境變量,可以指定單個(gè)設(shè)備的序列號(hào)
2、ANDROID_SERIAL環(huán)境變量,可指定n個(gè)設(shè)備的序列號(hào),以逗號(hào)“,”作為分隔符
不使用 -s 指定序列號(hào)時(shí),adb會(huì)讀取ANDROID_SERIAL環(huán)境變量的值
同時(shí)使用 -s 和ANDROID_SERIAL環(huán)境變量,則-s會(huì)覆蓋掉ANDROID_SERIAL環(huán)境變量的值
WLAN連接
前提:手機(jī)與PC處于同一局域網(wǎng)(同一個(gè)WLAN下)
原理:PC上的adb服務(wù)端與Android設(shè)備上的adbd進(jìn)程建立TCP連接
如何建立連接?
1、 先將手機(jī)與PC通過(guò)USB連接
adb tcpip 5555
運(yùn)行后,Android設(shè)備上的adbd進(jìn)程將開(kāi)始監(jiān)聽(tīng)5555端口(處于Listener狀態(tài))
2、從USB連接上拔掉手機(jī)
adb connect <手機(jī)IP>
運(yùn)行后,PC上的adb服務(wù)端與Android設(shè)備上的adbd進(jìn)程(監(jiān)聽(tīng)5555端口)建立TCP連接
如何斷開(kāi)WLAN連接?
adb disconnect
如何將Android設(shè)備的WLAN連接切換為USB連接?
adb usb
藍(lán)牙連接
... ...暫時(shí)
端口轉(zhuǎn)發(fā)
……暫時(shí)
七、高級(jí)Unix命令行工具(Android基于Linux內(nèi)核)
查看Android設(shè)備可用命令(重要)
adb shell ls /system/bin
進(jìn)入設(shè)備shell
adb shell
執(zhí)行任意的可用命令
(adb shell ls /system/bin中列出來(lái)的命令都可使用)
top
ps
dumpsys
am
input
等等等等……各種命令……未完待續(xù)
八、經(jīng)常使用的Unix命令行工具
查看進(jìn)程狀態(tài):ps
查看cpu狀態(tài):top
系統(tǒng)服務(wù):dumpsys
九、ADB原理
采用客戶(hù)端/服務(wù)端架構(gòu)(C/S架構(gòu))
由3個(gè)進(jìn)程組成
1、ADB客戶(hù)端進(jìn)程
運(yùn)行在PC上,用于發(fā)送命令,為CLI客戶(hù)端,在命令行中啟動(dòng),命令運(yùn)行結(jié)束,進(jìn)程隨著結(jié)束
2、ADB服務(wù)端進(jìn)程
運(yùn)行在PC上, 由ADB客戶(hù)端啟動(dòng),負(fù)責(zé)與Android設(shè)備上的adbd進(jìn)程通信、負(fù)責(zé)與PC上的ADB客戶(hù)端進(jìn)程通信;PC上的ADB客戶(hù)端與Android設(shè)備上的adbd進(jìn)程通信,全靠PC上的ADB服務(wù)端進(jìn)程進(jìn)行轉(zhuǎn)發(fā)……
3、adbd進(jìn)程
運(yùn)行在Android設(shè)備上,負(fù)責(zé)與PC上的ADB服務(wù)端進(jìn)程通信
進(jìn)程通信方式
1、ADB客戶(hù)端與ADB服務(wù)端
ADB客戶(hù)端、ADB服務(wù)端均運(yùn)行在PC上,采用TCP建立連接,即Network Socket
2、PC上的ADB服務(wù)端與Android設(shè)備上的adbd進(jìn)程
采用USB cable建立連接(默認(rèn))
or
采用TCP建立連接(無(wú)線adb)
進(jìn)程生命周期
1、ADB客戶(hù)端進(jìn)程的生命周期
在命令行中輸入任意的adb命令,會(huì)創(chuàng)建ADB客戶(hù)端進(jìn)程,待客戶(hù)端的命令執(zhí)行結(jié)束,adb客戶(hù)端進(jìn)程會(huì)自然銷(xiāo)毀
2、ADB服務(wù)端進(jìn)程的生命周期
由任意客戶(hù)端喚起(如adb命令行,Android Studio等等),常駐在PC的內(nèi)存中,作為守護(hù)進(jìn)程
3、adbd進(jìn)程的生命周期
由init進(jìn)程通過(guò)讀取init.rc文件(該文件存有adbd進(jìn)程的配置信息),然后fork出來(lái)adbd進(jìn)程,adbd進(jìn)程是在Android系統(tǒng)啟動(dòng)后即創(chuàng)建,它一直運(yùn)行在Android的內(nèi)存中,作為Android設(shè)備的守護(hù)進(jìn)程
5037端口
1、當(dāng)啟動(dòng)任意一個(gè)ADB客戶(hù)端(Android Studio、命令行工具等等),ADB客戶(hù)端會(huì)檢查ADB服務(wù)器進(jìn)程是否正在運(yùn)行
2、如果ADB服務(wù)端沒(méi)有運(yùn)行,ADB客戶(hù)端將執(zhí)行啟動(dòng)一個(gè)ADB服務(wù)端進(jìn)程的代碼
3、ADB服務(wù)端啟動(dòng)后就會(huì)在PC的本地5037端口(TCP端口)綁定,監(jiān)聽(tīng)所有ADB客戶(hù)端發(fā)出的命令,所有ADB客戶(hù)端均通過(guò)TCP端口5037與ADB服務(wù)端進(jìn)行通信
十、小秘密
發(fā)現(xiàn)一個(gè)秘密,Mac上將Android Studio關(guān)閉后,ADB 服務(wù)端進(jìn)程(adb server)一定會(huì)被殺死,不信你試一試……
參考文獻(xiàn):
https://developer.android.google.cn/studio/debug/dev-options 配置設(shè)備上的開(kāi)發(fā)者選項(xiàng)
https://developer.android.google.cn/studio/run/device 在硬件設(shè)備上運(yùn)行應(yīng)用
以上就是超詳細(xì)的Android調(diào)試工具ADB安裝使用技巧介紹的詳細(xì)內(nèi)容,更多關(guān)于Android調(diào)試工具ADB介紹的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
android Textview文字監(jiān)控(Textview使用方法)
以手機(jī)號(hào)充值為例,當(dāng)用戶(hù)輸入最后一位數(shù)時(shí)候,進(jìn)行匯率的變換,本文就實(shí)現(xiàn)類(lèi)似這樣的功能2013-11-11
Flutter?阻止系統(tǒng)鍵盤(pán)彈出的優(yōu)雅方式
這篇文章主要為大家介紹了Flutter?阻止系統(tǒng)鍵盤(pán)彈出的優(yōu)雅方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
ANDROID中自定義對(duì)話(huà)框AlertDialog使用示例
這篇文章主要為大家詳細(xì)介紹了Android中自定義對(duì)話(huà)框AlertDialog使用示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Android實(shí)現(xiàn)Back功能代碼片段總結(jié)
今天把在公司實(shí)現(xiàn)某功能所用到的Back鍵功能模塊代碼片段做一個(gè)整理。方便以后直接拿出來(lái)使用2014-09-09
Android使用SoundPool實(shí)現(xiàn)播放音效
這篇文章主要為大家詳細(xì)介紹了Android使用SoundPool實(shí)現(xiàn)播放音效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11

