• 正文
    • 一、adb介紹
    • 二、ADB安裝
    • 二、adb命令的語(yǔ)法
    • 三、android常用adb命令
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

常用adb命令匯總

02/02 10:55
1.6萬(wàn)
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

一、adb介紹

adb:Android Debug Bridge,Android 調(diào)試橋的縮寫(xiě),adb 是一個(gè) C/S 架構(gòu)的命令行工具,

主要由 3 部分組成:

    運(yùn)行在 PC 端的 Client : 可以通過(guò)它對(duì) Android 應(yīng)用進(jìn)行安裝、卸載及調(diào)試運(yùn)行在 PC 端的 Service : 其管理客戶(hù)端到 Android 設(shè)備上 adb 后臺(tái)進(jìn)程的連接運(yùn)行在 Android 設(shè)備上的 adb 后臺(tái)進(jìn)程

二、ADB安裝

默認(rèn)電腦已經(jīng)安裝SDK的,如果沒(méi)有也可以直接網(wǎng)上下載一個(gè)adb工具包。

假定pc上adb工具所在目錄:

H:rxwwindowsadb_fastboot

將adb路徑添加到環(huán)境變量中(這臺(tái)電腦→屬性→高級(jí)系統(tǒng)設(shè)置→環(huán)境變量)

雙擊 Path,然后點(diǎn)擊“新建”,名字可以自取,然后將adb工具的路徑填進(jìn)去。

添加完保存就可以輸入命令驗(yàn)證了 windows+R 打開(kāi)cmd 輸入adb,出現(xiàn)版本號(hào)及菜單即配置完成

C:UsersAdministrator
Android?Debug?Bridge?version?1.0.41
Version?31.0.2-eng.lsh.20220519.123535
RockChip?modified
Installed?as?H:rxwwindowsadb_fastbootadb.exe

global?options:
?-a?????????listen?on?all?network?interfaces,?not?just?localhost
?-d?????????use?USB?device?(error?if?multiple?devices?connected)
?-e?????????use?TCP/IP?device?(error?if?multiple?TCP/IP?devices?available)
?-s?SERIAL??use?device?with?given?serial?(overrides?$ANDROID_SERIAL)
????????????or?devices?devpath?like:
????????????adb?-s?"?usb#vid_2207&pid_0006#6&3795fe82&1&1#{f72fe0d4-cbcb-407d-8814-9ed673d0dd6b}"?shell
????????????adb?-s?usb:3-1.2?shell
?-t?ID??????use?device?with?given?transport?id
?-H?????????name?of?adb?server?host?[default=localhost]
?-P?????????port?of?adb?server?[default=5037]
?-L?SOCKET??listen?on?given?socket?for?adb?server?[default=tcp:localhost:5037]

二、adb命令的語(yǔ)法

adb 命令的基本語(yǔ)法如下:

adb?[-d|-e|-s?<serialNumber>]?<command>

如果只有一個(gè)設(shè)備/模擬器連接時(shí),可以省略掉 [-d| -e|-s] 這一部分,直接使用

adb?<command>

為命令指定目標(biāo)設(shè)備
如果有多個(gè)設(shè)備/模擬器連接,則需要為命令指定目標(biāo)設(shè)備。

參數(shù) 含義
-d 指定當(dāng)前唯一通過(guò) USB 連接的 Android 設(shè)備為命令目標(biāo)
-e 指定當(dāng)前唯一運(yùn)行的模擬器為命令目標(biāo)
-s serialNumber> 指定相應(yīng) serialNumber 號(hào)的設(shè)備/模擬器為命令目標(biāo)

serialNumber 可以通過(guò) adb devices 命令獲取,如:

C:UsersAdministrator>adb?devices
List?of?devices?attached
0123456789ABCDEF????????device

比如這時(shí)想指定 0123456789ABCDEF 這個(gè)設(shè)備來(lái)運(yùn)行 adb 命令獲取屏幕分辨率:

adb?-s?0123456789ABCDEF?shell?wm?size

三、android常用adb命令

啟動(dòng)adb服務(wù)或停止adb服務(wù)

    • adb kill-server:結(jié)束 adb 服務(wù)adb start-server:?jiǎn)?dòng) adb 服務(wù)

 

    一般在連接出現(xiàn)異常,使用 adb devices 未正常列出設(shè)備,設(shè)備狀態(tài)異常時(shí)使用 kill-server,然后運(yùn)行 start-server 進(jìn)行重啟服務(wù)

1)設(shè)備連接信息

adb?devices:獲取設(shè)備信息

2)安裝應(yīng)用

adb?install?[-lrtsdg]?<path_to_apk>

如:adb install xxx.apk:安裝應(yīng)用

參數(shù) 含義
-r 允許覆蓋安裝
-t 允許測(cè)試包 (允許安裝 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的應(yīng)用)
-d 允許降級(jí)覆蓋安裝
-g 授予所有運(yùn)行時(shí)權(quán)限
-s 將應(yīng)用安裝到 sdcard
-l 將應(yīng)用安裝到保護(hù)目錄 /mnt/asec

如: adb -s 設(shè)備名稱(chēng) install xxx.apk:多個(gè)設(shè)備,安裝到指定設(shè)備(通過(guò)adb devices獲取設(shè)備名稱(chēng))

一口君常用:

adb?-t?install?xxx.apk

3)卸載應(yīng)用

adb?uninstall?[-k]?<packagename>:卸載應(yīng)用
    -k 參數(shù)可選,表示卸載應(yīng)用但保留數(shù)據(jù)和緩存目錄
    adb shell pm uninstall --user 0 包名:卸載系統(tǒng)應(yīng)用adb shell cmd package install-existing 包名:卸載系統(tǒng)應(yīng)用后,再恢復(fù)系統(tǒng)應(yīng)用

4)清除應(yīng)用數(shù)據(jù)與緩存

    adb shell pm clear 包名:清除應(yīng)用緩存

效果相當(dāng)于在設(shè)置里的應(yīng)用信息界面點(diǎn)擊了「清除緩存」和「清除數(shù)據(jù)」。

5)查看前臺(tái) Activity(查看當(dāng)前活動(dòng)窗口的類(lèi)名)

    adb shell dumpsys window | findstr mCurrentFocus

6)查看應(yīng)用安裝路徑

adb?shell?pm?path?<PACKAGE>

如:

C:UsersAdministrator>adb?shell?pm?path?com.upuphone.push
package:/data/app/~~Mbj7C7djGMaqwuXZBfScGg==/com.upuphone.push-bIO4mliiakFsN-xk4IxnTA==/base.apk

7)查看應(yīng)用列表

命令格式:

adb?shell?pm?list?packages?[-f]?[-d]?[-e]?[-s]?[-3]?[-i]?[-u]?[--user?USER_ID]?[FILTER]
參數(shù) 顯示列表
無(wú) 所有應(yīng)用
-f 顯示應(yīng)用關(guān)聯(lián)的 apk 文件
-d 只顯示 disabled 的應(yīng)用
-e 只顯示 enabled 的應(yīng)用
-s 顯示系統(tǒng)應(yīng)用
-3 只顯示第三方應(yīng)用
-i 顯示應(yīng)用的 installer
-u 包含已卸載應(yīng)用
<FILTER> 包名包含 <FILTER> 字符串

8)查看應(yīng)用版本信息

adb?shell?dumpsys?package?<package_name>?|?findstr?version

如:

C:UsersAdministrator>adb?shell?dumpsys?package?com.example.sdkdemo?|?findstr?version
????versionCode=3?minSdk=29?targetSdk=32
????versionName=2.1
????signatures=PackageSignatures{d9064a9?version:2,?signatures:[f4d74dfb],?past?signatures:[]}

如果是系統(tǒng)應(yīng)用,則會(huì)有2個(gè)版本,下面的是系統(tǒng)app本身的版本,上面的是升級(jí)之后的系統(tǒng)app版本如:

C:UsersAdministrator>adb?shell?dumpsys?package?com.android.settings?|?findstr?version
????versionCode=30?minSdk=30?targetSdk=30
????versionName=11
????signatures=PackageSignatures{af44d47?version:3,?signatures:[2bf9b00d],?past?signatures:[]}
????versionCode=30?minSdk=30?targetSdk=30
????versionName=11
????signatures=PackageSignatures{a29ef12?version:0,?signatures:[],?past?signatures:[]}

9)獲取log

獲取安卓運(yùn)行的log
命令:

adb?logcat?<設(shè)備里的文件路徑>?[電腦上的目錄](méi)
例1:清除logcat所有l(wèi)og
adb?logcat?-c
例2:保存logcat所有l(wèi)og到本地文件peng.log中
adb?logcat?->?peng.log

按ctrl+c停止保存

10)復(fù)制設(shè)備里的文件到電腦pull

命令:

adb?pull?<設(shè)備里的文件路徑>?[電腦上的目錄](méi)

其中 電腦上的目錄 參數(shù)可以省略,默認(rèn)復(fù)制到當(dāng)前目錄。

例:

adb?pull?/sdcard/sr.mp4?~/tmp/

小技巧:
設(shè)備上的文件路徑可能需要 root 權(quán)限才能訪(fǎng)問(wèn),如果你的設(shè)備已經(jīng) root 過(guò),可以先使用 adb shell 和 su 命令在 adb shell 里獲取 root 權(quán)限后,先 cp /path/on/device /sdcard/filename 將文件復(fù)制到 sdcard,然后 adb pull /sdcard/filename /path/on/pc。

11)復(fù)制電腦里的文件到設(shè)備push

命令:

adb?push?<電腦上的文件路徑>?<設(shè)備里的目錄>

例:拷貝可執(zhí)行程序modetest到bin目錄下

adb?root
adb?remount
adb?push?~/modetest?/bin/

前面兩個(gè)命令是獲取權(quán)限

12)查看設(shè)備信息

型號(hào)
adb?shell?getprop?ro.product.model

如:

C:UsersAdministrator>adb?shell?getprop?ro.product.model
LE2123
電池電量
adb?shell?dumpsys?battery

如:

C:UsersAdministrator>adb?shell?dumpsys?battery
Current?Battery?Service?state:
??AC?powered:?false
??USB?powered:?true
??Wireless?powered:?false
??Max?charging?current:?4870000
??Max?charging?voltage:?9000000
??Charge?counter:?2200000
??status:?5
??health:?2
??present:?true
??level:?100
??scale:?100
??voltage:?4372
??temperature:?350
??technology:?Li-ion

其中 scale 代表最大電量,level 代表當(dāng)前電量。上面的輸出表示還剩下 100% 的電量。

13)屏幕分辨率wm size

項(xiàng)目 Value
adb命令 說(shuō)明
adb shell wm size 查看分辨率
adb shell wm size 1920x1280 修改分辨率 (小寫(xiě)的x)
adb shell wm density 240 修改dpi
adb shell wm density reset 重置density
adb shell wm size reset 重置分辨率

輸出示例:

Physical?size:?1080x1920

表示該設(shè)備屏幕分辨率為 1080px * 1920px
如果使用命令修改過(guò),那輸出可能是:

Physical?size:?1080x1920
Override?size:?480x1024

表明設(shè)備的屏幕分辨率原本是 1080px * 1920px,當(dāng)前被修改為 480px * 1024px。

14)屏幕密度wm density

項(xiàng)目 Value
adb命令 說(shuō)明
adb shell wm density 查看dpi。
adb shell wm density 240 修改dpi
adb shell wm density reset 重置density

輸出示例:

Physical?density:?420

如果使用命令修改過(guò),那輸出可能是:

Physical?density:?480
Override?density:?160

表明設(shè)備的屏幕密度原來(lái)是 480dpi,當(dāng)前被修改為 160dpi。

15)android_id

adb?shell?settings?get?secure?android_id

如:

C:UsersAdministrator>adb?shell?settings?get?secure?android_id
6596f32b63225bac

16)IMEI

android11.0獲取方式(需要root權(quán)限)

adb?shell
su
service?call?iphonesubinfo?1

如:

C:UsersAdministrator>adb?shell
OnePlus9Pro:/?#?su
su
/system/bin/sh:?su:?inaccessible?or?not?found
127|OnePlus9Pro:/?#?service?call?iphonesubinfo?1
service?call?iphonesubinfo?1
Result:?Parcel(
??0x00000000:?00000000?0000000f?00300030?00300031?'........0.0.1.0.'
??0x00000010:?00380030?00340034?00360037?00310039?'0.8.4.4.7.6.9.1.'
??0x00000020:?00300032?00000037???????????????????'2.0.7...????????')
OnePlus9Pro:/?#

把里面的有效內(nèi)容提取出來(lái)就是 IMEI 了,比如這里的是 001008447691207。

退出adb shell 方式:

輸入exit即可

17)Android 系統(tǒng)版本

adb?shell?getprop?ro.build.version.release

如:

C:UsersAdministrator>adb?shell?getprop?ro.build.version.release
11

18)IP 地址

設(shè)備的 IP 地址的時(shí)候都得「設(shè)置」-「關(guān)于手機(jī)」-「狀態(tài)信息」-「IP地址」很煩對(duì)不對(duì)?通過(guò) adb 可以方便地查看。

adb?shell?ifconfig?|?grep?Mask

如:

inet?addr:10.130.245.230??Mask:255.255.255.252
inet?addr:127.0.0.1??Mask:255.0.0.0

那么 10.130.245.230 就是設(shè)備 IP 地址。

在有的設(shè)備上這個(gè)命令沒(méi)有輸出,如果設(shè)備連著 WiFi,可以使用如下命令來(lái)查看局域網(wǎng) IP:

adb?shell?ifconfig?wlan0

如:

C:UsersAdministrator>adb?shell?ifconfig?wlan0
wlan0?????Link?encap:Ethernet??HWaddr?a6:44:63:ac:88:7e??Driver?cnss_pci
??????????inet?addr:10.20.1.158??Bcast:10.20.1.255??Mask:255.255.254.0
??????????inet6?addr:?fe80::a444:63ff:feac:887e/64?Scope:?Link
??????????UP?BROADCAST?RUNNING?MULTICAST??MTU:1500??Metric:1
??????????RX?packets:21765?errors:0?dropped:2?overruns:0?frame:0
??????????TX?packets:11168?errors:0?dropped:0?overruns:0?carrier:0
??????????collisions:0?txqueuelen:3000
??????????RX?bytes:6121620?TX?bytes:3229281

inet addr:10.20.1.158就是ip地址。

19) Mac 地址

adb?shell?cat?/sys/class/net/wlan0/address

如:

C:UsersAdministrator>adb?shell?cat?/sys/class/net/wlan0/address
a6:44:63:ac:88:7e

這查看的是局域網(wǎng) Mac 地址,移動(dòng)網(wǎng)絡(luò)或其它連接的信息可以通過(guò)

adb?shell?netcfg?命令來(lái)查看

20)CPU 信息

adb?shell?cat?/proc/cpuinfo

21)內(nèi)存信息

adb?shell?cat?/proc/meminfo

其中,MemTotal 就是設(shè)備的總內(nèi)存,MemFree 是當(dāng)前空閑內(nèi)存。

22)屏幕截圖screencap

adb?exec-out?screencap?-p?>?sc.png

其中 -p指的是保存文件格式為png格式,sc.png為指定的文件名

然而實(shí)測(cè)這個(gè)截的圖片,無(wú)法打開(kāi)。
參考鏈接: link

可以使用下面的方式:

先截圖保存到設(shè)備里:

adb?shell?screencap?-p?/sdcard/sc.png

然后將 png 文件導(dǎo)出到電腦:

adb?pull?/sdcard/sc.png

23)錄制屏幕screenrecord

錄制屏幕以 mp4 格式保存到 /sdcard:

adb?shell?screenrecord?/sdcard/filename.mp4

需要停止時(shí)按 Ctrl+C,默認(rèn)錄制時(shí)間和最長(zhǎng)錄制時(shí)間都是 180 秒。

如果需要導(dǎo)出到電腦:

adb?pull?/sdcard/filename.mp4

開(kāi)發(fā)過(guò)程與產(chǎn)品或測(cè)試溝通經(jīng)常用到(異地辦公時(shí))

24)設(shè)置系統(tǒng)日期和時(shí)間

注:需要 root 權(quán)限。

adb?shell
su
date?-s?20230529.131500

表示將系統(tǒng)日期和時(shí)間更改為 2023 年 05 月 29 日 13 點(diǎn) 15 分 00 秒。

25)檢測(cè)設(shè)備是否已 root

adb?shell
su

此時(shí)命令行提示符是 $ 則表示沒(méi)有 root 權(quán)限,是 # 則表示已 root。

26)使用 Monkey 進(jìn)行壓力測(cè)試

Monkey 可以生成偽隨機(jī)用戶(hù)事件來(lái)模擬單擊、觸摸、手勢(shì)等操作,可以對(duì)正在開(kāi)發(fā)中的程序進(jìn)行隨機(jī)壓力測(cè)試。

簡(jiǎn)單用法:

adb?shell?monkey?-p?<packagename>?-v?500

表示向 指定的應(yīng)用程序發(fā)送 500 個(gè)偽隨機(jī)事件。

27)模擬按鍵/輸入input

adb shell 里有個(gè)很實(shí)用的命令叫 input,通過(guò)它可以做一些有趣的事情。

adb?shell?input?keyevent?<keycode>

不同的 keycode 能實(shí)現(xiàn)不同的功能

項(xiàng)目 Value
3 HOME 鍵
4 返回鍵
5 打開(kāi)撥號(hào)應(yīng)用
6 掛斷電話(huà)
24 增加音量
25 降低音量
26 電源
27 拍照(需要在相機(jī)應(yīng)用里)
82 菜單鍵
85 播放/暫停
86 停止播放
87 播放下一首
88 播放上一首
122 移動(dòng)光標(biāo)到行首或列表頂部
123 移動(dòng)光標(biāo)到行末或列表底部
126 恢復(fù)播放
127 暫停播放
164 靜音
176 打開(kāi)系統(tǒng)設(shè)置
187 切換應(yīng)用
207 打開(kāi)聯(lián)系人
208 打開(kāi)日歷
209 打開(kāi)音樂(lè)
210 打開(kāi)計(jì)算器
220 降低屏幕亮度
221 提高屏幕亮度
223 系統(tǒng)休眠
224 點(diǎn)亮屏幕
231 打開(kāi)語(yǔ)音助手
276 如果沒(méi)有 wakelock 則讓系統(tǒng)休眠

28)網(wǎng)絡(luò)連接connect

除了用usb連接安卓設(shè)備之外,還可以通過(guò)網(wǎng)絡(luò)來(lái)連接
首先確認(rèn)pc和設(shè)備是網(wǎng)絡(luò)互通的,
然后使用下面命令:

adb?connect?192.168.10.111:5555
adb?shell

相關(guān)推薦

  • 3種系統(tǒng)加持,RK3576核心板Linux、Android、桌面系統(tǒng)全兼容
    文章
    715
    04/02 16:40
  • 安卓系統(tǒng)開(kāi)源時(shí)代終結(jié),影響幾何?
  • Android系統(tǒng)主板應(yīng)用配置默認(rèn)獲取管理所有文件權(quán)限方法
  • 瑞芯微開(kāi)發(fā)板/主板Android調(diào)試串口配置為普通串口方法
  • 安卓手機(jī)如何打開(kāi)開(kāi)發(fā)者模式?用scrcpy將安卓手機(jī)投屏到電腦
    文章
    1657
    02/06 13:31
  • 登錄即可解鎖
    • 海量技術(shù)文章
    • 設(shè)計(jì)資源下載
    • 產(chǎn)業(yè)鏈客戶(hù)資源
    • 寫(xiě)文章/發(fā)需求
    立即登錄

    公眾號(hào)『一口Linux』號(hào)主彭老師,擁有15年嵌入式開(kāi)發(fā)經(jīng)驗(yàn)和培訓(xùn)經(jīng)驗(yàn)。曾任職ZTE,某研究所,華清遠(yuǎn)見(jiàn)教學(xué)總監(jiān)。擁有多篇網(wǎng)絡(luò)協(xié)議相關(guān)專(zhuān)利和軟件著作。精通計(jì)算機(jī)網(wǎng)絡(luò)、Linux系統(tǒng)編程、ARM、Linux驅(qū)動(dòng)、龍芯、物聯(lián)網(wǎng)。原創(chuàng)內(nèi)容基本從實(shí)際項(xiàng)目出發(fā),保持原理+實(shí)踐風(fēng)格,適合Linux驅(qū)動(dòng)新手入門(mén)和技術(shù)進(jìn)階。