文章目录
- 一、系统环境和adb的版本
- 二、设备连接和服务管理
- 1.列出已连接设备(serial + device/offline)
- 2.查看adb版本
- 3.启动adb服务和停止adb服务(解决连接异常)
- 4.连接无线连接设备和断开设备
- 5.进入设备shell终端,exit退出
- 6.以root权限启动adb(仅工程/root机)
- 7.重启设备和关机
- 三、APK安装卸载和包管理
- 1.安装apk
- 2.卸载apk
- 3.列出所有应用包名
- 4.只列出第三方应用(过滤系统包)
- 5.清空应用数据+缓存
- 6.查看apk在设备上的路径
- 7.查看应用详细信息
- 7-1.查看应用的VersionName和VersionCode
- 7-2.查看应用的安装路径
- 7-3.查看应用的权限列表
- 7-4.查看应用的签名信息
- 7-5.查看应用的用户id uid
- 7-6.查看应用的查询启动入口Activity
- 7-7.查看安装时间
- 四、日志Logcat
- 1. 实时打印全部日志
- 2.清空旧日志缓存区
- 3.带时间戳输出日志
- 4.把日志保存到本地
- 5.过滤指定进程日志
- 6.过滤包名日志
- 五、Activity 管理 am(启动 APP、广播)
- 1.启动Activity
- 2.打开网页
- 3.发送广播
- 4.强制杀掉应用进程
- 六、屏幕操作、输入模拟
- 1.保存截图到手机
- 2.把截图拉到电脑
- 3.录制视频并且保存到手机
- 4.保存录屏到手机
- 5.点击屏幕的坐标 x=1000 y=500
- 6.滑动 x1 y1 → x2 y2,时长ms
- 7.点击Home键,返回键,电源键,音量+ -
- 七、屏幕操作、输入模拟
- 1.实时查看进程CPU内存
- 2.查看CPU占用
- 3.查看应用内存
- 4.查看电池信息
- 5.查看屏幕分辨率、dpi
- 6.查看当前前台Activity
- 7.查看应用包信息
- 八、网络硬件控制
- 1.打开wifi 和关闭wifi
- 2.打开移动数据和关闭移动数据
- 3. 获取系统版本
- 4.获取设备型号
- 九、更多的命令
一、系统环境和adb的版本
系统:MacOS 15.1
adb 版本:Version 35.0.2-12147458 (Android studio自带)
测试设备:emulator-5554
前提:手机开启【开发者选项】→【USB 调试】;多设备时加 ‘-s 序列号’ 指定设备:‘adb -s xxx shell’
二、设备连接和服务管理
1.列出已连接设备(serial + device/offline)
adb devices输出结果:
2.查看adb版本
adb version输出结果:
3.启动adb服务和停止adb服务(解决连接异常)
adb start-serveradb kill-server4.连接无线连接设备和断开设备
# 连接设备adb connect127.0.0.1:5555# 断开所有设备adb disconnect# 断开指定的设备adb disconnect127.0.0.1:5555输出结果:
5.进入设备shell终端,exit退出
adb shell输出结果:
6.以root权限启动adb(仅工程/root机)
adb root7.重启设备和关机
# 重启设备adbreboot# 重启进入recoveryadbrebootrecovery# 重启进入fastbootadbrebootfastboot# 关机adb shellreboot-p三、APK安装卸载和包管理
1.安装apk
# 安装apk test_app.apk改为自己的对应命名的apk名称adbinstalltest_app.apk# 覆盖安装,保留数据 test_app.apk改为自己的对应命名的apk名称adbinstall-rtest_app.apk# 允许降级安装 test_app.apk改为自己的对应命名的apk名称adbinstall-dtest_app.apk输出结果:在手机屏幕上看见对应的应用icon和下面的日志说明成功了,
失败的话:参考这个https://github.com/mzlogin/awesome-adb 链接 常见安装失败输出代码、含义及可能的解决办法如下
一般的原因是空间不够内存不足,包没有签名,包签名对不上等等
2.卸载apk
# 卸载应用(参数是包名,不是apk文件名) com.company.app 改为自己对应的包名adb uninstall com.company.app# 卸载但保留数据缓存(参数是包名,不是apk文件名) com.company.app 改为自己对应的包名adb uninstall-kcom.company.app输出结果:
3.列出所有应用包名
adb shell pm list packages输出结果:
4.只列出第三方应用(过滤系统包)
adb shell pm list packages-3输出结果:
5.清空应用数据+缓存
# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb shell pmclearcom.company.app输出结果:
6.查看apk在设备上的路径
# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb shell pm path com.company.app输出结果:
7.查看应用详细信息
# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb shell pm dump com.company.app但是输入的内容很长,我们这边最好选择使用过滤的方式输出,根据自己的需要
7-1.查看应用的VersionName和VersionCode
# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb shell pm dump com.company.app|grepversionName# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb shell pm dump com.company.app|grepversionCode输出结果:
7-2.查看应用的安装路径
# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb shell pm dump com.company.app|greppath输出结果:
7-3.查看应用的权限列表
# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb shell pm dump com.company.app|greppermission输出结果:
7-4.查看应用的签名信息
# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb shell pm dump com.company.app|greppermission输出结果:
7-5.查看应用的用户id uid
# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb shell pm dump com.company.app|grepuserId输出结果:
7-6.查看应用的查询启动入口Activity
# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb shell pm dump com.company.app|grep-A10"android.intent.action.MAIN"输出结果:
7-7.查看安装时间
# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb shell pm dump com.company.app|grep-A10"android.intent.action.MAIN"输出结果:
四、日志Logcat
1. 实时打印全部日志
# 实时打印全部日志adb logcat2.清空旧日志缓存区
# 清空旧日志缓存区adb logcat-c3.带时间戳输出日志
# 清空旧日志缓存区adb logcat-vtime按ctrl+c结束
输出结果:
4.把日志保存到本地
# 把日志保存到本地# /Users/renjianfa/Downloads/ 改为自己保存的路径# logcat.txt 改为自己的命名adb logcat>/Users/renjianfa/Downloads/logcat.txt按ctrl+c结束日志打印,就会保存到当前保存的路径
输出结果:
5.过滤指定进程日志
# 根据包名获取pid# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb shell pidof com.company.app输出结果:
# pid 改为当前的进程pidadb logcat--pid=6064按ctrl+c结束日志打印
输出结果:
6.过滤包名日志
# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb logcat|grepcom.company.app按ctrl+c结束日志打印
输出结果:
五、Activity 管理 am(启动 APP、广播)
1.启动Activity
# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名# 启动的activity: com.company.app.module.MainActivity 根据自己的需要进行修改adb shell am start com.company.app/com.company.app.module.MainActivity输出结果: 打印成功即可并且能打开app的启动类activity
2.打开网页
adb shell am start-aandroid.intent.action.VIEW-dhttps://www.baidu.com输出结果: 打开浏览器的网页
3.发送广播
adb shell am broadcast-aandroid.intent.action.BOOT_COMPLETED# 发送广播4.强制杀掉应用进程
# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb shell am force-stop com.company.app输出结果:打开的应用退出被杀掉
六、屏幕操作、输入模拟
1.保存截图到手机
# 保存截图到手机adb shell screencap /sdcard/screenshot.png输出结果:
2.把截图拉到电脑
# 把截图拉到电脑# /sdcard/screenshot.png 手机的图片路径# /Users/xxxxx/Downloads 改为自己电脑路径adb pull /sdcard/screenshot.png /Users/xxxxx/Downloads输出结果:
3.录制视频并且保存到手机
# 保存截图到手机adb shell screenrecord /sdcard/rec.mp4按ctrl+c结束录制
输出结果:
4.保存录屏到手机
# 保存截图到手机adb shell screenrecord /sdcard/screenrec.mp4输出结果:
5.点击屏幕的坐标 x=1000 y=500
# 点击屏幕的坐标 x=1000 y=500adb shell input tap10005006.滑动 x1 y1 → x2 y2,时长ms
# 滑动 x1 y1 → x2 y2,时长msadb shell input tap2008008003003007.点击Home键,返回键,电源键,音量+ -
# 点击Home键adb shell input keyevent3# 点击返回键adb shell input keyevent4# 点击电源键adb shell input keyevent26# 点击音量+adb shell input keyevent24# 点击音量-adb shell input keyevent25七、屏幕操作、输入模拟
1.实时查看进程CPU内存
# 实时查看进程CPU内存adb shelltop按ctrl+c结束
输出结果:
2.查看CPU占用
# 查看CPU占用adb shell dumpsys cpuinfo3.查看应用内存
# 查看应用内存# 参数是包名,不是apk文件名 com.company.app 改为自己对应的包名adb shell dumpsys meminfo com.company.app输出结果:
4.查看电池信息
# 查看电池信息adb shell dumpsys battery输出结果:
5.查看屏幕分辨率、dpi
# 查看屏幕分辨率、dpiadb shell dumpsys window displays输出结果的内容有点多,这个命令会把 WindowManager 里所有 Display、窗口、任务栈、布局、Z 序、输入法、悬浮窗全部 dump 出来,内容巨多,大部分时候你只关心屏幕基础信息。
我们可以根据自己需要的信息过滤打印
# mDisplayId:主屏幕,多屏时会有 1、2 等# init:物理原始分辨率 + DPI# cur:当前生效分辨率(缩放 / 分屏会变)# app:APP 可用区域,扣掉状态栏 + 导航栏adb shell dumpsys window displays|grep-E"Display|init=|cur=|app=|mDisplayId"输出结果:
6.查看当前前台Activity
# 查看屏幕分辨率、dpiadb shell dumpsys activitytop输出结果的内容有点多,这个命令会把顶层 Activity、View 树、Fragment、DecorView、Bundle、回调、内存 Binder 信息全打出来。
我们可以根据自己需要的信息过滤打印
# 只看Activity行adb shell dumpsys activitytop|grepACTIVITY# 只拿最顶上那一个(最常用)adb shell"dumpsys activity top | grep ACTIVITY | tail -n 1"输出结果:
# 想看 Fragmentadb shell dumpsys activitytop|grep"Fragment #"# 想看 View 树(布局、控件)adb shell dumpsys activitytop|grep"ViewRootImpl"7.查看应用包信息
# 查看应用包信息adb shell dumpsys package com.company.app输出结果的内容有点多,这个命令会把版本、安装路径、四大组件、intent-filter、权限、签名、用户 ID、appOp、共享库、历史安装记录全打出来。
我们可以根据自己需要的信息过滤打印。
八、网络硬件控制
1.打开wifi 和关闭wifi
# 打开wifiadb shell svc wifienable# 关闭wifiadb shell svc wifi disable输出结果:可以查看手机或者模拟器的wifi是否开启或者关闭即可
2.打开移动数据和关闭移动数据
# 打开移动数据adb shell svc dataenable# 关闭移动数据adb shell svc data disable3. 获取系统版本
adb shell getprop ro.build.version.release输出结果:
4.获取设备型号
adb shell getprop ro.product.model输出结果:
九、更多的命令
参考文案和更多实例链接:adb用例大全