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)版权协议,转载请附上原文出处链接和本声明。

分享到:

评论