【adb 命令】

news/2024/11/8 12:00:57/

1.ADB概念
ADB,全名 Android Debug Bridge,是 Android 提供的一个通用的调试工具,是一个 C/S 架构的命令行工具,通过这个工具,使得我们的 PC 能够和 Android 设备来进行通信。

1.1 ADB的工作原理:
adb 主要包含三个部分:
a. Client端:运行在开发机器中,用来发送 adb 命令,比如电脑终端。
b. Daemon 守护进程:运行在调试设备,比如手机、模拟器中,用来接收并执行adb命令。
c. Server 端:运行在开发机器中,用来管理 Client 端和手机端 Daemon 之间的通信。

adb执行流程可理解为:当在电脑命令行窗口中输入adb 命令时,会先执行adb客户端,客户端拿到命令之后,会发送给adb服务端,server再将命令传给Daemon,最后在手机上执行。假如在手机上安装一个应用,会有一个返回信息,会将信息传递给adb服务器,adb 在给客户端,最后显示在命令行。

当然也可以将adb流程总结为以下步骤: a.client 端将命令发送给 server 端 b.server 端会将命令发送给 daemon 端 c.daemon 端进行执行 d.将执行结果,返回给 server 端 e.server 端将结果再返回给 client 端

2.准备工作
2.1 打开 USB 调试模式
为了使用 adb 来控制、调试 Android 设备,我们需要使用 USB 数据线将PC和Android手机设备进行连接,当然必须要将手机设备的USB调试模式打开。

2.2 安装 adb
1)安装 JDK

2)Mac 中安装 adb 工具,命令如下:

brew install android-platform-tools
安装完成之后,可以输入命令来验证 adb 是否安装成功

adb help
或者
adb --help
回车之后会出现adb的版本和帮助信息
3.ADB 命令大全
3.1 简单指令
1)开启或者关闭 adb 服务

开启adb服务:
adb start-server

关掉adb服务:
adb kill-server
2)adb devices:查看电脑是否连接设备

adb devices
或者
adb devices -l
或者
adb get-state
使用该指令将返回设备状态信息,该状态信息包含三种

devices状态:表示移动设备或者模拟器已经连接到adb服务器上
offline状态:表示移动设备或者模拟器没有连接到adb服务器或者没有响应
no devices状态:表示没有设备或者模拟器连接
3)adb install:安装

第一种情况:当只有一台设备时

a. adb install apk路径
b. adb install -r :覆盖原来安装的软件,并保留数据
c. adb install-multiple demo1.apk demo2.apk
d. adb install -t demo1.apk : 如果在安装中,遇到Failure [INSTALL_FAILED_TEST_ONLY installPackageLI],则使用该命令
e. adb install -d demo.apk :允许版本代码升级
f. adb install -g demo.apk :授权所有运行时权限
第二种情况:当有多台设备时,使用-s 序列号 进行指定设备

adb -s 序列号 install apk路径
4)adb uninstall:卸载

adb unstall demo.apk
卸载设备中的应用,并希望保留配置和缓存文件
adb -s 序列号 shell pm uninstall -k 包名
5)adb pull : 将移动设备中的文件传送到PC上

adb pull 移动设备路径 PC路径
6)adb push :将PC中的文件传送到移动设备端

adb push PC路径 移动设备路径
adb push PC路径 /sdcard/
7)adb logcat:查看和跟踪系统日志缓冲区的信息

adb logcat >/Users/xxxx/demo.log
或者
adb -s 序列号 logcat >/Users/xxxx/demo.log
补充

日志信息也存在等级或者优先级,优先级从低到高分为以下几种:

V——Verbose(最低等级,开发调试中的一些详细信息,仅在开发中使用,不可再发布产品中)

D——Debug(调试,用于调试的信息,可以在发布产品中关闭,比较常见)

I——info(信息,一般提示性的信息)

W——Warning(警告)

E——Error(错误信息,已经出现且影响运行的错误,比如应用crash时输出的日志)
查看日志常用的参数

adb logcat -v time 表示打印时间
adb logcat -v color 表示使用不同的颜色来显示每个优先级
adb logcat -f 表示将日志输出到文件(文件存在手机上),例如,adb logcat -f /sdcard/log.log
adb logcat > log.log 表示保存日志到PC上
adb logcat -c 表示清理已存在的日志
adb logcat :W 表示打印Warning以上级别的日志
adb logcat ActivityManager:D '
:S’ 表示过滤tag 为ActivityManager,level为Debug及以上级别的日志(S表示无记载silent,最高优先级,绝不输出任何内容)
3.2 adb高级指令——adb shell指令讲解
Android系统是基于Linux系统开发的,支持常见的Linux命令,这些命令都保存在手机“/system/bin”文件中,如下图所示:

1)显示手机当前目录的所有内容

adb shell ls
或者分开使用
~~adb shell
~~ls
注意:使用exit退出提示符
如果在操作过程中出现没有权限的问题,则需要切换root用户
su root
2)查看电池电量的相关信息

adb shell dumpsys battery

描述信息:
AC powered: false //false表示没有使用AC电源供电
USB powered: true //true表示使用USB电源供电
Wireless powered: false //false表示没使用无线电源
status: 2 //2表示电池正在充电,1表示没充电
health: 2 //2表示电池状态优秀
present: true //true表示已安装电池
level: 42 //电池百分比
scale: 100 //满电量时电池百分比为100%(不确定是否正确)
voltage: 3868 //电池电压
temperature: 330 //电池温度为25摄氏度
technology: Li-ion //电池类型为锂电池

3) 查看无限网络信息

adb shell dumpsys wifi
由于该指令输出的信息很多,所以在此加入参数,当输出信息在显示满一页的时候就暂停输出
如果想再继续输出,则需要按空格键继续显示下页内容。按“Q”停止显示后续输出信息。
adb shell dumpsys wifi | more

4)查看电源管理相关信息

adb shell dumpsys power
含义:可以判断手机是否处于锁屏状态

根据关键信息进行查询,仅输出屏幕关闭时间的设置信息
windows设置:
adb shell dumpsys power | findstr “mScreenOffTimeoutSetting”
Linux设置:
adb shell dumpsys power | grep “mScreenOffTimeoutSetting”
5)am

am 全称为Activity Manager ,可以使用am去模拟各种系统的行为
adb shell am start com.taobao.taobao/com.taobao.tao.TBMainActivity
6)获取包名和界面名

包名(Package,具有唯一性) 界面名(activity)

adb shell dumpsys window | grep mFocusedApp
或者
adb shell “dumpsys window | grep mCurrentFocus”

获取apk包名和界面名
7)获取启动时间:adb shell am start -W 包名/界面名

➜ ~ adb shell am start -W com.qiniu.pili.droid.shortvideo.effect.demo/com.qiniu.pili.droid.shortvideo.demo.activity.MainActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.qiniu.pili.droid.shortvideo.effect.demo/com.qiniu.pili.droid.shortvideo.demo.activity.MainActivity }
Status: ok
Activity: com.qiniu.pili.droid.shortvideo.effect.demo/com.qiniu.pili.droid.shortvideo.demo.activity.MainActivity
ThisTime: 289
TotalTime: 289
WaitTime: 311
Complete

以毫秒为单位
点击图标然后松开,这个时间是系统时间(分配内存和CPU的时间),应用application等待资源启动的时间
ThisTime:为界面启动耗时
TotalTime:应用自身启动耗时=ThisTime + 应用application等资源启动时间
WaitTime:系统启动耗时=TotalTime + 系统资源启动时间
8)adb shell pm list packages 列出包名

  • 列出所有的包名
    adb shell pm list packages
  • 列出通过第三方安装的包
    adb shell pm list packages -3

pm全称为package manager ,可以使用pm命令模拟Android行为或者查询设备上的应用。
9)获取手机Android系统各个分区的相关信息

Android系统各个分区信息
清除应用数据及缓存 pm 表示package management
adb shell pm clear <包名>
4. adb 模拟手机按键
打开“指针位置” 设置 设置——开发者选项——指针位置
执行 adb shell input 命令

adb shell input命令

  • 模拟点击事件
    adb shell input tap x坐标 y坐标
    adb shell input tap 528 1539

  • 输入文本
    首先需要把光标移到输入框,然后执行以下命令
    adb shell input text zengzengzeng

  • 模拟滑动事件
    adb shell swip <起点x> <起点y> <终点x> <终点y> <滑动时长>
    adb shell input swipe 528 1539 528 1300 2000
    2000为滑动时间,单位是毫秒

  • 返回键
    adb shell input keyevent 4

  • 返回home键(置应用于后台)
    adb shell input keyevent 3

  • 音量放大
    adb shell input keyevent 24

  • 音量缩小
    adb shell input keyevent 25

  1. CPU使用情况
    1)查看当前系统CPU使用情况:

adb shell dumpsys cpuinfo
获取的是一段时间的均值

当前系统CPU使用情况
2)进程占用情况

adb shell top
adb shell top | grep “包名” —— 查看某个包的一些性能
adb shell top -d 1 |grep “包名”
3)内存使用情况

adb shell dumpsys meminfo

参考自:
https://zhuanlan.zhihu.com/p/567024111?utm_id=0


http://www.ppmy.cn/news/588362.html

相关文章

什么是α测试β测试和灰度测试?

吃软件测试这碗饭的&#xff0c;如果基础理论都不懂&#xff0c;谈何长久&#xff1f; 欢迎来学习本系列&#xff0c;基础理论比较枯燥&#xff0c;这也是为什么现在很少人掌握的主要原因。热饭尽量用浅显易懂 生动的例子 来帮助大家学习基础理论&#xff0c;所以请耐心看完此系…

网络数码相框 精彩尽在分享

——WIZnet产品应用小例30&#xff1a;网络数码相框 数码相框&#xff1a;目前家中使用的数码相框&#xff0c;大多是通过读取储存卡展示相片&#xff0c;未来的发展趋势&#xff0c;也许根本就不需要储存卡&#xff0c;只需要一个以太网芯片&#xff0c;就可将通过网络传输过来…

[USB芯片]基于CH579M的MINI版数码相框

从最初得到CH554开发板起&#xff0c;就期待着有一块能读取U盘的开发板&#xff0c;后来CH579M EVT开发板出来&#xff0c;可惜没能如愿&#xff0c;于是就将力量集中在CH579M- R1开发板身上。 尽管CH579M- R1较之CH579M EVT的外设相差很多&#xff0c;当还是能够通过它来实现…

数码相框设计-系统框架与环境

当我们需要设计一款产品时&#xff0c;一般分为四个步骤&#xff1a; abcd弄清需求设计框架编写代码测试产品 框架是整个流程最难也是最重要的部分&#xff0c;在此主要来介绍框架与开发的环境来对数码相框有个大体的认识 一、需求 ① 上电&#xff0c;lcd显示一幅图片。 …

9、数码相框编写程序之框架分析

文章目录 1、框架分析1.1、数码相框的整体框架1.2、页面管理模块框架1.3、抽象出结构体 2、框架编写 上一节&#xff1a;8、数码相框之libjpeg的使用 下一节&#xff1a;10、数码相框编写程序之图标显示 1、框架分析 1.1、数码相框的整体框架 我们最终要实现的功能如上图&am…

linux-数码相框

平台&#xff1a;s3c2440 内核版本&#xff1a;linux-2.6.22.6 源码位置&#xff1a;https://github.com/yogach/digital_photo 描述&#xff1a;本数字相框实现共实现了主页面、文件浏览页面、图片模式浏览页面、图片联播页面、设置页面、联播模式时间间隔设置页面。图片部分…

数码相框(四、使用freetype库实现矢量字体显示)

注&#xff1a;本人已购买韦东山第三期项目视频&#xff0c;内容来源《数码相框项目视频》、数码相框-通过freetype库实现矢量显示&#xff0c;只用于学习记录&#xff0c;如有侵权&#xff0c;请联系删除。 在数码相框(三、LCD显示文字)中使用字体的点阵数据显示文字&#xff…

数码相框(三、LCD显示文字)

注&#xff1a;本人已购买韦东山第三期项目视频&#xff0c;内容来源《数码相框项目视频》&#xff0c;只用于学习记录&#xff0c;如有侵权&#xff0c;请联系删除。 文字在LCD上的显示其实就是LCD上的一些点的显示与不显示&#xff0c;这些显示的点就像我们的笔画一样&#x…