ADB常用命令

一、什么是ADB?

adb:一种功能多样的命令行调试工具。

Android 调试桥 (adb) ,可与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

客户端:用于发送命令。客户端在开发机器上运行。可以通过发出 adb 命令从命令行终端调用客户端。(可以通过它对Android应用进行安装、卸载、调试)

PC上的手机助手基本都是通过adb命令去完成的。有时候装了这类手机助手的话,它自带的adb程序可能会与Android SDK下的adb程序产生冲突,5037端口被占用,导致adb命令无法连接到设备。Windows下通过netstat -ano|findstr "5037"

守护程序 (adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行

执行adb shell ps | grep adbd, 可以找到该后台进程,Windows使用findstr替代grep.

adb nodaemon server

服务器(Service):用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行

adb服务启动后,Windows可以在任务管理中找到adb.exe; linux ps -ef | gref adb 可以查看service

二、adb命令

一般都是通过这样子的格式 adb [-d|-e|-s <设备序列号>] <子命令>

通常只有一台设备就忽略 [-d|-e|-s ] 这一部分

参数含义:

-d指定当前唯一通过USB连接的Android设备为命令目标

-e指定当前唯一运行的模拟器为命令目标

-s <serialNumber>指定相应 serialNumber 号的设备/模拟器为命令目标

这里介绍一些常用的命令:

获取设备列表及设备状态

adb devices

图示

获取设备的状态

adb get-state

图示

注意:设备的状态有 3 钟,device , offline , unknown

device:设备正常连接

offline:连接出现异常,设备无响应

unknown:没有连接设备

 结束 adb 服务

adb kill-server 

 启动 adb 服务

adb start-server

注意:通常两个命令一起用,有时候我们开启server会失败,这是因为我们装了的手机助手,豌豆荚或者其他软件自带有自己的adb,导致端口冲突开启失败。一般在连接出现异常,使用 adb devices 未正常列出设备, 设备状态异常时使用 kill-server,然后运行 start-server 进行重启服务。

图示

打印 Android 的系统日志

adb logcat 

图示

 打印 dumpsys、dumpstate、logcat 的输出,也是用于分析错误输出比较多

adb bugreport 

打印日志后重定向到一个文件中

adb bugreport > d:\bugreport.log

图示

 安装应用,覆盖安装是使用 -r 选项

adb install  **.apk


图示

注意:有些adb版本无法支持安装中文的apk

查看手机应用包名

adb shell pm list packages

图示

查看应用对应的apk文件在手机上的安装位置则可以在上面的命令后加-f参数

adb shell pm list packages -f

图示

卸载应用,后面跟的参数是应用的包名,请区别于 apk 文件名

adb uninstall com.perfdog.app

图示

'-k' means keep the data and cache directories , -k 选项,卸载时保存数据和缓存目录

adb -k uninstall

 将 Android 设备上的文件或者文件夹复制到本地

adb pull

adb pull /sdcard/test.txt C:\Users\Administrator\Desktop\log


图示
图示

推送本地文件至 Android 设备

adb push 电脑文件路径 安卓设备路径

图示

获取连接到的手机的序列号

adb get-serialno

获取设备的连接状态

adb -s get-state

图示

等待设备连接成功

adb wait-for-device

该命令将会阻塞一直到默认连接的那部机器状态变为device,也就是连接成功。

三、adb shell

其实adb shell命令就是调用的是Android设备中的system/bin目录下的命令。

Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行。

如何在手机中执行Shell命令?

  每次都加上adb shell来进行命令的发送与执行

adb shell <command>

 先通过adb shell进入手机Shell执行状态,然后直接输入Linux命令。


图示

使一个apk处于禁用状态,相当于卸载了:

disable   <PACKAGE_OR_COMPONENT>

其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile

eg:adb shell su disable com.UCMobile/.main.UCMobile

同时我们在手机上发现,UC浏览器的图标不见了

让一个apk从禁用状态恢复过来

enable <PACKAGE_OR_COMPONENT>

其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobileeg:

adb shell su enable com.UCMobile/.main.UCMobile

同时我们从手机上发现,UC浏览器的图标又出现了。

查看一个apk所在的路径

pm path 包名

图示

adb shell pm path com.UCMobile

查看手机中装的所有的包

pm list packages

图示

屏幕开始录像并且储存到/sdcard中,同时名字为demo.mp4

adb shell screenrecord /sdcard/demo.mp4

录屏设置时长10s,命名为demo.mp4

adb shell screenrecord --time-limit 10 /sdcard/demo.mp4

注意:现在仅支持一部分手机录屏,不支持的手机会出现以下提示

图示

解决方法:

安装了scrcpy之后,只需要输入如下命令,即可录取指定设备的屏幕

scrcpy -s device --render-expired-frames -Nr ./demo.pm4

--render-expired-frames:尽可能最大帧率

-N:不在PC端展示

-r:录制mp4/mkv文件

关闭设备请求,开启设备

adb shell stop

adb shell start

设备关机以及重启

adb reboot

adb shutdown

四、其他常用pm、am、dumpsys、uiautomator、input

pm:安装、卸载、清理包和数据、

am:启动具体的app

dumpsys:获取系统、app的性能数据

uiautomator:获取当前界面结构和执行自动化测试

input:帮助完成一些自动化模拟的指令

pm(package manager)可以获取一些安装到Android设备上的app的信息

pm list packages 用法:list packages [ options] filter

获取所有的应用的包名

adb shell pm list package

列出系统应用

adb shell pm list package -s


列出第三方应用

adb shell pm list package -3


查看它们的关联文件

adb shell pm list package -f

查看软件包的安装来源

adb shell pm list package -i

pm dump 包名 很多dump信息

adb shell pm dump com.yy.huanju

安装应用

pm install 

apk如果在电脑用 adb install 

如果在Android设备上用 adb shell pm install

卸载应用,同adb uninstall ,后跟包名

pm uninstall 

清除应用数据

pm clear 

am(activity manager,字面意思就跟activity有关,大家都知道Android的界面都是由一个个activity显示的)

启动一个Activity

adb shell am start -n package/launch_activity

获取到package和launch_activity

adb shell dumpsys window windows | findstr Current

AndroidSDK中aapt工具,检索命令结果,可以获取到package和launch_activity

aapt.exe d badging xx.apk

这里涉及到一个点,如何找到程序的入口,首先你要知道是哪个activity才能启动;

adb logcat | grep -i displayed

启动华为系统相机

adb shell am start -n com.huawei.camera/com.huawei.camera

打开音乐播放器

am start -a android.intent.action.MUSIC_PLAYER

播放指定音乐:

am start -a "android.intent.action.VIEW" -t "audio/mp3" -d "file:///sdcard/Music/test.mp3"

先停止目标应用,再启动

adb shell am start -S com.huawei.camera/com.huawei.camera

等待应用完成启动

adb shell am start -W com.huawei.camera/com.huawei.camera

启动网页(android.intent.action.VIEW具体参考Android官网)

adb shell am start -aandroid.intent.action.VIEW-d http://baidu.com

结束应用

am force-stop 包名

input

模拟输入,向获得焦点的EditText控件输入内容

adb shell input text  "hello,world"

返回主界面

adb shell input keyevent KEYCODE_HOME

发送一个点击操作的指令,参数是<x> <y>坐标

adb shell input tap 100 100

从左往右滑动屏幕, /从 100 100 经历300毫秒滑动到 200 200

adb shell input swipe 100 100 200 200  300

长按操作,在 100 100 位置长按 1000毫秒

adb shell input swipe 100 100 100 100  1000

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容

  • 大神博客:https://mp.weixin.qq.com/s/fWaa1rutwfoIIrje8RfWBw ad...
    Singal11阅读 2,263评论 2 5
  • 1. adb devices 主要作用:查看当前已连接的设备,连接到计算机的Android设备或者模拟器将...
    C1R2阅读 1,469评论 0 1
  • 最近看到一些关于adb的相关知识,总结一下,这些常用的命令以后可以直接拿来用~ adb其实就是Android De...
    Mr_冯先生阅读 4,193评论 0 10
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,503评论 28 53
  • 首先介绍下自己的背景: 我11年左右入市到现在,也差不多有4年时间,看过一些关于股票投资的书籍,对于巴菲特等股神的...
    瞎投资阅读 5,626评论 3 8