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开发和测试工作!