APP测试 - adb基础命令2

文章目录

✨✨✨学习的道路很枯燥,希望我们能并肩走下来!

编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。



本文开始

adb 是什么?

Android Debug Bridge(Android 调试桥)简称 adb

Android sdk 中提供的用于管理模拟器或真机状态的工具

adb 工作原理

采用了客户端-服务器(C/S)模型,包括三个部分:

  1. adb client(客户端)
    运行在开发机上(如你执行 adb shell 的终端)
    负责发送命令
  2. adb server(服务端)
    运行在开发机后台(首次 adb 命令时自动启动)
    管理客户端与设备之间的通信,监听 TCP 端口(默认 5037)
  3. adbd-守护进程(ADB Daemon)
    运行在 Android 设备上(需开启"USB 调试")
    接收来自 adb server 的指令并执行(如安装 APK、读取日志、启动 shell)

工作过程:客户端发送指令给服务端,服务端根据指令操作手机设备,操作结果返回服务端;

client 发送命令(如 adb install app.apk)→ server 转发 → adbd 执行 → 返回结果

【注】Client不断发送指令给5037端口,Server端监听到端口指令,操作设备,服务端与设备至少两个端口连接(一个负责连接adb,一个负责连接控制台)

左:客户端,右:服务端-手机

链接真机

  1. 手机端:手机处于USB调式模式
  2. win电脑端需要安装手机驱动
    可以安装豌豆荚或手机助手,在连接真机时会自动安装驱动(不用时需要删除掉)
  • adb环境配置:
    安装java +android sdk 并配置环境变量

adb常用命令

adb命令格式

bash 复制代码
# adb格式 :
adb [-d|-e|-s <serialNumber>]<command>
# 示例
adb -s 连接名称

-d :指定当前唯一通过 Usb 连接的 android 设备为命令目标(了解)

-e :指定当前唯一运行的模拟器为命令目标(了解)

-s :指定相应的设备为命令目标(重点)

adb 安装/卸载命令

安装命令

  1. 普通安装
bash 复制代码
adb install <apk路径>
  1. 覆盖安装/替代安装
bash 复制代码
adb install -r <apk路径>

卸载命令

卸载应用

bash 复制代码
adb uninstall 包名

卸载应用(不删除配置文件,保存数据缓存信息)

bash 复制代码
adb uninstall -k 包名

adb 命令启动页面

查看移动端安装的所有包名路径:

bash 复制代码
# 系统路径
cd /data/data
# 可以操作sdcard路径

包和 Activity(活动页)的概念

  1. package 包:是 Android 应用的唯一标志
  2. Activity 活动页: Android 应用页面,每个页面就是一个 Activity

获取APP当前的页面名

前提:打开手机 app 应用的某个页面,想获取当前页面名称

方法:打开命令行工具,执行下述命令:

bash 复制代码
adb shell "dumpsys window | grep mCurrentFocus"

获取启动页面的 activity

使用命令方式:

1.先运行下述命令

2.打开对应APP

示例:获取APP最初的启动页面,第一个就是,打开每个页面都可以在日志中看到页面名称;

验证获取的页面名称是否正确,使用下面APP启动某个页面的命令验证,会直接打开对应APP页面。

mac/linux命令:

bash 复制代码
adb logcat ActivityManager:I | grep "cmp"

win命令:

bash 复制代码
adb logcat ActivityManager:I | findstr "cmp"

APP启动某个页面

获取包名或者页面名称,验证包名或活动页面名称是否正确

运行命令会直接打开对应APP页面

am: 管理页面相关信息

pm: 包管理相关信息

bash 复制代码
adb shell am start -n <包名>/<avticity名>
# 示例
adb shell am start -n com.tencent.mobileqq/xxxx.xxxActivity

adb命令-清理APP应用缓存

adb shell 应用

查看目录结构:

bash 复制代码
adb shell ls

查看系统当前日期:

bash 复制代码
adb shell date

查看系统 CPU 使用情况:

bash 复制代码
adb shell cat /proc/cpuinfo

查看系统内存使用情况:

bash 复制代码
adb shell cat /proc/meminfo

adb shell查看应用列表

显示所有应用:

bash 复制代码
adb shell pm list packages

显示系统自带应用:

bash 复制代码
adb shell pm list packages -s

显示第 3 方应用:

bash 复制代码
adb shell pm list packages -3

adb shell 清除应用数据及缓存

bash 复制代码
adb shell pm clear <包名>

adb 文件传输

bash 复制代码
# PC端推送到移动端
adb push 电脑路径 设备路径
# 从移动端拉取文件到PC端
adb pull 设备路径 电脑路径

adb 日志操作

日志级别

V --- 明细 verbose(最低优先级)

D --- 调试 debug

I --- 信息 info

W --- 警告 warn

E --- 错误 error

F --- 严重错误 fatal

S --- 无记载 silent(最高优先级,绝不会输出任何内容

查看日志

bash 复制代码
# 查看日志:打开app查看及时日志
adb logcat

查看日志常用参数

adb logcat --help

adb logcat [TAG:LEVEL ] [TAG:LEVEL ] ...

bash 复制代码
# 打印默认日志数据
adb logcat 
adb logcat -v time 打印时间
# 使用不同的颜色来显示每个优先级
adb logcat -v color 
# 将日志输出到手机文件,filename为手机文件的路径地址
adb logcat -f <filename> 
# 保存日志到PC上
adb logcat > log.log 
# 清理已存在的日志
adb logcat -c 

adb命令日志的一行显示解释:

时间戳,进程 ID(PID),线程 ID(TID),日志级别(Priority),标签(Tag),日志内容(Message)

adb logcat 根据条件过滤日志

打印 Warning 及以上级别的日志

bash 复制代码
adb logcat -v time "*:W"      

过滤tag 为ActivityManager,level为Debug及以上级别的日志

bash 复制代码
# S:屏蔽(不显示)所有其他标签(tag)的日志
adb logcat ActivityManager:D '*:S'

总结

✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

相关推荐
中屹指纹浏览器9 小时前
2026指纹浏览器技术选型与落地踩坑指南:从需求匹配到风险规避
经验分享·笔记
seabirdssss10 小时前
Flutter 开发环境配置
android·windows·flutter·adb
M ? A10 小时前
你的 Vue 路由,VuReact 会编译成什么样的 React 路由?
前端·javascript·vue.js·经验分享·react.js·面试·vureact
宏集科技工业物联网11 小时前
医药冷链运输风险,如何让每一批药品运输“可追溯、可放行、可合规”?
经验分享·智慧物流·医药冷链·物流运输监测·冷链运输监测·生物医药冷链·生物医药运输
M ? A11 小时前
你的 Vue 3 响应式状态,VuReact 如何生成 React Hooks 依赖数组?
前端·javascript·vue.js·经验分享·react.js·面试·vureact
川石课堂软件测试11 小时前
requests接口自动化测试
数据库·python·功能测试·测试工具·单元测试·grafana·prometheus
宏集科技工业物联网12 小时前
船舶自动化中的数字化: 为什么可靠的边缘系统在海上至关重要?
经验分享·人机交互·hmi·船舶数字化·船舶自动化·边缘系统
不会写DN12 小时前
如何排查 MySQL 慢查询
数据库·mysql·adb
雾岛听蓝13 小时前
Qt按钮与标签控件详解
开发语言·经验分享·笔记·qt
su_ym811013 小时前
adb原理及常用命令介绍
adb