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

news/2025/10/26 22:48:01/文章来源:https://www.cnblogs.com/zhangdingqu/p/19167553

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.mzph.cn/news/947122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回忆录:梦开始的往事

回忆录:梦开始的往事 目录初入初入OI之门、 冲向算法 小奥之战 荣班 丘班失利 懵懂初一上(上)密码说明 由于文章内容涉及学校机密,不便直接公开发布,请希望阅读者洛谷私信hsr_ray或者添加微信hsrray2011,经作者审核…

大学生为啥一定要认真听讲

在我的大学生活中,上课分神似乎已经成为一种常态,我能清楚的认识到大学与高中学习态度的区别。在高中,我会因为老师讲课的进度快慢或者因为听课效果而选择去独立学习,从最后的结果来看,效果是有的。但是在大学,除…

以听筑基,以行践知:解锁学习新范式的思考

读罢三篇关于学习方法的文章,我对“如何高效学习”有了颠覆性认知。从前总觉得上课听不听无所谓,课后靠刷题就能补,直到看完Scalers关于“大学生上课必须认真听讲”的论述,才惊觉自己浪费了最宝贵的学习资源。老师…

Day4表单-imput标签

表单的作用是为了在网页上收集用户信息,一般在登录页面,注册页面和搜索区域应用 inpute标签的基本使用<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8">…

学好专业,养好体魄——我的学习感悟

不知不觉,已经来到了大二,读完老师分享的三篇文章,我最深的体悟是:专业学习没有捷径,唯有扎实掌握课堂上的基础知识,才能为后续的学习与实践筑牢根基。 数据科学与大数据技术专业知识体系繁杂,大二正是夯实基础…

ti2

JDK、JRE、JVM,以及三者的关系 1)JDK 指的是 java 开发工具包,它包括编译器、JAVA核心类库、JVM、开发辅助工具(jps、jinfo、jmap、jconsole、jvisualvm) 2)JRE 指的是 JAVA 程序运行环境,主要包括 JAVA 核心类…

单像素demo初探

入门仿真(零硬件)single_pixel_demo(Matlab + Python) 用 Hadamard 模式做采样,含加噪声与重建的完整最小示例;最适合第一天跑通。 GitHubsingle-pixel-imaging(教育向示例) 讲清单像素成像基本原理与流程,代…

昨天 今天 明天

祝你生日快乐今天的你超乎往常的坦率嘛 虽然今天的也是歌名一般这种乐色小文章开头是要介绍一下我的近况的 但是我觉得不介绍也没关系 我还是不能理解大学 就像我从来没有真正理解过高中 不管它处于进行时还是完成时 都…

刻意练习的重要性

「做中学(Learning By Doing)」之乒乓球刻意训练一年总结 https://www.cnblogs.com/rocedu/p/5826362.html 读这篇文章和《刻意练习》有感,刻意练习对我们学习和提升能力非常重要,这篇文章中说,自己打了二十多年的…

深入解析:解构IDP未来前景:去中心化金融的“阳谋”与以人为本的生态蓝图(解读)

深入解析:解构IDP未来前景:去中心化金融的“阳谋”与以人为本的生态蓝图(解读)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fon…

加密算法相关

RSA 加密算法的流程1️⃣ 密钥生成 你的步骤是标准的 RSA:选大质数 (p, q)通常 1024 位以上(现代安全要求 2048 位以上) 确保无法被高效分解计算模数 $ (n = p \times q)$用于公钥和私钥 明文和密文都需小于 (n)计算…

利用 kubeadm 快速部署 kubernetes(k8s) 集群

kubernetes(k8s)集群部署环境:ubuntu22.04,kubeadm v1.28.15节点准备工作(全部) 1. 关闭防火墙 # rootsystemctl stop firewalld systemctl disable firewalldsystemctl stop ufw systemctl disable ufw2. 关闭安全…

第七周物理实验:分光仪调节及三棱镜折射率测量

分光仪调节及三棱镜折射率测量 时间: 实验目的 掌握分光仪调节和使用 测量三棱镜顶角 测量最小偏向角&玻璃折射率 实验仪器 JJY型分光仪、双平面反射镜、玻璃三棱镜、汞灯 实验原理 分光仪主要组成部分:自由准直…

联发科技 Genio 物联网高效的平台,引领 IoT 智能新时代

联发科技 Genio 物联网高效的平台,引领 IoT 智能新时代pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&…

20232324 2025-2026-1 《网络与系统攻防技术》实验三实验报告

20232324 2025-2026-1 《网络与系统攻防技术》实验三实验报告1.实验内容 1.1实验目标理解恶意代码免杀原理,掌握 msf 编码器、Veil-Evasion 工具、C+Shellcode 编程等免杀技术,生成能规避杀毒软件的恶意程序,并通过…

密码学学习

对称加密: 加密和解密使用的是同一把钥匙 对称加密:分成流加密和块加密 流加密:例如123456,先加密1,再加密2 块加密:相当于分组加密 1234 5678 主要是DES和AES(高级加密)数字签名:用发送方的私钥对该哈希值加密,…

电脑文件系统整理概要

文件夹分类原则: 57原则:同层最多7个文件夹、最多5层 应用处理原则: 应用安装时按照优先安装D盘(如果磁盘未分区则忽略),无法设置时再安装C盘 应用以创建快捷方式后进行管理 应用应分为以下几类:常用,主选,备…

Boost.asio中的协程队列库

目录简介简单使用 简介 本文主要记录一下自己在使用Boost.asio时发现的一个协程队列库boost::asio::experimental::concurrent_channel。发现的路径也很搞笑,我当时需要一个队列库,因为使用的asio,所以想让AI帮忙使…

为自己读书

学习的目的不是为了获取更高的学位,也不仅仅是为了获取知识,而是为了能在生活中能够运用知识,方便生活。举个简单的例子,84消毒水不能和洁厕灵混在一起使用,容易产生氯气导致中毒。所以,学习不是为了他人,而是为…

代码大全阅读笔记

在软件开发的浩瀚书海中,有一部著作历经时间洗礼,依然被誉为“程序员必读经典”,这就是史蒂夫麦克康奈尔的《代码大全2》。它远非一本简单的代码语法手册,而是一部关于如何“构筑”高质量软件的工程思想大全。 初读…