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 列出包名
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
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