先区分流量耗电、后台重启与统计归因

先看手机实际掉电速度,再看 Clash Meta 在电量页面中的排名。安卓 VPN 会集中处理其他应用的连接,系统可能把部分网络活动计入 VPN 应用;“耗电占比第一”不等于内核一直占满 CPU。持续下载、云相册备份、视频播放和移动网络弱信号,都可能比代理处理本身更耗电。

Clash Meta 是客户端与内核相关的名称,mihomo 是常见的内核名称。不同安卓客户端的设置入口、配置覆写和后台服务实现并不相同。排查前记录客户端版本、内核版本、Android 版本以及当前配置名称;不要把 Linux 上的 systemd 保活或 TUN 权限命令照搬到手机。

用相同条件记录两组数据

  1. 选择稳定 Wi-Fi,保持相同信号、屏幕亮度与后台同步设置。先暂停下载和备份,避开刚开机、系统升级或充电后的发热阶段。
  2. 做一轮 60 分钟息屏记录,写下起止电量、是否断连、设备是否温热。关闭代理的对照轮应保持应用负载相同;如果应用因无法联网而停止同步,这轮不能直接比较。
  3. 再做相同应用、相同时长的亮屏测试。视频画质、游戏帧率或网络制式改变时,重新建立基线。

例如,记录表中从 80% 到 77%、时长 60 分钟,意味着该轮下降 3 个百分点;这是计算示例,不是 Clash Meta 的实测基准。电池百分比有取整误差,单次下降 1% 不适合判断优化效果。至少重复两轮,并把发热、重连次数和通知是否及时一起记录。

健康检查:先拉长间隔,再处理重复测速

节点测速会发起网络请求。节点数量多、间隔短时,即使没有主动浏览,也会产生周期性连接。移动网络下,这些请求还可能让无线模块频繁离开低功耗状态。先检查 proxy-providers 的健康检查,再检查 url-test、fallback 等策略组是否另外执行了同类测试。

字段用途排查起点
health-check.intervalProvider 节点健康检查间隔,单位为秒先试 900 秒
health-check.lazyProvider 未被使用时跳过周期检查按需求设为 true
proxy-providers.*.intervalHTTP 类型 Provider 的配置更新间隔可从 86400 秒起试
proxy-groups.*.interval自动选择类策略组的测试间隔检查是否与 Provider 重复

下面是合并到现有 Provider 条目中的局部字段,不是完整订阅。保留该条目原有的 type、url、path 和健康检查 url;测试地址应继续使用已验证可达的地址,不要为了套示例随意更换。

interval: 86400
health-check:
  enable: true
  interval: 900
  lazy: true

如果原先每 60 秒测试 80 个节点,连续一小时在每轮都完整执行的情况下,理论上会有约 4800 次节点测试;改成 900 秒后约为 320 次。这个计算不包含重试、首次加载和手动测速,也不等同于实际 HTTP 请求数或节电比例。节点不稳定时,可以先用 300 秒,在切换速度与后台活动之间逐步取舍。

  • 订阅更新与节点测速分开调。每天更新配置不代表每天才检查一次节点,两者的 interval 位于不同层级。
  • 减少重复检查。同一批节点同时被多个自动选择组引用时,检查各组设置,不要只改 Provider 后就认为所有自动探测都已停止。
  • 确认实际生效配置。客户端的覆写、订阅更新和界面设置可能覆盖文件内容。重载后检查运行配置或日志中的检查节奏。

日志、面板与失败重试:避免持续后台活动

日常运行可先使用 info,排查耗电时再尝试 warning,缩短详细日志的保留时间。debug 适合短时复现,不适合长期开着观察一整夜。日志输出量取决于连接数量与客户端实现,不能把更换日志级别理解为固定比例的节电措施。

log-level: warning

关闭正在持续刷新的连接列表、实时速率图和外部控制面板。屏幕关闭后客户端是否还刷新这些视图,取决于具体实现;可以先退出面板再复测。若温度明显下降,应继续区分是界面刷新、日志写入还是流量本身造成的差异。

只开几分钟详细日志,查重复事件

  • 反复出现连接超时:先换一个稳定节点,再观察重试是否下降。短超时并不总是更省电,失败后连续重连可能更频繁。
  • 反复出现 DNS 请求失败:核对上游是否可达、是否通过失效节点连接,以及是否存在解析回环。不要只靠无限增加 DNS 上游数量处理。
  • 反复加载配置或启动内核:优先检查后台限制、客户端崩溃和自动切换脚本,而不是继续降低测速间隔。

分享日志前删除订阅地址、认证信息、节点密码和访问域名。日志足以覆盖一次断连到恢复的过程即可,通常不需要提供整天的完整记录。恢复稳定后,再把日志级别调回日常使用值。

电池优化白名单:用于稳定保活,不是省电开关

白名单的作用是减少系统对后台运行的限制。它可能解决息屏断网、VPN 被终止和定时任务延迟,但不会自动降低耗电。若客户端本来运行稳定,没有必要为了“省电”把所有自启动、后台活动和高耗电权限全部打开。

相反,持续被系统停止后又重新启动,也会反复建立 VPN、解析域名和连接节点。出现“亮屏立即恢复、息屏几分钟断线”时,应先解决服务稳定性,再评估健康检查等周期任务。

系统常见入口需要观察的结果
Pixel / 接近原生 Android设置 → 应用 → Clash Meta → 应用电池用量 → 允许后台使用必要时选择不受限制,检查息屏连接
小米 MIUI / HyperOS应用信息 → 省电策略 → 无限制;设置中搜索“后台自启动”确认重启手机后是否能按预期启动
Samsung One UI设置 → 应用程序 → Clash Meta → 电池 → 不受限制检查是否被加入休眠或深度休眠应用
OPPO / OnePlus应用信息 → 耗电管理 → 允许后台活动检查息屏后服务是否仍在运行
vivo / iQOO设置 → 电池 → 后台耗电管理按需允许后台高耗电与自启动

以上是常见菜单名称,不同 Android 版本、地区固件和厂商版本可能更名。找不到时,从应用图标长按进入“应用信息”,或在系统设置中搜索“电池优化”“后台活动”“自启动”。最近任务中锁定应用只是部分厂商的附加措施,不能代替电池权限设置。

Android VPN 与 TUN:先判断需要接管哪些应用

安卓客户端通常通过系统 VpnService 建立虚拟网络接口,再把数据交给代理内核处理。它与 Linux 上启用 tun.enable、配置路由和授予网络权限的部署路径不同。界面里的“VPN 模式”也不一定对应可直接编辑的同一个 YAML 开关。

如果需要浏览器、聊天工具和不支持代理设置的应用一起分流,VPN 接管通常更实用。若只需要少数支持手动代理的应用联网,可以比较“本地代理端口”与 VPN 模式,但要确认客户端是否支持仅启动代理服务,以及目标应用是否真的使用该代理。

缩小接管范围的三个边界

  1. 按应用绕过不需要代理的流量。在客户端的“访问控制”或“分应用代理”中选择应用,核对当前是“仅代理所选应用”还是“绕过所选应用”。名单含义相反时,实际接管范围会完全不同。
  2. 规则中的 DIRECT 不等于绕过 VPN。数据仍可能先进入虚拟接口,由内核判定后直连。应用级排除通常更早发生,但具体实现与 DNS 行为需要实测。
  3. 本地端口不能替代完整 VPN。例如 127.0.0.1:7890 只有在客户端确实监听该端口时才能使用;Android 的 Wi-Fi HTTP 代理并不覆盖所有应用和 UDP,也不天然覆盖移动网络。

不要为了减少一层处理就贸然关闭 VPN。先列出必须工作的应用,再验证通知、网页、语音通话与移动网络切换。某些客户端允许选择用户态网络栈;名称和支持范围应以当前版本为准。不存在对所有手机都最省电的栈,切换后需要重建 VPN,并重新测试 UDP、IPv6 和域名解析。

系统“始终开启 VPN”与“屏蔽未使用 VPN 的连接”主要用于连接策略,不是性能优化。后者可能使被排除的应用无法直连。测试分应用绕过前检查这两个选项,避免把系统主动阻断误判成规则失效。

用系统电池记录与 ADB 确认后台行为

优先打开“设置 → 电池 → 电池用量”,查看代理客户端的前台时间、后台时间以及对应时段的流量。厂商展示口径不同,后台时间长只能说明服务常驻,不能单独证明异常。手机在稳定网络下息屏仍持续发热,才值得继续查找忙循环或大量重试。

有电脑时,可以在启用 USB 调试并授权连接后执行下面的只读命令。ADB 来自 Android SDK Platform-Tools,不需要为这些检查获取 root。输出可能很长,建议保存到电脑后按进程名、UID 和时间段检索。

adb devices
adb shell pm list packages | grep -i clash
adb shell dumpsys battery
adb shell dumpsys batterystats --charged > battery-session.txt
adb shell dumpsys deviceidle > deviceidle-session.txt
adb shell dumpsys connectivity > connectivity-session.txt

grep 是电脑端的过滤命令;Windows PowerShell 可用 Select-String clash 替换。若包名不含 clash,第一条筛选可能没有结果,需要在完整包列表中按客户端实际包名查找。不要直接复制其他客户端的包名来解释统计。

  • dumpsys battery:核对电量、充电状态和温度字段;常见温度单位为十分之一摄氏度,需结合设备输出解释。
  • batterystats --charged:查看自相应充电统计周期以来的记录,不是刚刚 60 分钟的自动独立报告,也不等同于精确硬件功率测量。
  • dumpsys deviceidle:核对空闲状态与相关白名单,不代表能够从单条输出直接计算节电量。
  • dumpsys connectivity:辅助确认 VPN 与底层网络状态;不同版本可见信息不同,报告中也可能包含网络标识。

USB 连接可能同时充电,影响耗电对照。性能记录和掉电测试可以分开进行,不要把插线期间的电量变化当作息屏耗电结果。分享这些文件前,同样需要检查网络名称、地址和应用使用信息。

按症状收敛配置,再验证日常可用性

现象先检查验证方式
息屏后周期性发热健康检查、同步任务、失败重试调整到 900 秒后重复 60 分钟测试
息屏断网,亮屏恢复电池限制、后台服务被停止仅给客户端必要后台权限
只有移动网络耗电明显信号、频繁换网、节点重连稳定 Wi-Fi 下建立对照
打开面板才明显发热实时刷新、连接列表、详细日志关闭面板并恢复日常日志级别
调整分应用代理后部分应用断网名单方向、始终开启 VPN 的阻断选项逐个验证直连与代理应用

最终保留一份稳定配置:健康检查从 900 秒起试,订阅更新按实际需求设置,详细日志仅在复现问题时启用,后台权限只授予确实需要常驻的客户端。若节点失效发现太慢,再逐步缩短检查周期,不必直接退回几十秒全量测速。

完成调整后,依次验证息屏通知、Wi-Fi 与移动网络切换、语音通话和重启后的连接状态。省电与稳定性需要一起验收。仍有持续发热或高 CPU 占用时,提交客户端与内核版本、系统版本、最小复现配置和短时日志;字段含义可对照配置参考,基础连接问题可继续查看疑难解答。