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

ADB命令手册 - Android Debug Bridge命令参考

ADB命令手册 - Android Debug Bridge命令参考

本手册包含ADB的常用命令、示例和拓展知识,帮助开发者和测试人员更好地使用ADB工具进行Android设备的调试和管理。

第一部分:ADB基础命令

adb version

  • 描述:显示ADB版本信息
  • 示例adb version
  • 示例输出
    Android Debug Bridge version 1.0.41
    Version 33.0.3-8952118
    Installed as D:\android-sdk\platform-tools\adb.exe
    

adb start-server

  • 描述:启动ADB服务器
  • 示例adb start-server
  • 示例输出
    * daemon not running; starting now at tcp:5037
    * daemon started successfully
    

adb kill-server

  • 描述:停止ADB服务器
  • 示例adb kill-server
  • 示例输出(无输出,但ADB服务已停止)

adb devices

  • 描述:列出所有已连接的设备
  • 示例adb devices
  • 示例输出
    List of devices attached
    127.0.0.1:62001 device
    emulator-5554 device
    

adb get-state

  • 描述:获取设备状态
  • 示例adb get-state
  • 示例输出device # 可能的输出: device, offline, unknown

第二部分:应用管理命令

adb install <apk文件路径>

  • 描述:安装应用到设备
  • 示例adb install C:\Users\user\Desktop\app.apk
  • 示例输出
    Performing Streamed Install
    Success
    

adb install -r <apk文件路径>

  • 描述:覆盖安装应用
  • 示例adb install -r C:\Users\user\Desktop\app.apk
  • 示例输出
    Performing Streamed Install
    Success
    

adb install -d <apk文件路径>

  • 描述:允许降级安装应用
  • 示例adb install -d C:\Users\user\Desktop\old_version.apk
  • 示例输出
    Performing Streamed Install
    Success
    

adb uninstall <包名>

  • 描述:卸载应用
  • 示例adb uninstall com.example.app
  • 示例输出Success

adb uninstall -k <包名>

  • 描述:卸载应用但保留数据和缓存
  • 示例adb uninstall -k com.example.app
  • 示例输出Success

adb shell pm list packages

  • 描述:列出所有已安装的应用包名
  • 示例adb shell pm list packages
  • 示例输出
    package:com.android.systemui
    package:com.example.app
    ...
    

adb shell pm list packages -3

  • 描述:列出所有第三方应用包名
  • 示例adb shell pm list packages -3
  • 示例输出
    package:com.example.app
    package:com.another.app
    ...
    

adb shell pm clear <包名>

  • 描述:清除应用数据和缓存
  • 示例adb shell pm clear com.example.app
  • 示例输出Success

第三部分:文件传输命令

adb push <本地文件路径> <设备文件路径>

  • 描述:将本地文件推送到设备
  • 示例adb push C:\Users\user\Desktop\test.txt /sdcard/
  • 示例输出
    C:\Users\user\Desktop\test.txt: 1 file pushed. 0.1 MB/s (123 bytes in 0.001s)
    

adb pull <设备文件路径> <本地文件路径>

  • 描述:从设备拉取文件到本地
  • 示例adb pull /sdcard/test.txt C:\Users\user\Desktop/
  • 示例输出
    /sdcard/test.txt: 1 file pulled. 0.2 MB/s (123 bytes in 0.001s)
    

adb push <本地目录> <设备目录>

  • 描述:将本地目录推送到设备
  • 示例adb push C:\Users\user\Desktop\folder /sdcard/
  • 示例输出
    C:\Users\user\Desktop\folder/: 3 files pushed. 0.5 MB/s (1234 bytes in 0.002s)
    

第四部分:设备控制命令

adb reboot

  • 描述:重启设备
  • 示例adb reboot
  • 示例输出(无输出,设备开始重启)

adb reboot recovery

  • 描述:重启设备到Recovery模式
  • 示例adb reboot recovery
  • 示例输出(无输出,设备重启到Recovery模式)

adb reboot bootloader

  • 描述:重启设备到Bootloader模式
  • 示例adb reboot bootloader
  • 示例输出(无输出,设备重启到Bootloader模式)

adb shell screencap -p <保存路径>

  • 描述:截取设备屏幕并保存
  • 示例adb shell screencap -p /sdcard/screenshot.png
  • 示例输出(无输出,截图已保存)

adb shell screenrecord <保存路径>

  • 描述:录制设备屏幕
  • 示例adb shell screenrecord /sdcard/record.mp4
  • 示例输出(按Ctrl+C停止录制)

adb shell input tap

  • 描述:模拟点击屏幕
  • 示例adb shell input tap 500 1000
  • 示例输出(无输出,设备执行点击操作)

adb shell input swipe <时长>

  • 描述:模拟滑动屏幕
  • 示例adb shell input swipe 500 1500 500 500 1000
  • 示例输出(无输出,设备执行滑动操作)

adb shell input text <文本>

  • 描述:输入文本
  • 示例adb shell input text 'HelloWorld'
  • 示例输出(无输出,设备输入文本)

第五部分:日志和调试命令

adb logcat

  • 描述:查看设备日志
  • 示例adb logcat
  • 示例输出
    --------- beginning of main
    01-01 12:00:00.000 1234 5678 I ActivityManager: ...
    

adb logcat -d

  • 描述:导出日志但不阻塞
  • 示例adb logcat -d > log.txt
  • 示例输出(将日志保存到log.txt文件)

adb logcat *:E

  • 描述:只显示错误日志
  • 示例adb logcat *:E
  • 示例输出
    --------- beginning of main
    01-01 12:00:00.000 1234 5678 E AndroidRuntime: FATAL EXCEPTION: ...
    

adb shell dumpsys

  • 描述:转储系统状态信息
  • 示例adb shell dumpsys meminfo
  • 示例输出
    Applications Memory Usage (in Kilobytes):
    Uptime: 1234567 Realtime: 1234567Total PSS by process:
    ...
    

adb shell dumpsys meminfo <包名>

  • 描述:查看应用内存使用情况
  • 示例adb shell dumpsys meminfo com.example.app
  • 示例输出
    Applications Memory Usage (in Kilobytes):
    Uptime: 1234567 Realtime: 1234567** MEMINFO in pid 1234 [com.example.app] **
    ...
    

adb shell dumpsys battery

  • 描述:查看电池信息
  • 示例adb shell dumpsys battery
  • 示例输出
    Current Battery Service state:AC powered: falseUSB powered: trueWireless powered: falseMax charging current: 500000Max charging voltage: 5000000...
    

adb shell dumpsys cpuinfo

  • 描述:查看CPU使用情况
  • 示例adb shell dumpsys cpuinfo
  • 示例输出
    Load: 0.8 / 0.9 / 1.0
    CPU usage from 1234ms to 0ms ago:
    ...
    

第六部分:系统信息命令

adb shell getprop ro.build.version.release

  • 描述:获取Android系统版本
  • 示例adb shell getprop ro.build.version.release
  • 示例输出13

adb shell getprop ro.product.model

  • 描述:获取设备型号
  • 示例adb shell getprop ro.product.model
  • 示例输出Pixel 7

adb shell getprop ro.product.manufacturer

  • 描述:获取设备制造商
  • 示例adb shell getprop ro.product.manufacturer
  • 示例输出Google

adb shell wm size

  • 描述:获取设备屏幕分辨率
  • 示例adb shell wm size
  • 示例输出Physical size: 1080x2400

adb shell wm density

  • 描述:获取设备屏幕密度
  • 示例adb shell wm density
  • 示例输出Physical density: 420

adb shell df

  • 描述:查看存储空间使用情况
  • 示例adb shell df -h
  • 示例输出
    Filesystem                Size      Used Available Use% Mounted on
    /dev/block/dm-0          117.8G    56.2G     61.6G  48% /
    ...
    

adb shell free

  • 描述:查看内存使用情况
  • 示例adb shell free -m
  • 示例输出
                   total        used        free      shared     buffers
    Mem:            7864        6543        1321          98         123
    ...
    

第七部分:网络相关命令

adb shell ifconfig

  • 描述:查看网络接口信息
  • 示例adb shell ifconfig
  • 示例输出
    wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
    ...
    

adb shell ping <目标IP/域名>

  • 描述:测试网络连接
  • 示例adb shell ping www.google.com
  • 示例输出
    PING www.google.com (142.250.74.4): 56 data bytes
    64 bytes from 142.250.74.4: seq=0 ttl=117 time=12.345 ms
    ...
    

adb shell netstat

  • 描述:查看网络连接状态
  • 示例adb shell netstat
  • 示例输出
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    tcp        0      0 192.168.1.100:45678     142.250.74.4:443        ESTABLISHED
    ...
    

adb reverse tcp:<本地端口> tcp:<设备端口>

  • 描述:端口转发(将设备端口映射到本地)
  • 示例adb reverse tcp:8080 tcp:8080
  • 示例输出(无输出,端口转发已设置)

adb forward tcp:<本地端口> tcp:<设备端口>

  • 描述:端口转发(将本地端口映射到设备)
  • 示例adb forward tcp:8080 tcp:8080
  • 示例输出(无输出,端口转发已设置)

第八部分:高级功能和拓展知识

1. ADB无线连接

  • 首先通过USB连接设备并启用调试
  • 设置设备监听端口:adb tcpip 5555
  • 断开USB连接
  • 查找设备IP地址:adb shell ifconfig wlan0
  • 无线连接设备:adb connect 设备IP:5555
  • 验证连接:adb devices
  • 断开无线连接:adb disconnect 设备IP:5555

2. ADB Shell 常用命令

  • ls:列出目录内容
  • cd:切换目录
  • mkdir:创建目录
  • rm:删除文件
  • rm -r:删除目录
  • cat:查看文件内容
  • cp:复制文件
  • mv:移动文件
  • ps:查看进程
  • kill:终止进程
  • top:实时查看CPU使用情况

3. 模拟各种用户操作

  • 模拟Home键:adb shell input keyevent 3
  • 模拟返回键:adb shell input keyevent 4
  • 模拟菜单键:adb shell input keyevent 82
  • 模拟电源键:adb shell input keyevent 26
  • 模拟音量增加:adb shell input keyevent 24
  • 模拟音量减少:adb shell input keyevent 25

4. ADB 环境变量配置

  • Windows:将adb.exe所在目录添加到系统环境变量PATH中
  • macOS/Linux:将adb所在目录添加到/.bashrc或/.bash_profile中
  • 配置后可在任何目录下直接使用adb命令

5. ADB 常见问题排查

  • 设备未检测到:尝试重启adb服务器、重新连接USB、检查USB调试是否启用
  • 设备显示offline:可能是adb版本不兼容,尝试更新SDK Platform Tools
  • 权限错误:某些系统目录需要root权限才能访问
  • 命令执行失败:检查命令格式是否正确,设备是否有足够权限

6. 使用ADB进行自动化测试

  • 结合Python脚本可以实现自动化测试流程
  • 使用subprocess模块调用adb命令
  • 可以实现自动安装、启动应用、模拟操作、截图验证等功能

7. ADB 备份与恢复

  • 备份应用数据:adb backup -f backup.ab -noapk com.example.app
  • 恢复应用数据:adb restore backup.ab
  • 备份整个系统:adb backup -all -f system_backup.ab

第九部分:ADB自动化测试示例代码

以下是一个使用Python和ADB进行自动化测试的示例脚本:

# Python自动化测试示例 - 使用ADB控制设备import subprocess
import time
import osdef run_adb_command(command):"""执行ADB命令并返回输出"""try:result = subprocess.run(command,shell=True,check=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,text=True)return result.stdout.strip()except subprocess.CalledProcessError as e:print(f"命令执行失败: {command}")print(f"错误信息: {e.stderr}")return Nonedef install_app(apk_path):"""安装应用"""print(f"正在安装应用: {apk_path}")result = run_adb_command(f"adb install -r {apk_path}")return "Success" in result if result else Falsedef uninstall_app(package_name):"""卸载应用"""print(f"正在卸载应用: {package_name}")result = run_adb_command(f"adb uninstall {package_name}")return "Success" in result if result else Falsedef start_app(package_name, activity_name):"""启动应用"""print(f"正在启动应用: {package_name}/{activity_name}")return run_adb_command(f"adb shell am start -n {package_name}/{activity_name}")def stop_app(package_name):"""停止应用"""print(f"正在停止应用: {package_name}")return run_adb_command(f"adb shell am force-stop {package_name}")def take_screenshot(save_path):"""截取屏幕并保存到本地"""device_path = "/sdcard/screenshot.png"print(f"正在截取屏幕...")run_adb_command(f"adb shell screencap -p {device_path}")run_adb_command(f"adb pull {device_path} {save_path}")run_adb_command(f"adb shell rm {device_path}")print(f"截图已保存到: {save_path}")def tap_screen(x, y):"""点击屏幕指定位置"""print(f"点击屏幕位置: ({x}, {y})")return run_adb_command(f"adb shell input tap {x} {y}")def swipe_screen(x1, y1, x2, y2, duration=500):"""滑动屏幕"""print(f"滑动屏幕: ({x1}, {y1}) -> ({x2}, {y2}), 时长: {duration}ms")return run_adb_command(f"adb shell input swipe {x1} {y1} {x2} {y2} {duration}")def input_text(text):"""输入文本"""print(f"输入文本: {text}")# 需要对特殊字符进行转义escaped_text = text.replace(' ', '%s')return run_adb_command(f"adb shell input text {escaped_text}")def get_device_info():"""获取设备基本信息"""info = {}info['model'] = run_adb_command("adb shell getprop ro.product.model")info['android_version'] = run_adb_command("adb shell getprop ro.build.version.release")info['screen_size'] = run_adb_command("adb shell wm size").split(': ')[1] if run_adb_command("adb shell wm size") else "Unknown"return infodef main():"""主测试流程示例"""# 1. 检查设备连接devices = run_adb_command("adb devices")if not devices or "device" not in devices:print("未检测到设备,请确保设备已连接并启用USB调试")return# 2. 获取设备信息device_info = get_device_info()print("设备信息:")for key, value in device_info.items():print(f"  {key}: {value}")# 3. 安装应用(示例路径,请修改为实际路径)apk_path = "C:\path\to\your\app.apk"package_name = "com.example.app"main_activity = "com.example.app.MainActivity"if os.path.exists(apk_path):install_app(apk_path)else:print(f"APK文件不存在: {apk_path}")# 4. 启动应用start_app(package_name, main_activity)time.sleep(5)  # 等待应用启动# 5. 执行测试操作# 点击登录按钮(假设位置)tap_screen(500, 1000)time.sleep(2)# 输入用户名密码input_text("testuser")time.sleep(1)tap_screen(500, 1200)  # 点击密码输入框time.sleep(1)input_text("password123")time.sleep(1)# 点击登录按钮tap_screen(500, 1500)time.sleep(3)# 截图验证take_screenshot("test_result.png")# 6. 清理测试环境stop_app(package_name)# 如需卸载应用,取消下面一行的注释# uninstall_app(package_name)print("测试完成")if __name__ == "__main__":main()

提示

使用时请将ADB工具添加到系统环境变量中,这样可以在任何目录下直接使用ADB命令。

结束

本手册涵盖了ADB的常用功能和高级用法,希望能帮助您更高效地进行Android开发和测试工作!

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

相关文章:

  • 回忆录:梦开始的往事
  • 大学生为啥一定要认真听讲
  • 以听筑基,以行践知:解锁学习新范式的思考
  • Day4表单-imput标签
  • 学好专业,养好体魄——我的学习感悟
  • ti2
  • 单像素demo初探
  • 昨天 今天 明天
  • 刻意练习的重要性
  • 深入解析:解构IDP未来前景:去中心化金融的“阳谋”与以人为本的生态蓝图(解读)
  • 加密算法相关
  • 利用 kubeadm 快速部署 kubernetes(k8s) 集群
  • 第七周物理实验:分光仪调节及三棱镜折射率测量
  • 联发科技 Genio 物联网高效的平台,引领 IoT 智能新时代
  • 20232324 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 密码学学习
  • 电脑文件系统整理概要
  • Boost.asio中的协程队列库
  • 为自己读书
  • 代码大全阅读笔记
  • 第6天(简单题中等题 不定长滑动窗口)
  • 博客园od
  • 详细介绍:深入理解 Scikit-learn:Python 中最常用的机器学习库
  • [AI] Gemini-Cli 安装和使用教程
  • 主动求索:大学生应掌控学习与时间
  • 沉入 遗忘 海底 躲进 存在感的盲区 kill my memory 请把项上垃圾移去
  • 关于莫队算法
  • Serilog 日志库的简介
  • 2025东莞环评公司/环评手续/环评报告/环评验收推荐:广东三洁环保,专业高效,合规保障
  • word文档使用技巧----一键插入题注