先区分流量耗电、后台重启与统计归因
先看手机实际掉电速度,再看 Clash Meta 在电量页面中的排名。安卓 VPN 会集中处理其他应用的连接,系统可能把部分网络活动计入 VPN 应用;“耗电占比第一”不等于内核一直占满 CPU。持续下载、云相册备份、视频播放和移动网络弱信号,都可能比代理处理本身更耗电。
Clash Meta 是客户端与内核相关的名称,mihomo 是常见的内核名称。不同安卓客户端的设置入口、配置覆写和后台服务实现并不相同。排查前记录客户端版本、内核版本、Android 版本以及当前配置名称;不要把 Linux 上的 systemd 保活或 TUN 权限命令照搬到手机。
用相同条件记录两组数据
- 选择稳定 Wi-Fi,保持相同信号、屏幕亮度与后台同步设置。先暂停下载和备份,避开刚开机、系统升级或充电后的发热阶段。
- 做一轮 60 分钟息屏记录,写下起止电量、是否断连、设备是否温热。关闭代理的对照轮应保持应用负载相同;如果应用因无法联网而停止同步,这轮不能直接比较。
- 再做相同应用、相同时长的亮屏测试。视频画质、游戏帧率或网络制式改变时,重新建立基线。
例如,记录表中从 80% 到 77%、时长 60 分钟,意味着该轮下降 3 个百分点;这是计算示例,不是 Clash Meta 的实测基准。电池百分比有取整误差,单次下降 1% 不适合判断优化效果。至少重复两轮,并把发热、重连次数和通知是否及时一起记录。
健康检查:先拉长间隔,再处理重复测速
节点测速会发起网络请求。节点数量多、间隔短时,即使没有主动浏览,也会产生周期性连接。移动网络下,这些请求还可能让无线模块频繁离开低功耗状态。先检查 proxy-providers 的健康检查,再检查 url-test、fallback 等策略组是否另外执行了同类测试。
| 字段 | 用途 | 排查起点 |
|---|---|---|
health-check.interval | Provider 节点健康检查间隔,单位为秒 | 先试 900 秒 |
health-check.lazy | Provider 未被使用时跳过周期检查 | 按需求设为 true |
proxy-providers.*.interval | HTTP 类型 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 模式,但要确认客户端是否支持仅启动代理服务,以及目标应用是否真的使用该代理。
缩小接管范围的三个边界
- 按应用绕过不需要代理的流量。在客户端的“访问控制”或“分应用代理”中选择应用,核对当前是“仅代理所选应用”还是“绕过所选应用”。名单含义相反时,实际接管范围会完全不同。
- 规则中的 DIRECT 不等于绕过 VPN。数据仍可能先进入虚拟接口,由内核判定后直连。应用级排除通常更早发生,但具体实现与 DNS 行为需要实测。
- 本地端口不能替代完整 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 占用时,提交客户端与内核版本、系统版本、最小复现配置和短时日志;字段含义可对照配置参考,基础连接问题可继续查看疑难解答。