一.adb是什么?
adb 稱之為:Android 調(diào)試橋 (Android Debug Bridge )
是一種允許模擬器或已連接的 Android 設(shè)備
進(jìn)行通信的命令行工具
,它可為各種設(shè)備操作提供便利,如安裝和調(diào)試應(yīng)用
,并提供對(duì) Unix shell(
可用來(lái)在模擬器或連接的設(shè)備上運(yùn)行各種命令
)的訪問(wèn)。
- 可以在Android SDK/platform-tools
中找到adb 工具或下載 ADB Kits
。
注: 有部分命令的支持情況可能與 Android 系統(tǒng)版本及定制
ROM
的實(shí)現(xiàn)有關(guān)。
二.adb有什么作用?
ADB 是 Android SDK 里的一個(gè)工具, 用這個(gè)工具可以直接操作管理Android模擬器或者真實(shí)的Android設(shè)備
。它的主要功能有:
-
在設(shè)備上運(yùn)行Shell命令;
-
將本地APK軟件安裝至模擬器或Android設(shè)備;
-
管理設(shè)備或手機(jī)模擬器上的預(yù)定端口;
-
在設(shè)備或手機(jī)模擬器上復(fù)制或粘貼文件。
ADB 是一個(gè)客戶端-服務(wù)器程序程序,包括三個(gè)組件:
- 客戶端:負(fù)責(zé)發(fā)送命令。客戶端在開(kāi)發(fā)計(jì)算機(jī)上運(yùn)行??赏ㄟ^(guò)
發(fā)出 adb 命令從·命令行終端調(diào)用客戶端
·。 - 后臺(tái)程序:負(fù)責(zé)在設(shè)備上運(yùn)行命令。后臺(tái)程序在
每個(gè)模擬器或設(shè)備實(shí)例
上作為后臺(tái)進(jìn)程運(yùn)行。 - 服務(wù)器:負(fù)責(zé)管理客戶端和后臺(tái)程序之間的通信。服務(wù)器在
開(kāi)發(fā)計(jì)算機(jī)上作為后臺(tái)進(jìn)程運(yùn)行
。
三.adb連接真機(jī)或模擬器的方法
adb連接真機(jī)或者模擬器一共有以下3種方法
- 連接模擬器
- 有線連接真機(jī)
- 無(wú)線連接真機(jī)
1.連接夜神模擬器
-
啟動(dòng)夜神模擬器
-
連接模擬器
- 使用win+r按鍵輸入cmd,回車打開(kāi)cmd窗口
-
adb connect 127.0.0.1:62001
-
查看連接的設(shè)備
- adb devices
List of devices 設(shè)備名稱
attached 連接狀態(tài)(devices設(shè)備正常連接、offline連接出現(xiàn)異常,設(shè)備無(wú)響應(yīng)、unknown沒(méi)有連接設(shè)備)
- adb devices
-
啟用設(shè)備的開(kāi)發(fā)者選項(xiàng),啟動(dòng)調(diào)試功能
- 夜神模擬器:設(shè)置->點(diǎn)擊版本號(hào)7次直到出現(xiàn)提示【開(kāi)發(fā)者選項(xiàng)】->返回上一步能看到【開(kāi)發(fā)者選項(xiàng)】->USB調(diào)試
2.有線連接真機(jī)(需原裝數(shù)據(jù)線)
-
將手機(jī)與電腦通過(guò) USB 線連接
-
確保 Android 手機(jī)的
開(kāi)發(fā)者選項(xiàng)
和USB 調(diào)試模
式已開(kāi)啟 -
「設(shè)置」-「開(kāi)發(fā)者選項(xiàng)」-「Android 調(diào)試」查看。開(kāi)發(fā)者選項(xiàng),
點(diǎn)允許 usb 調(diào)試
,然后就可以連上電腦了- 如果在設(shè)置里找不到開(kāi)發(fā)者選項(xiàng),在
「設(shè)置」-「關(guān)于手機(jī)」連續(xù)點(diǎn)擊「版本號(hào)」7
次。
- 如果在設(shè)置里找不到開(kāi)發(fā)者選項(xiàng),在
-
-
cmd框輸入
adb devices
命令查看設(shè)備連接情況- List of devices 設(shè)備名稱
- attached 連接狀態(tài)(devices設(shè)備正常連接、offline連接出現(xiàn)異常,設(shè)備無(wú)響應(yīng)、unknown沒(méi)有連接設(shè)備)
3. 無(wú)線連接真機(jī)(需原裝數(shù)據(jù)線)
-
將 Android 設(shè)備與要運(yùn)行 adb 的電腦連接到
同一個(gè)局域網(wǎng)
- 比如連到
同一個(gè) WiFi
。將手機(jī)與電腦通過(guò)USB
線連接。
- 比如連到
-
確保連接成功,在cmd窗口輸入
adb devices
看是否能列出該設(shè)備 -
讓設(shè)備在
5555 端口
監(jiān)聽(tīng)TCP/IP
連接- 開(kāi)發(fā)者選項(xiàng),點(diǎn)允許usb調(diào)試
- 輸入
adb tcpip 5555
- 找到設(shè)備的 IP 地址
- 進(jìn)入手機(jī)的WIFI連接,進(jìn)入連接屬性,查看手機(jī)的 IP
- 也可在**「設(shè)置」-「關(guān)于手機(jī)」-「狀態(tài)信息」-「IP地址」**找到
-
通過(guò) IP 地址連接設(shè)備,在cmd窗口輸入
adb connect '手機(jī)ip地址'
- 出現(xiàn) connected to 192.168.31.109:5555 表示連接成功
- 出現(xiàn) connected to 192.168.31.109:5555 表示連接成功
注:連接不成功,檢查以下問(wèn)題
- 確保
網(wǎng)絡(luò)和端口
都沒(méi)有問(wèn)題,使用的是原裝數(shù)據(jù)線
- 請(qǐng)確認(rèn) Android 設(shè)備與電腦是連接到了同一個(gè) WiFi,然后再次執(zhí)行
adb connect
那一步- 通過(guò)
adb kill-server
重新啟動(dòng) adb 然后從頭再來(lái)一次試試
四.常用命令
1.基本指令
adb devices: 獲取設(shè)備和設(shè)備的狀態(tài)列表
adb devices -l 查看已連接的設(shè)備
adb get-serialno 設(shè)備號(hào)
adb get-state: 獲取設(shè)備的狀態(tài)(設(shè)備的狀態(tài)有三種:device,設(shè)備連接正常;offline,連接出現(xiàn)異常,設(shè)備無(wú)響應(yīng);unknown,設(shè)備未連接;)
adb connect [ip:port]: 遠(yuǎn)程連接設(shè)備(用于在同一網(wǎng)絡(luò)下adb無(wú)線連接設(shè)備)
adb disconnect [ip:port]: 斷開(kāi)設(shè)備連接(用于在同一網(wǎng)絡(luò)下adb無(wú)線連接設(shè)備)
adb reboot: 重啟設(shè)備
2.權(quán)限指令
-
adb root:獲取Android管理員(root用戶)的權(quán)限。
注意:一般測(cè)試機(jī)可使用root權(quán)限。 Android版本9以上,不支持商用機(jī)使用root權(quán)限,但可以修改底層一些配置
-
adb shell
登錄設(shè)備 shell,該命令將登錄設(shè)備的shell(內(nèi)核),登錄shell后,可以使用 cd,ls,rm 等Linux命令
3.建立連接
-
基本命令
adb -d:如果同時(shí)連了usb,又開(kāi)了模擬器,連接當(dāng)前唯一通過(guò)usb連接的安卓設(shè)備 adb -e shell:指定當(dāng)前連接此電腦的唯一的一個(gè)模擬器 adb -s <設(shè)備號(hào)> shell:當(dāng)電腦插多臺(tái)手機(jī)或模擬器時(shí),指定一個(gè)設(shè)備號(hào)進(jìn)行連接
exit:退出
-
殺死和重啟adb服務(wù)
adb kill-server:殺死當(dāng)前adb服務(wù),如果連不上設(shè)備時(shí),殺掉重啟。(沒(méi)事不要用它)
adb start-server:殺掉后重啟
-
5037:adb默認(rèn)端口,如果該端口被占用,可以指定一個(gè)端口號(hào),如下命令↓
-
adb -p 6666 start-server
:任意指定一個(gè) adb shell 的端口
-
-
4.APK指令
-
列出安裝在設(shè)備上的應(yīng)用
adb shell pm list packages 列出所有應(yīng)用 adb shell pm list package -s 列出系統(tǒng)應(yīng)用 adb shell pm list package -3 列出第三方的應(yīng)用 adb shell pm list package -i 列出來(lái)源 db shell pm list package -f 列出包名和路徑
adb shell pm list packages -d:顯示禁用的包名 adb shell pm list packages -e:顯示當(dāng)前啟用的包名 adb shell pm list packages -s:顯示系統(tǒng)應(yīng)用包名 adb shell pm list packages -3:顯示已安裝第三方的包名 adb shell pm list packages xxxx:加需要過(guò)濾的包名,如:xxx = taobao
-
安裝
adb install <文件路徑\apk>:將本地的apk軟件安裝到設(shè)備(手機(jī))上。如手機(jī)外部安裝需要密碼,記得手機(jī)輸入密碼。 adb install -r <文件路徑\apk>:覆蓋安裝 adb install -d <文件路徑\apk>:允許降級(jí)覆蓋安裝 adb install -g <文件路徑\apk>:授權(quán)/獲取權(quán)限,安裝軟件時(shí)把所有權(quán)限都打開(kāi)
-
卸載
adb uninstall <包名>:卸載該軟件/app。 注意:安裝時(shí)安裝的是apk,卸載時(shí)是包名,可以通過(guò) adb shell pm list packages 查看需要卸載的包名。 adb shell pm uninstall -k <包名>:雖然把此應(yīng)用卸載,但仍保存此應(yīng)用的數(shù)據(jù)和緩存 adb shell am force-stop <包名>:強(qiáng)制退出該應(yīng)用/app
adb shell pm uninstall -k <包名>:雖然把此應(yīng)用卸載,但仍保存此應(yīng)用的數(shù)據(jù)和緩存 adb shell am force-stop <包名>:強(qiáng)制退出該應(yīng)用/app
-
其他
adb shell pm path packagename 列出應(yīng)用apk的位置 adb shell pm dump packagename 列出應(yīng)用的詳細(xì)信息 adb shell pm clear packagename 清除應(yīng)用的緩存數(shù)據(jù)
5.文件操作指令
- pc復(fù)制到手機(jī)
adb push <本地路徑\文件或文件夾> <手機(jī)端路徑>:把本地(pc機(jī))的文件或文件夾復(fù)制到設(shè)備(手機(jī))
注意點(diǎn)1:pc機(jī)路徑與Android機(jī)路徑,
分隔
符是不同的。
注意點(diǎn)2:復(fù)制失敗,大概率是無(wú)權(quán)限
??上仁褂蒙厦娼榻B過(guò)的兩個(gè)命令:adb root;adb remount。在使用 adb push 命令
- 手機(jī)復(fù)制pc
adb pull <手機(jī)端路徑/文件或文件夾> <pc機(jī)路徑>:把設(shè)備(手機(jī))的文件或文件夾復(fù)制到本地。注意點(diǎn)同上
6.日志操作指令
抓取日志的步驟先輸入命令啟動(dòng)日志,然后操作 App,復(fù)現(xiàn) bug,再 ctrl+c 停止日志,分析本地保存的文件。
adb logcat把 main log 和 system log打印出來(lái),輸出完成后阻塞終端,后面輸出的log會(huì)及時(shí)更新到終端。
adb logcat -d :輸出完日之后退出,不會(huì)阻塞
使用管道過(guò)濾日志
adb logcat | grep ActivityManager:輸出包含指定字符串的行(Linux/mac)
adb logcat | findstr ActivityManager:輸出包含指定字符串的行(windows)
輸出日志到指定文件
adb logcat -f /sdcard/log.txt:將日志輸出到手機(jī)的/sdcard/log.txt,注意是手機(jī)上。
adb logcat > E:/log.txt:將日志輸出到終端所在電腦的 E:/log.txt 文件。
優(yōu)先級(jí)
V — Verbose (lowest priority, 冗長(zhǎng)的) 對(duì)應(yīng)于Log.v(tag)系列函數(shù)
D — Debug (調(diào)試用) 對(duì)應(yīng)于Log.d()系列函數(shù)
I — Info(線上用) 對(duì)應(yīng)于Log.i()系列函數(shù)
W — Warning(警告日志) 對(duì)應(yīng)于Log.w()系列函數(shù)
E — Error (發(fā)生錯(cuò)誤) 對(duì)應(yīng)于Log.e()系列函數(shù)
F — Fatal (What a Terrible Failure,引起程序崩潰)對(duì)應(yīng)于Log.wtf()系列函數(shù)
S — Silent (highest priority, on which nothing is ever printed)
adb logcat -s ActivityManager [打印TAG為ActivityManager的日志]
adb logcat -s ActivityManager:I WindowManager:W [輸出TAG為"ActivityManager"并且優(yōu)先級(jí)大于等于"Info"和TAG為"WindowManager"并且優(yōu)先級(jí)大于等于"Warn"的日志]
7.系統(tǒng)操作指令
adb shell getprop ro.product.model 獲取設(shè)備型號(hào)
adb shell getprop ro.build.version.release 獲取設(shè)備 Android 系統(tǒng)版本
adb get-serialno 獲取設(shè)備的序列號(hào)(設(shè)備號(hào))
adb shell wm size 獲取設(shè)備屏幕分辨率
adb shell cat /proc/meminfo:獲取手機(jī)內(nèi)存信息
adb shell df:獲取手機(jī)存儲(chǔ)信息
adb shell screencap -p /sdcard/screen.png 截圖并保存到指定位置
adb pull /sdcard/mms.png <存放的路徑>:將截圖導(dǎo)出到本地
adb pull /sdcard/screenshot.png <存放的路徑>:將截圖導(dǎo)出到本地
adb shell dumpsys activity |find "mFocusedActivity" 查看前臺(tái)應(yīng)用包名,適用于 Android 7.0 以下,必須先啟動(dòng) app
adb shell dumpsys activity |find “mResumedActivity”:查看前臺(tái)應(yīng)用包名,必須先啟動(dòng)app,適用于Android 8.0以上
8.adb shell am基本指令
1.啟動(dòng)一個(gè) Activity:adb shell am start -n [activityname]
2.等待頁(yè)面啟動(dòng)完成:adb shell am start -W [activityname]
3.先停止應(yīng)用再啟動(dòng):adb shell am start -S [activityname]
4.結(jié)束應(yīng)用: am force-stop [packagename]
9.adb shell dumpsys基本指令
-
監(jiān)控應(yīng)用數(shù)據(jù):
adb shell dumpsys cpuinfo cpu信息 adb shell dumpsys meminfo 內(nèi)存信息 adb shell dumpsys power 電源信息 adb shell dumpsys battery 電池信息 adb shell dumpsys wifi wifi信息 adb shell dumpsys notification 通知信息 adb shell dumpsys activity 獲取頁(yè)面信息 adb shell dumpsys activity services [package-name] 查看正在運(yùn)行的服務(wù)
10.adb結(jié)合 monkey(壓測(cè))
1.什么是monkey
- Monkey 是Android SDK提供的一個(gè)命令行工具,可以簡(jiǎn)單方便的發(fā)送偽隨機(jī)的用戶事件流,對(duì)Android APP做壓力(穩(wěn)定性)測(cè)試。主要是為了測(cè)試app是否存在無(wú)響應(yīng)和崩潰的情況。
2.常用命令
-
隨機(jī)應(yīng)用-隨機(jī)操作
adb shell monkey 100:對(duì)該設(shè)備下,隨機(jī)應(yīng)用,執(zhí)行100次的隨機(jī)操作。(偽隨機(jī))
-
-p <測(cè)試的包名列表>
此參數(shù)指定一個(gè)或多個(gè)包。指定包之后,Monkey將只允許系統(tǒng)啟動(dòng)指定的APP。如果不指定包,Monkey將允許系統(tǒng)啟動(dòng)設(shè)備中的所有APP。 1.不指定包:adb shell monkey 50 2.指定一個(gè)包執(zhí)行50次:adb shell monkey -p 包名 50 3.指定多個(gè)包執(zhí)行50次:adb shell monkey -p 包名1 -p 包名2 50
-
-
指定應(yīng)用-隨機(jī)操作
adb shell monkey -p <包名> 100:指定應(yīng)用(包)隨機(jī)操作100次。這里演示的包名為:com.dfcyc.app.dffs
-
指定應(yīng)用-隨機(jī)操作并打印日志到指定路徑
adb shell monkey -p <包名> -v -v -v 100 >D:\log.txt:指定應(yīng)用隨機(jī)操作100次并打印日志到指定路徑/文件 adb shell monkey -p <包名> -v -v -v 100 不輸出到指定文件
-
-v 顯示日志詳細(xì)程度
用于指定反饋信息級(jí)別(信息級(jí)別就是日志的詳細(xì)程度)??偣卜?span id="n5n3t3z" class="token number">3個(gè)級(jí)別,分別對(duì)應(yīng)的參數(shù): 1)Level 0 : adb shell monkey -p 包名 -v 100 //默認(rèn)級(jí)別,僅提供啟動(dòng)提示、測(cè)試完成和最終結(jié)果等少量信息 2)Level 1 : adb shell monkey -p 包名 -v -v 100 //提供較為詳細(xì)的日志,包括每個(gè)發(fā)送到Activity的事件信息 3)Level 2 : adb shell monkey -p 包名 -v -v -v 100 //最詳細(xì)的日志,包括了測(cè)試中選中/未選中的Activity信息
-
11.adb shell input命令:
-
它用于模擬用戶通過(guò)觸摸屏、按鍵和滑動(dòng)等方式與設(shè)備進(jìn)行交互。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-752712.html
adb shell input:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-752712.html
text [輸入文本] keyevent [輸入事件[ tap [點(diǎn)擊[ swipe [滑動(dòng)<坐標(biāo)><坐標(biāo)為原地,則是長(zhǎng)按>[
到了這里,關(guān)于【Andriod】adb調(diào)試安卓手機(jī)時(shí)連接真機(jī)或模擬器的3種方法,你知道么?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!