当前位置: 首页 > news >正文

使用adb调试Android技巧

做测试,不会用ADB?这份Android调试桥实战指南请收好

大家好,今天这篇文章主要聊聊怎么在移动应用测试里用好Android调试桥(ADB),以及它到底能帮我们解决哪些实际问题。

相信大家对测试基础都有所了解,我就不赘述项目环境搭建那些琐事了。ADB的功能一直在迭代,我这里分享一些能切实提升工作效率的实用技巧。因为我平时做移动端测试主要在macOS上(毕竟它能通吃主流移动平台),所以下面的演示以macOS为主,用Windows的朋友如果命令有细微出入,还请见谅哈。

为了逻辑顺畅,咱们先从最基本的命令开始。

一、 设备连接与列表查看

通常我们只连一台设备,但有时候会通过TCP/IP连多台。这时候就得手动指定要在哪台设备上跑命令了。

  • 查看连接设备列表

    adb devices-l

    -l参数能看到更详细的属性,当你连了好几台设备分不清谁是谁时,这招很有用。

  • 指定设备执行命令
    格式为adb -s <设备序列号> <命令>

    # 比如给序列号为 32312b96 的手机装个包adb-s32312b96install~/Downloads/app-release.apk

    如果同时连着真机和模拟器,用-d(真机) 和-e(模拟器) 参数会更方便。

  • 无线连接(TCP/IP)
    前提是手机和电脑在同一Wi-Fi下。

    1. 先用数据线连上,开启TCP/IP模式:adb tcpip 5555
    2. 查看手机IP(设置里看,或用命令adb shell ifconfig wlan0)。
    3. 连接:adb connect 192.168.1.100:5555
    4. 想切回USB模式:adb usb

二、 应用安装、卸载与包名那点事

  • 安装APK

    adbinstall~/path/to/your_app.apk

    常用参数:

    • -d:允许降级安装(覆盖低版本)。
    • -r:保留数据重装。
    • -g:安装时默认授予所有运行时权限(省得装完还得点一堆弹窗)。
  • 查找包名并卸载
    卸载应用必须知道包名(Package Name)。

    # 列出所有包,并过滤关键词adb shell pm list packages|grep"tencent"# 卸载adb uninstall com.tencent.mm# 卸载但保留数据和缓存(-k参数)adb uninstall-kcom.tencent.mm# 清除应用数据和缓存(这招很常用)adb shell pmclearcom.tencent.mm

三、 如何从手机里“掏”出APK文件

有时候我们需要对比线上的包和本地的包,这时候知道怎么把手机里的安装包拽出来就很方便。

  1. 先找到APK的安装路径:
    adb shell pm path com.example.myapp# 输出类似:package:/data/app/~~随机字符/com.example.myapp-随机字符/base.apk
  2. 把文件拉到电脑上:
    adb pull /data/app/~~随机字符/com.example.myapp-随机字符/base.apk ~/Desktop/

四、 文本输入与特殊字符处理

要在输入框里灌入长文本或特殊字符测试时,手动敲太慢了。

  • 基础输入(注意:ADB原生对中文支持不佳,英文数字没问题):
    # 空格需要用 %s 替代adb shell input text Hello%sWorld
  • 输入剪贴板内容(macOS专属技巧):
    adb shell input text$(pbpaste|sed-e's/ /\\%s/g')
    这个命令会把电脑剪贴板里的内容自动处理好空格并发送到手机输入框。

五、 深链(Deep Link)测试

环境不稳定、推送收不到但又急着看跳转效果?直接调起Activity是测试的必备技能。

# 注意:链接中的 & 符号前要加反斜杠 \ 转义adb shell am start-W-aandroid.intent.action.VIEW-d"myapp://open/trip/detail\\&id=12345"com.example.myapp

这能帮你验证各种奇怪的跳转逻辑,比如跳转到失效页面会不会导致应用崩溃。

六、 截图与录屏

报Bug没图没真相?ADB也能搞定。

  • 截图一条龙(直接保存到电脑当前目录):
    adb exec-out screencap-p>~/Desktop/bug_screenshot.png
  • 录制屏幕
    # 开始录制,默认最长180秒adb shell screenrecord /sdcard/demo.mp4# Ctrl+C 停止录制后,拉到电脑上adb pull /sdcard/demo.mp4 ~/Desktop/

七、 模拟系统杀死进程后的状态恢复

这是一个很容易漏测的场景:用户切后台去回微信,过一会儿手机内存不够,系统把我们的App进程杀了。用户再切回来时,页面状态还能恢复吗?

# 模拟系统强杀进程adb shell amkillcom.example.myapp

然后点击图标重新打开App,检查页面和输入框数据是否还在。我们曾经就在这上面踩过坑,导致线上出现崩溃,希望大家引以为戒。

八、 日志抓取与分析

App崩了不要慌,先拉日志。

  • 实时刷屏看错误
    adb logcat-vtime*:E|grepcom.example.myapp
  • 复现前清空缓冲区,导出干净日志
    adb logcat-c# 清空缓冲# ... 复现Bug ...adb logcat-d>~/Desktop/crash_log.txt

九、 电池与省电模式模拟

现在的Android系统有Doze模式(瞌睡模式)和应用待机模式,测试App在省电状态下的表现很重要。

  • 强制进入Doze模式
    adb shell dumpsys battery unplug# 拔掉电源adb shell dumpsys deviceidleenable# 开启空闲模式开关adb shell dumpsys deviceidle force-idle# 强制进入瞌睡
  • 测试完别忘了恢复正常
    adb shell dumpsys deviceidle unforce adb shell dumpsys battery reset

十、 分辨率适配与Monkey测试

  • 临时改分辨率(看看UI在大屏或小屏上会不会错乱):
    adb shell wm size 1080x2400# 自定义宽高adb shell wm density480# 调整密度# 恢复:adb shell wm size reset && adb shell wm density reset
  • Monkey随机压力测试
    # 对 com.example.myapp 执行500次随机点击,间隔300msadb shell monkey-pcom.example.myapp--throttle300-v500

写在最后

ADB的功能非常庞大,远不止今天聊到的这些。技术在不断更新,可能明天有些命令的用法就变了。重要的是掌握查找问题的方法和思路。希望今天整理的内容能对各位的日常工作有所帮助。

http://www.jsqmd.com/news/610933/

相关文章:

  • CDH在线扩容问题记录
  • COC部落冲突安卓自动搜鱼:Python脚本防封号实战
  • 2026年4月OpenClaw(Clawdbot)如何搭建?京东云快速流程:部署与大模型API、Skill集成指南
  • 从一次Sigar崩溃看Java生态的‘版本地狱’:如何优雅管理JDK与本地库的兼容性矩阵(附jdk1.8.0_241下载与降级实操)
  • 一款基于 .NET 开源、跨平台应用程序自动升级组件露
  • 从Hello World到百万QPS流式AI服务:FastAPI 2.0异步配置黄金5步法,附Grafana监控埋点模板
  • 基于FPGA千兆以太网的开发(1)
  • Sokol动画系统:如何在跨平台C/C++项目中实现流畅的2D与3D动画效果
  • 如何用ok-ww自动化工具彻底解放鸣潮游戏时间:终极保姆级指南
  • ArcGIS Pro/10.x导入JPG/PNG图片颜色失真?三步还原真实色彩(附RGB合成设置详解)
  • 终极指南:如何快速安装 Hollow Knight 模组管理器 Scrab
  • 如何快速掌握大规模移动应用开发:10个核心技巧与最佳实践
  • 如何用IBAnimatable与Swift Concurrency打造流畅异步动画:完整指南
  • 安卓逆向调试必备:5分钟搞定ro.debuggable修改的两种方法(含Magisk重置与模块安装)
  • Git容器化CI/CD终极指南:多阶段构建与缓存策略优化
  • PCA9685 16通道PWM控制器硬件原理与嵌入式驱动实践
  • 基于GEC6818的智能生态缸系统开发实践
  • OpenClaw压力测试:Qwen3-32B在RTX4090D上的持续工作稳定性
  • OpenClaw+千问3.5-35B-A3B-FP8:自动化财务报表生成与分析
  • 华为交换机Netstream隐藏技巧:用VLAN统计实现部门流量精准计费
  • 信创项目实战:手把手教你用达梦DM8+东方通TongWeb在国产OS上部署SpringBoot应用
  • 达梦数据库图形化安装界面常见报错及解决方案
  • 2026年如何集成OpenClaw(Clawdbot)?华为云4分钟新手教程及接入百炼APIKey方法
  • rk3588 适配音频解码芯片 es8388
  • OpenClaw+SecGPT-14B黄金组合:自动化渗透测试报告生成术
  • 如何高效协作开发Fisher插件:团队合作的最佳实践指南
  • 2026年怎么安装OpenClaw(Clawdbot)?腾讯云8分钟零门槛安装及接入百炼APIKey流程
  • SetFit零样本分类完全指南:无标注数据也能实现高效分类
  • 避坑指南:YOLOv8模型部署到小程序的5个常见错误及解决方案
  • 7个实用技巧彻底解决WebRTC实时数据同步难题:Immutable.js实战指南