ADB命令

ADB

ADB 全称为 Android Debug Bridge,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是 Android 设备。
ADB 也是 Android SDK 中的一个工具,可以直接操作管理 Android 模拟器或者真实的 Android 设备。

一、常用简单的adb命令

adb version          显示 adb 版本
adb devices          获取设备列表和设备的状态
adb get-state         获取设备的状态(设备的状态有三种:device,设备连接正常;offline,连接出现异常,设备无响应;unknown,设备未连接;)
adb kill-server                        结束adb服务
adb start-server                        启动adb服务
adb install -r <apk 文件路径 >    覆盖安装应用(apk)强制安装
adb install -t 允许测试包
adb install -d 允许进行将见状,也就是安装的比手机上带的版本低
adb install -l 锁定该应用程序
adb install -s 把应用程序安装到sd卡上
adb install -d 允许进行将见状,也就是安装的比手机上带的版本低
adb install -g 为应用程序授予所有运行时的权限
adb uninstall <apk 包名 >        卸载应用(应用包名)
adb pull <手机端文件> <本地路径>拉取,将设备上的文件复制到电脑上
adb push <本地路径> <手机端路径>推送,将电脑上的文件复制到设备上
adb reboot                        重启设备
adb connect    设备号                远程连接设备
adb disconnect                    断开设备连接
adb root                        获取 Android 管理员(root 用户)的权限
adb shell                        登录设备-shell,这个命令将登录设备的 shell(内核),登录 shell 后可以使用 cd、ls、rm 等 Linux 命令
adb remount                        获取 System 分区可写权限,需要 root 后才能有这个权限

二、adb shell pm基本的命令

1、列出安装在设备上的应用包名
# adb shell pm list package -s     列出系统应用包名
# adb shell pm list package -3     列出第三方的应用
# adb shell pm list package -i     列出来源
# adb shell pm list package -f     列出包名和路径
2、列出应用apk的位置
# adb shell pm path packagename    列出应用apk的位置
3、列出应用的详细信息
# adb shell pm dump packagename    列出应用相关的信息
4、清除应用的缓存数据
# adb shell pm clear packagename   清除应用的缓存数据
5、安装卸载手机应用:
首先将test.apk文件push到手机目录中比如/data/local/tmp
# adb shell pm install /data/local/tmp/test.apk       安装;pm insatll命令使用之前还需要将apk push进设备,更频繁。
# adb shell pm install –r /data/local/tmp/test.apk    重新安装
# adb shell pm uninstall -k packagename               卸载,加k保留缓存数据
# adb shell pm install -d apk                         允许降级安装

三、adb shell am基本的命令

1、启动一个 Activity:
# adb shell am start -n activityname    启动一个 Activity    ;adb shell dumpsys activity top | findstr ACTIVITY 可以先获取当前界面的Activity
2、等待页面启动完成:
# adb shell am start -W activityname    等待页面启动完成
3、先停止应用再启动:
# adb shell am start -S activityname    先停止应用再启动
4、结束应用:
# adb shell am force-stop  packagename  结束应用

四、adb shell dumpsys基本的命令

1、监控应用数据:
# adb shell dumpsys cpuinfo       cpu信息
# adb shell dumpsys meminfo       内存信息
# adb shell dumpsys power         电源信息
# adb shell dumpsys battery       电池信息
# adb shell dumpsys wifi          wifi信息
# adb shell dumpsys notification  通知信息
# adb shell dumpsys activity      获取页面信息

五、关闭某项进程,以monkey为例

杀死monkey进程:
# ps | grep monkey     查看monkey进程的pid
# kill pid             杀死monkey进程

六、最近12小时的资源情况

# dumpsys procstats --hours 12    最近12小时的资源情况

七、录制屏幕命令

# adb shell screenrecord /sdcard/demo.mp4    视频录制命令
可选参数:
1、限制录制时间:
参数: --time-limit
2、指定视频分辨率大小:
参数: --size
3、指定视频的比特率:
参数: --bit-rate
4、在命令行显示log:
参数: --verbose

八、截图命令

# adb shell screencap -p /sdcard/screen.png    截图并保存到指定位置    
adb pull /sdcard/mms.png D:\app

九、input命令

adb shell input:
<可选参数>
#text 输入文本
#keyevent 输入事件
#tap 点击
#swipe 滑动<坐标><坐标为原地,则是长按>

十、关于获取当前页面的信息

# adb shell dumpsys activity top | findstr ACTIVITY    获取当前界面的Activity
# adb shell dumpsys activity | findstr mFocusedActivity   获取当前页面的activity

十一、生成当前页面的xml文本

# adb shell uiautomator dump [file]    获取当前页面的xml信息
text 控件中显示的文本内容 
class 控件的类型 
package 包名 
content-desc 说明 
checkable 是否允许check 
checked check状态 
clickable 是否允许click 
enabled 控件状态 
focusable 是否允许获取焦点 
focused 是否获取到焦点 
scrollable 是否允许滚动 
long-clickable 是否允许长安 
password 是否是密码控件 
selected select状态 
bounds 控件绘制的长宽及位置 四个数据,分成两组,分别是 左上坐标和右下坐标

十二、日志操作指令

# logcat -s ActivityManager    打印页面的log信息
adb logcat -v time > D:\logs\logcat.log                输出实时日志并保存在本地文件,通过 Ctrl+C 来停止。抓取日志的步骤:先输入命令启动日志,然后操作 App,复现 bug,再 ctrl+c 停止日志,分析本地保存的文件
adb bugreport >D:\logs\ bugreport.log                输入指令后开始抓取 Log,不需要按 Ctrl+C 来停止,会自动化停止 Log 打印,并将日志文件保存在本地。抓取日志的步骤:主要抓取执行命令时往前 10 分钟左右的日志信息,所以在出现 bug 后立即采用此方法才有效,问题出现时间太长不建议使用此方法

十三、系统操作指令

adb shell getprop ro.product.model  获取设备型号
adb shell getprop ro.build.version.release  获取设备 Android 系统版本
adb get-serialno  获取设备的序列号(设备号)
adb shell wm size  获取设备屏幕分辨率
adb shell dumpsys activity |find "mFocusedActivity" 查看前台应用包名,适用于 Android 7.0 以下,必须先启动 app
adb shell dumpsys activity |find "mResumedActivity" 查看前台应用包名,适用于 Android 8.0 以上,必须先启动 app

十四、其他

一、如果有多个设备/模拟器连接,则需要命令指定目标设备。

参数

含义

-d

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

-e

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

-s <serialNumber>

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

在多个设备/模拟器连接的情况下较常用的是 -s 参数,设备/模拟器的serialNumber(序列号)可以通过 adb devices 命令获取。如:

$ adb devices

List of devices attached
cf264b8f    device
emulator-5554    device
10.129.164.6:5555    device

上述案例表示电脑连接了三个设备/模拟器,输出里的 cf264b8f、emulator-5554 和 10.129.164.6:5555 均为设备/模拟器的序列号。

①比如这时想指定序列号为 cf264b8f 这个设备来运行 adb 命令获取屏幕分辨率:

adb -s cf264b8f shell wm siz

②如果想给 10.129.164.6:5555 这个设备安装应用(这种格式的序列号为无线连接的设备或Genymotion等第三方Android模拟器):

adb -s 10.129.164.6:5555 install test.apk

 

二、Scrcpy 投屏使用

https://github.com/Genymobile/scrcpy

简单地来说,scrcpy就是通过adb调试的方式来将手机屏幕投到电脑上,并可以通过电脑控制您的Android设备。它可以通过USB连接,也可以通过Wifi连接(类似于隔空投屏),而且不需要任何root权限,不需要在手机里安装任何程序。scrcpy同时适用于GNU / Linux,Windows和macOS。

使用要求
Android设备至少需要API 21(Android 5.0以上版本);
确保在您的设备上启用了adb调试;

adb调试的开启一般是多次点击手机系统版本,

例如我的是 系统设置 > 关于手机 > 版本信息 > 多次点击软件版本号,直到提示您已处于开发者模式,无需进行此操作
然后到系统设置 > 开发者选项 > 开启开发者选项 >开启USB调试,如果有USB调试(安全模式),一定要打开,开启USB调试,USB配置选择文件传输

  1. 手机通过USB连接电脑,首次连接会弹出是否信任该电脑,点击始终信任即可。

  2. 文件解压后在当前目录地址栏中输入cmd回车打开cmd窗口

  3. 执行命令 adb usb 查看是否连接成功
  4. 输入命令 scrcpy 即可

连接多个设备使用-s加驱动id选择指定驱动

scrcpy --serial SKPN45IF8DBMRG59

# 或者

scrcpy -s SKPN45IF8DBMRG59

 

posted @ 2023-06-01 09:59  少年阿丁  阅读(89)  评论(0编辑  收藏  举报