ADB 工具全套工控实战:设备连接、日志抓取、文件推送、权限调试、重启刷机指令
2026/7/26 0:09:56 网站建设 项目流程

ADB 工具全套工控实战:设备连接、日志抓取、文件推送、权限调试、重启刷机指令

adb 是工控开发者的瑞士军刀——不会玩 adb 的安卓工控开发,约等于不会用万用表的硬件工程师。今天咱们把 adb 从头到尾盘一遍,全是现场实战会用到的真东西。

一、adb 基本原理与连接方式

1.1 adb 架构

adb(Android Debug Bridge)是个 C/S 架构的工具,分为三部分:

  • Client(PC 端):你在命令行敲的adb命令,负责发送指令
  • Server(PC 端后台进程):管理 Client 和 Daemon 之间的通信,端口 5037
  • Daemon(设备端 adbd):跑在安卓设备上的守护进程,负责执行指令

一句话理解:PC 上的 adb client → adb server → USB/网络 → 设备上的 adbd → 执行操作

1.2 USB 连接

最常用的方式,一条 USB 线解决。前提是设备开启了"USB 调试":

# 查看已连接设备adb devices# 输出示例List of devices attached 1234567890ABCDEF device

如果显示unauthorized,说明设备上弹出了授权对话框,需要在设备屏幕上点"允许"。工控设备如果没有触摸屏怎么办?这就需要网络 adb。

1.3 网络 adb 连接

工控设备常用的远程调试方式,不需要 USB 线:

# 先通过 USB 连上,设置 adbd 监听 TCP 端口adb tcpip5555# 然后通过网络连接(假设设备 IP 是 192.168.1.100)adb connect192.168.1.100:5555# 拔掉 USB 线,网络调试继续生效adb devices# 192.168.1.100:5555 device

工控实战场景:设备装在机柜里,你想拆 USB 线得把整个柜子拆开。直接网络 adb 连上,在工位上喝着茶就把问题调了。

断开连接:

adb disconnect192.168.1.100:5555

二、常用设备管理命令

命令用途工控场景
adb devices列出所有连接设备确认设备是否在线
adb connect IP:PORT网络连接设备远程调试
adb disconnect IP:PORT断开网络连接释放连接
adb -s SERIAL shell指定某台设备执行命令多设备同时连接时指定
adb reboot重启设备更新固件后重启
adb reboot recovery重启到 Recovery 模式刷机
adb reboot bootloader重启到 Fastboot 模式烧录 boot.img

多设备管理:工控测试台上可能同时挂着三四台平板,这时候必须用-s指定设备:

adb devices# 192.168.1.100:5555 device# 192.168.1.101:5555 deviceadb-s192.168.1.100:5555 shell# 进入 100 这台adb-s192.168.1.101:5555 logcat# 看 101 的日志

三、日志抓取实战:logcat 的工控用法

工控设备出问题,第一反应不是改代码,是抓日志

3.1 基本过滤

原厂 logcat 输出是海量的,不加过滤等于没看:

# 只显示 Error 级别日志adb logcat *:E# 按 tag 过滤——只显示自己 APP 的日志adb logcat-sMyAppTag# 清除旧日志,从头开始看adb logcat-c&&adb logcat# 过滤多个 tagadb logcat MyServiceTag:D MyActivityTag:V *:S# D=Debug, V=Verbose, S=Silence(只显示明确指定的 tag)

3.2 按进程/包名过滤

工控 APP 一般包名是固定的:

# 先通过包名找到 PIDadb shell pidof com.example.industrialcontrol# 只看这个进程的日志adb logcat--pid=12345

3.3 保存日志到文件

这是最常用的——设备在客户现场出问题,让客户帮忙抓个日志发回来:

# 抓取全部日志保存到文件adb logcat-d>d:/logs/factory_crash_20240301.txt# 只抓最近 500 行adb logcat-t500>d:/logs/latest.txt# 长时间录制日志(Ctrl+C 停止)adb logcat-vtime>d:/logs/long_run.txt

参数说明:

参数含义
-d输出后退出(dump 模式)
-t N只输出最近 N 行
-v time显示时间戳
-v threadtime显示线程和时间(推荐)
-f FILE直接写入设备本地文件

3.4 工控专用日志技巧

# 抓取内核日志(驱动问题必看)adb shelldmesg>d:/logs/kernel.log# 抓取 ANR 日志(APP 卡死无响应)adb shellls/data/anr/ adb pull /data/anr/anr_2024-03-01-10-30-00 ./anr_logs/# 抓取 tombstone(Native Crash,JNI 层崩溃)adb shellls/data/tombstones/ adb pull /data/tombstones/ ./tombstones/# 抓取系统启动日志(分析开机慢、服务启动失败)adb logcat-bevents-d>d:/logs/events.txt

四、文件推送与拉取

工控设备的文件传输场景极多:推送更新包、拉取配置文件、导出数据库。

4.1 push:推送文件到设备

# 推送 APK 到设备adb push C:/build/app-debug.apk /sdcard/# 推送配置文件adb push C:/config/serial_config.json /sdcard/config/# 推送整个目录adb push C:/update_package /sdcard/update_package/# 推送到系统目录(需要 root)adb root adb remount adb push hosts /system/etc/hosts

工控实战:现场升级不需要插 U 盘,直接 wifi 远程推送 APK,然后pm install静默装好——流水线不用停。

4.2 pull:从设备拉取文件

# 拉取日志adb pull /sdcard/logs/ ./local_logs/# 拉取数据库文件(调试数据问题)adb pull /data/data/com.example.app/databases/app.db ./# 拉取系统配置adb pull /system/build.prop ./

4.3 安装与卸载

# 正常安装adbinstallapp-release.apk# 覆盖安装(保留数据)adbinstall-rapp-release.apk# 降级安装adbinstall-dapp-release.apk# 允许 testOnly 标记的包adbinstall-tapp-debug.apk# 卸载adb uninstall com.example.industrialcontrol

工控常用组合拳——远程静默升级:

adb connect192.168.1.100:5555 adb push update.apk /sdcard/ adb shell pminstall-r/sdcard/update.apk adb shellrm/sdcard/update.apk adbreboot

五、权限调试:shell 的深渊

adb shell是进入设备内部的入口。工控开发中 shell 的使用频率远高于手机开发。

5.1 基础操作

# 进入 shelladb shell# 执行单条命令不进入交互模式adb shellls-la/dev/ttyS* adb shellcat/proc/cpuinfo adb shell dumpsys battery# 查看电池(电源适配器)状态adb shell dumpsys meminfo com.example.app# 内存占用adb shelltop-n1# 进程资源占用

5.2 su 提权

工控设备通常已 root,可以直接su

adb shellsu# 现在你是 root 了,可以为所欲为# 修改文件权限chmod666/dev/ttyS1# 给串口设备读写权限chmod777/sys/class/gpio/export# 允许导出 GPIO# 修改系统属性setprop persist.sys.timezone Asia/Shanghai# 强制停止 APPam force-stop com.example.industrialcontrol# 启动 APPam start-ncom.example.industrialcontrol/.MainActivity

5.3 SELinux 与权限问题

工控设备有时会遇到Permission denied,就算 root 也不行——这是 SELinux 在拦截:

# 查看 SELinux 状态adb shell getenforce# Enforcing = 拦截中# Permissive = 仅告警不拦截# 临时关闭(重启失效)adb shell setenforce0# 查看 SELinux 拒绝日志adb shelldmesg|grepavc

六、重启与刷机指令

工控设备固件升级是家常便饭,这组命令必须烂熟于心。

# 普通重启adbreboot# 重启到 Recovery(刷机模式)adbrebootrecovery# 重启到 Bootloader(线刷模式)adbrebootbootloader# Fastboot 模式下的操作fastboot devices# 查看设备fastboot flash boot boot.img# 刷 boot 分区fastboot flash system system.img# 刷 system 分区fastboot flash recovery recovery.img fastbootreboot# 重启出 Fastboot

RKDevTool(瑞芯微工控常用):很多工控板子用的是瑞芯微方案,刷机不走 Fastboot,而是用RKDevTool工具通过Loader模式刷写。这种设备需要:

  1. 按住物理按键上电进入 MASKROM 模式
  2. PC 端用 RKDevTool 加载固件
  3. 一键烧录

七、实用 adb 技巧汇总表

场景命令备注
截图adb exec-out screencap -p > screen.png工控无屏设备远程截屏
录屏adb shell screenrecord /sdcard/demo.mp4Ctrl+C 停止,adb pull拉取
模拟按键adb shell input keyevent 2626=电源键,3=Home,4=返回
模拟触摸adb shell input tap 500 300模拟点击坐标 (500,300)
获取分辨率adb shell wm size确认设备屏幕分辨率
获取 DPIadb shell wm densityUI 适配需要
查看安装列表adb shell pm list packages-3只看第三方
查看进程adb shell ps -A | grep com.example确认 APP 在后台是否活着
清除应用数据adb shell pm clear com.example.app相当于卸载重装
设置系统时间adb shell date 030110302024.00格式:月日时分年.秒
无线投屏scrcpy开源工具,工控神器,无屏操作全靠它

八、总结

adb 这东西,说简单就简单——连上、敲命令、看结果。说深也深——内核日志、SELinux 策略、Fastboot 刷写,每一样都够你研究一阵的。

工控开发的日常,一半时间写代码,一半时间用 adb 在设备上摸排滚打。把这篇文章里的命令练熟了,你和设备之间的距离就差一条网线。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询