4. ADB 高级命令:端口转发、无线调试与数据备份
在车载系统调试中,当设备物理连接受限或需要跨网络访问时,ADB 的高级命令便成为核心工具。本章将深入讲解 adb forward/reverse 端口转发、adb tcpip 无线调试以及 adb backup/restore 数据备份,帮助你在复杂车载环境中建立稳定、灵活的调试通道。
4.1 adb forward / reverse:端口转发与反向转发
端口转发允许你将主机(PC)的端口映射到 Android 设备(车载系统)的端口,反之亦然。这在车载系统无法直接访问网络,或需要从 PC 端抓取设备内部服务数据时尤为关键。
4.1.1 adb forward:主机端口 → 设备端口
将 PC 端的某个 TCP 端口流量转发到 Android 设备上的指定端口。常用于访问设备内部的 Web 服务、调试代理或自定义协议。
典型场景: 车载信息娱乐系统运行了一个 HTTP 诊断接口(端口 8080),但设备未连接 Wi-Fi。通过 adb forward,你可以在 PC 浏览器中通过 localhost:8080 直接访问该接口。
# 语法:adb forward tcp:<主机端口> tcp:<设备端口>
adb forward tcp:8080 tcp:8080
# 列出所有已建立的转发规则
adb forward --list
# 移除指定转发规则
adb forward --remove tcp:8080
# 移除所有转发规则
adb forward --remove-all
4.1.2 adb reverse:设备端口 → 主机端口
反向转发则允许 Android 设备主动访问 PC 端提供的服务。这在车载系统需要从 PC 端拉取文件、接收推送数据或连接 PC 上的调试代理时非常有用。
# 语法:adb reverse tcp:<设备端口> tcp:<主机端口>
adb reverse tcp:9090 tcp:9090
# 列出所有反向转发规则
adb reverse --list
# 移除指定反向转发规则
adb reverse --remove tcp:9090
# 移除所有反向转发规则
adb reverse --remove-all
注意: adb reverse 要求 Android 设备运行 Android 5.0(API 21)及以上版本,且设备必须支持 USB 反向绑定(大多数车载系统均支持)。
4.1.3 端口转发对比表
| 特性 | adb forward | adb reverse |
|---|---|---|
| 方向 | PC → 设备 | 设备 → PC |
| 适用场景 | PC 访问设备内部服务 | 设备访问 PC 端服务 |
| Android 版本要求 | 无特殊限制 | Android 5.0+ |
| 典型用途 | 抓取设备 Web 界面、调试代理 | 设备拉取 PC 文件、接收推送 |
| 连接依赖 | USB 或 TCP/IP 连接 | 仅 USB 连接 |
4.1.4 端口转发工作流程 SVG
4.2 adb tcpip:无线调试
当 USB 线缆不便连接或需要远程调试车载系统时,adb tcpip 允许你通过 Wi-Fi 网络进行无线 ADB 连接。这为车载系统在台架测试、实车路试等场景提供了极大的灵活性。
4.2.1 无线调试步骤
- USB 连接设备:确保设备通过 USB 连接到 PC,并确认 ADB 已识别。
- 切换到 TCP/IP 模式:执行
adb tcpip 5555,设备将在端口 5555 上监听无线连接。 - 获取设备 IP 地址:通过
adb shell ip addr show wlan0或设备设置中查看 IP。 - 无线连接:执行
adb connect <设备IP>:5555。 - 断开 USB 线缆:确认连接成功后,即可拔掉 USB 线进行无线调试。
# 步骤 1:确认设备已连接
adb devices
# 步骤 2:切换到 TCP/IP 模式(端口 5555)
adb tcpip 5555
# 步骤 3:获取设备 IP(示例)
adb shell ip addr show wlan0 | grep 'inet '
# 步骤 4:无线连接(假设 IP 为 192.168.1.100)
adb connect 192.168.1.100:5555
# 步骤 5:验证连接
adb devices
# 输出应显示:192.168.1.100:5555 device
4.2.2 无线调试注意事项
安全警告: 无线调试会暴露 ADB 端口(默认 5555)到局域网中。在公共网络或非信任环境中,请务必在调试完成后执行
adb usb 切回 USB 模式,或使用 adb disconnect 断开连接,防止未授权访问。
| 操作 | 命令 | 说明 |
|---|---|---|
| 切换到 TCP/IP | adb tcpip <端口> |
默认端口 5555,可自定义 |
| 无线连接 | adb connect <IP>:<端口> |
IP 与端口需匹配 |
| 切回 USB 模式 | adb usb |
断开无线,恢复 USB 调试 |
| 断开指定设备 | adb disconnect <IP>:<端口> |
仅断开无线连接 |
| 查看连接状态 | adb devices -l |
显示所有连接设备及传输方式 |
4.2.3 无线调试连接流程 SVG
4.3 adb backup / restore:数据备份与恢复
在车载系统开发或测试中,经常需要备份应用数据、系统设置或用户配置,以便在刷机、重置或迁移时快速恢复。adb backup 和 adb restore 提供了完整的应用数据备份与恢复能力。
4.3.1 adb backup:创建备份
备份命令可以将指定应用或整个系统的数据打包成一个 .ab 文件。备份内容通常包括应用私有数据、SharedPreferences、数据库文件等。
# 备份单个应用(以 com.android.settings 为例)
adb backup -f settings_backup.ab com.android.settings
# 备份所有应用数据(非系统应用)
adb backup -f all_apps_backup.ab -apk -shared -all -nosystem
# 备份整个系统(包含系统应用,需要 root 权限)
adb backup -f full_backup.ab -apk -shared -all -system
# 参数说明:
# -f <文件名> 指定备份文件路径
# -apk 同时备份 APK 文件
# -shared 备份共享存储(SD 卡)数据
# -all 备份所有应用
# -nosystem 排除系统应用
# -system 包含系统应用
4.3.2 adb restore:恢复备份
恢复命令将之前创建的 .ab 文件中的数据写回设备。恢复时会覆盖目标应用的现有数据,请谨慎操作。
# 恢复单个应用备份
adb restore settings_backup.ab
# 恢复全量备份
adb restore full_backup.ab
重要提示:
- 备份文件是加密的,默认使用设备锁屏密码/PIN 进行加密。恢复时需要输入相同的密码。
- adb backup/restore 在 Android 6.0(API 23)及以上版本中已被标记为“已弃用”,但大多数车载系统仍支持此功能。
- 对于 Android 9.0 及以上版本,Google 推荐使用
adb backup的替代方案——Auto Backup for Apps 或 Device-to-Device 迁移。
4.3.3 备份与恢复参数对比
| 参数 | 备份 (backup) | 恢复 (restore) |
|---|---|---|
| 基本语法 | adb backup -f <文件> [选项] |
adb restore <文件> |
| 文件格式 | .ab(Android Backup) | .ab(Android Backup) |
| 加密方式 | 设备锁屏密码 | 设备锁屏密码 |
| 覆盖行为 | 创建新备份文件 | 覆盖设备上已有数据 |
| root 需求 | 备份系统应用需要 root | 恢复系统应用需要 root |
| 典型用途 | 刷机前备份用户数据 | 刷机后恢复用户数据 |
4.3.4 备份与恢复流程 SVG
4.4 本章小结
- adb forward/reverse:实现 PC 与设备之间的双向端口映射,突破网络限制,灵活访问内部服务。
- adb tcpip:通过 Wi-Fi 实现无线调试,摆脱 USB 线缆束缚,适用于台架测试和远程调试。
- adb backup/restore:提供应用级和系统级的数据备份与恢复能力,保障车载系统开发中的数据安全与迁移效率。
实战建议: 在车载系统调试中,建议将端口转发与无线调试结合使用。例如:先通过 USB 建立 adb forward 转发诊断端口,再切换到无线模式,实现远程诊断与数据抓取。