ADB命令大全:从基础到高级,解锁Android调试的隐藏功能

张开发
2026/5/4 21:49:35 15 分钟阅读
ADB命令大全:从基础到高级,解锁Android调试的隐藏功能
ADB命令大全从基础到高级解锁Android调试的隐藏功能在移动开发与设备调试领域Android Debug BridgeADB堪称开发者手中的瑞士军刀。这个看似简单的命令行工具实则蕴藏着从基础设备管理到深度系统调优的全套解决方案。不同于普通教程仅停留在adb install或adb devices的层面本文将带您穿透表面功能探索那些鲜为人知却极具实战价值的技巧——无论是批量操作多台设备的自动化脚本还是直接调用系统级API的隐藏命令甚至是绕过图形界面限制的高效文件传输方案都将在此一一揭晓。1. 环境配置与基础操作精要ADB的威力始于正确的环境搭建。官方提供的Platform Tools包虽能满足基本需求但通过自定义配置可显著提升效率。建议将ADB工具路径加入系统环境变量并创建以下别名简化常用操作# 添加到~/.bashrc或~/.zshrc alias adbladb devices -l # 显示设备详情 alias adbkadb kill-server # 快速重启服务 alias adbsadb shell # 进入交互模式多设备管理是实际工作中的常见挑战。当同时连接多台测试设备时使用-s参数指定目标设备显得笨拙。更高效的做法是设置临时默认设备export ANDROID_SERIAL设备序列号 # 后续adb命令将自动作用于该设备基础命令的进阶用法往往被忽视adb devices -l显示设备型号和连接方式USB/网络adb wait-for-device阻塞执行直到设备就绪adb reconnect强制重新连接离线设备提示在持续集成(CI)环境中配合timeout命令使用adb wait-for-device可避免无限等待2. 文件系统深度操作技巧传统文件传输方式效率低下而ADB提供的多种传输方案各有适用场景传输方式命令示例适用场景传输速度标准push/pulladb push local /sdcard/单文件或小批量传输中等sync命令adb sync /sdcard/目录增量同步快tar管道adb shell tar -c -C /datatar -x保留权限的大批量文件权限绕过技巧 当遇到Permission denied错误时可尝试以下方案使用run-as命令访问应用私有目录adb shell run-as com.example.app ls /data/data/com.example.app通过adb exec-out直接获取二进制文件adb exec-out cat /data/local/tmp/file local.file临时提升shell权限adb shell su -c chmod 644 /data/local/tmp/file对于需要频繁传输的场景建议启用无线ADB并配合rsyncadb tcpip 5555 adb connect 设备IP:5555 rsync -avz -e adb shell /local/path :/sdcard/3. 系统调试与性能分析实战ADB的shell子命令可直接调用Android框架层工具以下是几个性能分析黄金组合CPU使用率追踪adb shell top -n 1 -s cpu -o %CPU,%PID,CMDLINE内存泄漏检测adb shell dumpsys meminfo --package com.example.app帧率监测与优化adb shell dumpsys gfxinfo com.example.app reset # 操作应用后获取结果 adb shell dumpsys gfxinfo com.example.app电池耗电分析adb shell dumpsys batterystats --reset # 测试结束后获取数据 adb shell dumpsys batterystats --charged高级用户可启用adb shell screenrecord进行带触控轨迹的录制adb shell screenrecord --bugreport /sdcard/demo.mp4 # 同时收集系统日志 adb logcat -c adb logcat log.txt 4. 自动化与批量操作秘籍结合Shell脚本可实现复杂的自动化测试流程。以下示例展示自动安装APK并运行Monkey测试#!/bin/bash DEVICES$(adb devices | grep -v List | cut -f1) for SERIAL in $DEVICES; do adb -s $SERIAL install app.apk adb -s $SERIAL shell monkey -p com.example.app \ --throttle 100 --pct-touch 40 \ --pct-motion 30 -v 500 $SERIAL.log done wait输入模拟的进阶技巧精确触控操作adb shell input tap x y adb shell input swipe x1 y1 x2 y2 duration物理按键组合adb shell input keyevent KEYCODE_POWER adb shell input keyevent KEYCODE_VOLUME_UP文本注入支持中文adb shell am broadcast -a ADB_INPUT_TEXT --es msg 测试内容对于需要复杂交互的场景可结合expect脚本实现条件响应#!/usr/bin/expect spawn adb shell expect shell send pm list packages -f\n expect eof5. 隐藏功能与系统级调优解锁开发者选项之外的深度设置需要ADB特殊权限显示密度与分辨率动态调整adb shell wm size 1080x1920 adb shell wm density 480禁用系统服务组件adb shell pm disable-user com.android.bluetooth查看当前Activity栈adb shell dumpsys activity activities | grep -E Hist|Task强制应用使用特定GPU渲染器adb shell setprop debug.hwui.renderer opengl系统属性修改需rootadb shell su -c setprop persist.sys.locale zh-CN在Android 11设备上可通过adb install-incremental实现增量APK安装adb install-incremental --force -t app.apk6. 网络诊断与安全增强ADB提供完整的网络诊断工具链TCP连接状态分析adb shell netstat -tuln数据包捕获无需rootadb shell tcpdump -i any -s 0 -w /sdcard/capture.pcap端口转发的高级应用# 本地端口映射到设备 adb forward tcp:8080 tcp:80 # 反向代理设备访问主机服务 adb reverse tcp:8080 tcp:8000无线调试安全加固# 启用TLS加密连接 adb pair 192.168.1.100:12345 # 查看当前连接加密状态 adb transport-id对于需要频繁切换连接方式的场景可编写自动化脚本检测连接状态并智能切换import subprocess import re def get_device_status(): result subprocess.run([adb, devices], stdoutsubprocess.PIPE) return re.findall(r(\w)\t(device|offline), result.stdout.decode()) # 自动切换至最稳定的连接方式

更多文章