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'

总结

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

相关推荐
卡梅德生物科技小能手2 小时前
CD252(LTβR):信号通路机制、药物研发进展及技术挑战
经验分享·深度学习·生活
大白菜1号3 小时前
踩坑了!Postman 正常,但本地项目 406 (Not Acceptable)
vue.js·测试工具·postman
优化控制仿真模型3 小时前
【英二】考研英语二历年真题及答案解析PDF电子版(1980-2025年)
经验分享·考研·pdf
浅念-3 小时前
Linux 基础命令与核心知识点
linux·数据结构·c++·经验分享·笔记·算法·ubuntu
程序员的世界你不懂3 小时前
OpenClaw 通过 CLI 后端使用 Claude 模型
经验分享
The_Ticker3 小时前
日股实时行情接口使用指南
java·经验分享·笔记·python·算法·区块链
程序员小远4 小时前
Python+requests+unittest+excel 实现接口自动化测试框架
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·excel
流星白龙4 小时前
【MySQL】1.MySQL数据库基础
数据库·mysql·adb
文人sec4 小时前
抛弃 Postman!用 Pytest+Requests+Allure+Playwright+Minium 搭建高逼格接口+UI自动化测试平台
自动化测试·python·测试工具·ui·pytest·playwright