美文网首页
ADB常用命令

ADB常用命令

作者: 李菜菜同学 | 来源:发表于2021-10-12 20:36 被阅读0次

    一、什么是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

    相关文章

      网友评论

          本文标题:ADB常用命令

          本文链接:https://www.haomeiwen.com/subject/mumenltx.html