Termux 无线 ADB 连接与后台保活配置
2026-08-08
Eric Wong
前言
在 Android 上跑 Termux 搭建移动开发环境,最大的敌人不是性能,而是系统省电策略。屏幕一灭,Doze 模式启动,Termux 进程随时被冻结甚至杀掉,SSH 断了、Node 服务停了、cron 任务没了。
这篇文章记录一套无 Root 方案:通过无线 ADB 把 Termux 加进 Doze 白名单,并显式允许后台运行。配置完之后,锁屏状态下 Termux 服务存活率会明显提升。
适用场景:Termux + SSH / Node / cron 等需要锁屏后持续运行的服务。
前提条件:一台电脑安装了 ADB 工具,手机开启了无线调试。
连接无线 ADB
先把手机和电脑连到同一局域网,在手机「开发者选项」中开启「无线调试」。
Android 11+ 的无线调试需要先配对再连接,两步使用的端口不同:
- 配对端口:点击「使用配对码配对设备」后显示的端口(临时的,每次打开页面可能变化)
- 连接端口:无线调试主页面显示的端口(连接设备用的)
第一步:配对设备
在手机无线调试页面点击「使用配对码配对设备」,页面会显示 IP:端口 和一个 6 位配对码。在电脑上执行:
adb pair 172.19.0.1:34675
⚠️ 这里的端口是配对页面显示的端口,不是无线调试主页面的端口,两个不一样。
输入手机上显示的 6 位配对码:
Enter pairing code: XXXXXX
Successfully paired to 172.19.0.1:34675
看到 Successfully paired 表示配对成功。配对只需做一次,之后重连不需要再配对。
第二步:连接设备
回到无线调试主页面,使用主页面上显示的 IP 和端口连接:
adb connect 172.19.0.1:39599
连接成功后确认:
adb devices
输出类似:
List of devices attached
172.19.0.1:39599 device
看到设备状态为 device 就表示连接正常。
多设备时指定目标
如果 adb devices 列出多个设备,后续命令需要用 -s 指定目标设备:
adb -s 172.19.0.1:39599 shell
端口变化:无线调试每次开启可能生成不同端口。如果连不上,先在手机「无线调试」页面查看当前 IP 和端口,替换命令中的地址。
加入 Doze 白名单
Android 6.0 引入的 Doze 模式会在设备静止、屏幕关闭时限制后台活动。把 Termux 加入白名单后,系统休眠时不会对它施加 Doze 限制。
adb -s 172.19.0.1:39599 shell dumpsys deviceidle whitelist +com.termux
看到以下输出表示添加成功:
Added: com.termux
验证是否已生效:
adb -s 172.19.0.1:39599 shell dumpsys deviceidle whitelist | grep com.termux
输出 com.termux 即表示已在白名单中。
允许后台运行
除了 Doze 白名单,还需要通过 AppOps 显式允许 Termux 在后台运行:
adb -s 172.19.0.1:39599 shell appops set com.termux RUN_IN_BACKGROUND allow
adb -s 172.19.0.1:39599 shell appops set com.termux RUN_ANY_IN_BACKGROUND allow
查询当前 AppOps 状态:
adb -s 172.19.0.1:39599 shell cmd appops get com.termux
输出中 RUN_IN_BACKGROUND 和 RUN_ANY_IN_BACKGROUND 都应显示 allow。
移除白名单
如果以后不再需要保活,可以从 Doze 白名单中移除 Termux:
adb -s 172.19.0.1:39599 shell dumpsys deviceidle whitelist -com.termux
命令速查
把上述命令整理在一起,方便以后直接照着执行:
# 1. 配对设备(仅需一次,使用配对页面的端口)
adb pair 172.19.0.1:39599
# 输入手机上显示的 6 位配对码
# 2. 连接设备(使用无线调试主页面的端口)
adb connect 172.19.0.1:39599
# 3. 确认连接
adb devices
# 4. 加入 Doze 白名单
adb -s 172.19.0.1:39599 shell dumpsys deviceidle whitelist +com.termux
# 5. 验证白名单
adb -s 172.19.0.1:39599 shell dumpsys deviceidle whitelist | grep com.termux
# 6. 允许后台运行
adb -s 172.19.0.1:39599 shell appops set com.termux RUN_IN_BACKGROUND allow
adb -s 172.19.0.1:39599 shell appops set com.termux RUN_ANY_IN_BACKGROUND allow
# 7. 查询 AppOps 状态
adb -s 172.19.0.1:39599 shell cmd appops get com.termux
# 8. 如需移除白名单
# adb -s 172.19.0.1:39599 shell dumpsys deviceidle whitelist -com.termux
⚠️
adb pair使用的是配对页面的端口,adb connect使用的是无线调试主页面的端口,两者不同。配对只需做一次,之后重连只需执行adb connect。
局限性
需要说明的是,这套配置并不能保证 100% 后台保活:
deviceidle whitelist主要解决 Android 原生 Doze 模式的限制- realme / ColorOS / MIUI 等厂商系统有自己独立的后台冻结机制,行为比原生 Android 更激进,即使加入了 Doze 白名单仍可能被杀
- 这套配置是无 Root 条件下比较重要的一层防护,但不是万能的
如果保活要求很高,可能需要考虑:
- 在 Termux 中使用
termux-wake-lock保持唤醒 - 在厂商系统的电池设置中手动将 Termux 设为「不优化」
- 使用 Root 方案彻底绕过后台限制
对于 Termux + SSH / Node 服务锁屏后持续运行的场景,Doze 白名单 + AppOps 后台权限已经是无 Root 下能做到的重要基础配置。
版权声明:本文为原创文章,遵循 署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)版权协议,转载请附上原文出处链接和本声明。
分享到: