超詳細(xì)的Android開發(fā)調(diào)試工具ADB命令及安裝介紹
一、ADB簡介
簡稱:ADB
英文全稱:Android Debug Brige
中文全稱:Android調(diào)試橋
作用:與Android設(shè)備進(jìn)行通信的工具
二、安裝ADB
adb 包含在 Android SDK平臺工具軟件包中。您可以使用 SDK 管理器下載此軟件包,該管理器會將其安裝在 android_sdk/platform-tools/ 下。
或者,如果您需要獨立的 Android SDK 平臺工具軟件包,可以點擊此處進(jìn)行下載。
三、環(huán)境變量
Windows、Mac、Linux下不同的配置方式,根據(jù)對應(yīng)平臺去百度或者Google搜索即可,限于篇幅本文略過
四、連接真機(jī)
1、啟用開發(fā)者選項
連續(xù)點按版本號7 次(設(shè)置 > 關(guān)于手機(jī) > 版本號)
2、啟用USB調(diào)試
開發(fā)者選項 > USB 調(diào)試
3、啟用文件傳輸
將USB充電模式改為文件傳輸
4、手機(jī)RSA密鑰授權(quán)
設(shè)備中彈出對話框,必須手工確定才能執(zhí)行USB調(diào)試和其他 adb 命令
五、常用命令
查看ADB版本
adb version
幫助信息(重要)
adb --help
或
adb help
或
adb
ADB的幫助信息描述的非常全面,學(xué)會查看命令行工具的幫助信息,事半功倍
開啟ADB服務(wù)端
adb start-server
關(guān)閉ADB服務(wù)端
adb kill-server
檢查設(shè)備連接情況
簡略信息: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文件的運行時權(quán)限并安裝:adb install -g xxx.apk
將多個apk推送到設(shè)備,作為一個包安裝: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
六、高級技巧…
指定多個設(shè)備中的1個或n個
adb devices 命令或adb devices -l獲取所有設(shè)備的序列號
1、adb -s 序列號 命令 …… 舉個例子:adb -s dasdfew123 install xxx.apk
或者
1、ANDROID_SERIAL環(huán)境變量,可以指定單個設(shè)備的序列號
2、ANDROID_SERIAL環(huán)境變量,可指定n個設(shè)備的序列號,以逗號“,”作為分隔符
不使用 -s 指定序列號時,adb會讀取ANDROID_SERIAL環(huán)境變量的值
同時使用 -s 和ANDROID_SERIAL環(huán)境變量,則-s會覆蓋掉ANDROID_SERIAL環(huán)境變量的值
WLAN連接
前提:手機(jī)與PC處于同一局域網(wǎng)(同一個WLAN下)
原理:PC上的adb服務(wù)端與Android設(shè)備上的adbd進(jìn)程建立TCP連接
如何建立連接?
1、 先將手機(jī)與PC通過USB連接
adb tcpip 5555
運行后,Android設(shè)備上的adbd進(jìn)程將開始監(jiān)聽5555端口(處于Listener狀態(tài))
2、從USB連接上拔掉手機(jī)
adb connect <手機(jī)IP>
運行后,PC上的adb服務(wù)端與Android設(shè)備上的adbd進(jìn)程(監(jiān)聽5555端口)建立TCP連接
如何斷開WLAN連接?
adb disconnect
如何將Android設(shè)備的WLAN連接切換為USB連接?
adb usb
藍(lán)牙連接
... ...暫時
端口轉(zhuǎn)發(fā)
……暫時
七、高級Unix命令行工具(Android基于Linux內(nèi)核)
查看Android設(shè)備可用命令(重要)
adb shell ls /system/bin
進(jìn)入設(shè)備shell
adb shell
執(zhí)行任意的可用命令
(adb shell ls /system/bin中列出來的命令都可使用)
top
ps
dumpsys
am
input
等等等等……各種命令……未完待續(xù)
八、經(jīng)常使用的Unix命令行工具
查看進(jìn)程狀態(tài):ps
查看cpu狀態(tài):top
系統(tǒng)服務(wù):dumpsys
九、ADB原理
采用客戶端/服務(wù)端架構(gòu)(C/S架構(gòu))
由3個進(jìn)程組成
1、ADB客戶端進(jìn)程
運行在PC上,用于發(fā)送命令,為CLI客戶端,在命令行中啟動,命令運行結(jié)束,進(jìn)程隨著結(jié)束
2、ADB服務(wù)端進(jìn)程
運行在PC上, 由ADB客戶端啟動,負(fù)責(zé)與Android設(shè)備上的adbd進(jìn)程通信、負(fù)責(zé)與PC上的ADB客戶端進(jìn)程通信;PC上的ADB客戶端與Android設(shè)備上的adbd進(jìn)程通信,全靠PC上的ADB服務(wù)端進(jìn)程進(jìn)行轉(zhuǎn)發(fā)……
3、adbd進(jìn)程
運行在Android設(shè)備上,負(fù)責(zé)與PC上的ADB服務(wù)端進(jìn)程通信
進(jìn)程通信方式
1、ADB客戶端與ADB服務(wù)端
ADB客戶端、ADB服務(wù)端均運行在PC上,采用TCP建立連接,即Network Socket
2、PC上的ADB服務(wù)端與Android設(shè)備上的adbd進(jìn)程
采用USB cable建立連接(默認(rèn))
or
采用TCP建立連接(無線adb)
進(jìn)程生命周期
1、ADB客戶端進(jìn)程的生命周期
在命令行中輸入任意的adb命令,會創(chuàng)建ADB客戶端進(jìn)程,待客戶端的命令執(zhí)行結(jié)束,adb客戶端進(jìn)程會自然銷毀
2、ADB服務(wù)端進(jìn)程的生命周期
由任意客戶端喚起(如adb命令行,Android Studio等等),常駐在PC的內(nèi)存中,作為守護(hù)進(jìn)程
3、adbd進(jìn)程的生命周期
由init進(jìn)程通過讀取init.rc文件(該文件存有adbd進(jìn)程的配置信息),然后fork出來adbd進(jìn)程,adbd進(jìn)程是在Android系統(tǒng)啟動后即創(chuàng)建,它一直運行在Android的內(nèi)存中,作為Android設(shè)備的守護(hù)進(jìn)程
5037端口
1、當(dāng)啟動任意一個ADB客戶端(Android Studio、命令行工具等等),ADB客戶端會檢查ADB服務(wù)器進(jìn)程是否正在運行
2、如果ADB服務(wù)端沒有運行,ADB客戶端將執(zhí)行啟動一個ADB服務(wù)端進(jìn)程的代碼
3、ADB服務(wù)端啟動后就會在PC的本地5037端口(TCP端口)綁定,監(jiān)聽所有ADB客戶端發(fā)出的命令,所有ADB客戶端均通過TCP端口5037與ADB服務(wù)端進(jìn)行通信
十、小秘密
發(fā)現(xiàn)一個秘密,Mac上將Android Studio關(guān)閉后,ADB 服務(wù)端進(jìn)程(adb server)一定會被殺死,不信你試一試……
參考文獻(xiàn):
https://developer.android.google.cn/studio/debug/dev-options 配置設(shè)備上的開發(fā)者選項
https://developer.android.google.cn/studio/run/device 在硬件設(shè)備上運行應(yīng)用
以上就是超詳細(xì)的Android調(diào)試工具ADB安裝使用技巧介紹的詳細(xì)內(nèi)容,更多關(guān)于Android調(diào)試工具ADB介紹的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android中ScrollView嵌套GridView的解決辦法
前些日子在開發(fā)中用到了需要ScrollView嵌套GridView的情況,由于這兩款控件都自帶滾動條,當(dāng)他們碰到一起的時候便會出問題,即GridView會顯示不全。下面小編給大家分享下解決方案,需要的朋友可以參考下2017-04-04ViewPager+PagerAdapter實現(xiàn)帶指示器的引導(dǎo)頁
這篇文章主要為大家詳細(xì)介紹了ViewPager+PagerAdapter實現(xiàn)帶指示器的引導(dǎo)頁,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-09-09詳解Android Automotive車載應(yīng)用對駕駛模式Safe Drive Mode的適配
這篇文章主要介紹了詳解Android Automotive車載應(yīng)用對駕駛模式(Safe Drive Mode)的適配,對車載應(yīng)用感興趣的同學(xué)可以參考下2021-04-04Android入門之BroadCast模擬實現(xiàn)異地登錄事件發(fā)生后的主動退出
隨著對BroadCast的越來越深入,我們今天要實現(xiàn)一個稍微復(fù)雜一點的BroadCast。即只允許一個設(shè)備登錄一個帳號時,APP會彈一個對話框如:您的賬號在別處登錄,請重新登陸!感興趣的可以了解一下2022-12-12Android基于OpenCV實現(xiàn)QR二維碼檢測
QR碼比普通一維條碼具有快速讀取和更大的存儲資料容量,也無需要像一維條碼般在掃描時需要直線對準(zhǔn)掃描儀。因此其應(yīng)用范圍已經(jīng)擴(kuò)展到包括產(chǎn)品跟蹤,物品識別,文檔管理,庫存營銷等方面。本文講解Android基于OpenCV實現(xiàn)QR二維碼檢測的步驟2021-06-06Android數(shù)據(jù)庫LitePal的基本用法詳解
這篇文章主要介紹了Android數(shù)據(jù)庫LitePal的基本用法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01Android實現(xiàn)背景可滑動登錄界面 (不壓縮背景彈出鍵盤)
這篇文章主要介紹了Android實現(xiàn)背景可滑動登錄界面 (不壓縮背景彈出鍵盤),需要的朋友可以參考下2017-04-04Android開發(fā)實現(xiàn)撥打電話與發(fā)送信息的方法分析
這篇文章主要介紹了Android開發(fā)實現(xiàn)撥打電話與發(fā)送信息的方法,結(jié)合實例形式分析了Android撥打電話及發(fā)送信息相關(guān)布局、功能實現(xiàn)及權(quán)限控制操作技巧,需要的朋友可以參考下2017-12-12Android?App隱私合規(guī)檢測輔助工具Camille詳解
Camille是一款A(yù)ndroid?App隱私合規(guī)檢測輔助工具,現(xiàn)如今APP隱私合規(guī)十分重要,各監(jiān)管部門不斷開展APP專項治理工作及核查通報,不合規(guī)的APP通知整改或直接下架,下面小編給大家介紹下Android?App隱私合規(guī)檢測輔助工具Camille,感興趣的朋友一起看看吧2022-02-02