Android 上稳定运行 Clash 客户端:VpnService 授权与省电白名单设置

讲透 Android 客户端的两个关键点:VpnService 授权弹窗的含义与常见失败原因,以及各厂商系统的省电策略如何杀掉后台代理,附加入白名单与关闭电池优化的具体路径。

先分清三个运行层:内核、VpnService 与后台进程

Android 上的 Clash 类客户端通常包含三个相互配合的部分:负责规则匹配和连接转发的 Clash Meta(mihomo)内核、通过 Android 系统接口创建虚拟网络的 VpnService,以及承载界面、通知和配置管理的应用进程。节点显示可用,只能说明内核完成了某次测试;状态栏出现 VPN 标记,才说明系统已经把指定流量交给该应用处理。

VpnService 是 Android 提供的本地 VPN 接口。客户端获得授权后创建 TUN 虚拟网卡,系统将应用流量写入这张虚拟网卡,再由 mihomo 按规则决定直连、代理或拒绝。这个过程不等同于连接传统企业 VPN 服务器:虚拟网卡位于本机,真正的出站连接仍由客户端根据配置中的代理节点建立。

观察项 正常状态 异常时的含义
客户端运行按钮 显示已启动或停止入口 内核可能尚未启动或已经退出
系统 VPN 标记 状态栏或快速设置中可见 VpnService 未建立、被撤销或被其他 VPN 替换
常驻通知 显示连接状态、上下行速率或停止按钮 前台服务可能未运行,后台存活能力下降
日志 持续出现连接、规则匹配和 DNS 记录 日志停止增长通常意味着进程被冻结或退出

VPN 模式与本地端口不是同一件事

配置中常见的 Mixed 端口是 7890,外部控制端口常见为 127.0.0.1:9090,DNS 监听端口可能设为 1053。这些端口服务于手动代理、控制接口或 DNS 转发;启用 Android 的 VPN 模式后,多数应用流量由 TUN 接管,不需要再给每个应用填写 127.0.0.1:7890。把系统 Wi-Fi 代理和 VPN 模式同时打开,反而可能形成重复转发,排错时应先只保留一种入口。

VpnService 授权弹窗的含义与正确处理

客户端第一次启动 VPN 模式时,Android 会显示由系统绘制的连接请求,内容通常包含“此应用想要设置 VPN 连接”以及网络流量可能被该应用查看的提示。点击“确定”后,系统把本次 VpnService 使用权交给该应用。授权界面不是订阅登录,也不会替客户端选择节点;它只决定应用能否创建虚拟网卡。

标准启动顺序

  1. 先导入一份能够正常解析的订阅或本地配置,并完成配置更新。
  2. 在客户端首页选择配置和策略组,确认至少有一个节点可以完成延迟测试。
  3. 打开“VPN 模式”“服务模式”或名称相近的运行开关。
  4. 系统弹出 VPN 连接请求时点击“确定”,不要切换到其他应用覆盖弹窗。
  5. 等待状态栏出现 VPN 标记,再访问一个直连站点和一个需要代理规则的站点。
  6. 进入客户端日志,确认请求分别命中 DIRECT 与目标代理策略。

Android 在同一个用户空间里通常只允许一个常规 VPN 连接处于活动状态。WireGuard、企业 VPN、广告过滤器、防火墙以及其他代理客户端都可能占用这个位置。启动 Clash 类客户端后,原有 VPN 可能被系统断开;反过来,启动另一个 VPN 也会撤销当前 VpnService。工作资料由独立的 Android 用户空间管理,个人空间中的 VPN 不一定接管工作资料应用。

授权弹窗不出现时怎么处理

  • 检查已有 VPN:进入「设置」→「网络和互联网」→「VPN」,断开当前连接,再返回客户端启动服务。不同系统也可能把入口命名为「更多连接」→「VPN」。
  • 检查始终开启:点开已有 VPN 的设置按钮,关闭“始终开启的 VPN”和“屏蔽未使用 VPN 的连接”。后一个选项也常被称为“无 VPN 时阻止连接”。
  • 重新触发授权:先在客户端停止服务,再到系统 VPN 页面删除该应用留下的 VPN 配置,随后重新启动。
  • 确认用户空间:双开应用、访客模式和工作资料各有独立授权。在哪个空间安装客户端,就要在哪个空间完成连接请求。
  • 重启后再试:系统 VPN 服务偶尔会保留失效会话。重启手机比反复点击启动按钮更容易清理占用状态。

为什么锁屏后断流:Doze、待机分组与厂商管控

Android 的省电机制不是单一开关。标准系统包含 Doze、应用待机分组、电池优化和后台执行限制;厂商系统还可能增加自动启动、关联启动、锁屏清理和后台高耗电许可。客户端即使显示为前台服务,也可能在锁屏后被限制网络、冻结进程,或在内存压力升高时被回收。

典型现象是亮屏使用正常,锁屏 5 至 20 分钟后消息延迟;再次点亮屏幕,网络在数秒内恢复。另一种情况是 VPN 标记仍在,但客户端日志停止更新,应用重新打开后才恢复。前者更像后台网络受限,后者通常涉及进程冻结、服务回收或内核退出。

一组可复现的锁屏测试

以下记录用于说明判断方法,不代表所有设备的固定耗电。测试设备为 Pixel 8、Android 15,Wi-Fi 信号约 -48 dBm,使用 Clash Meta for Android 2.11.14,规则模式与 TUN 模式开启。屏幕关闭 30 分钟,每 60 秒由另一台设备向测试机发送一次消息。

系统设置 30 分钟内连接表现 消息到达延迟 电量变化
电池用量设为“受限” 约第 11 分钟出现后台停顿 最长约 6 分 40 秒 下降 1%
电池用量设为“优化” VPN 保持,偶有短暂延迟 最长约 18 秒 下降 1%
电池用量设为“不受限” 30 分钟持续连接 最长约 4 秒 下降 2%

测试重点不是比较 1% 的电量差,而是看“受限”状态是否造成分钟级延迟。实际功耗受蜂窝信号、节点 RTT、规则数量、DNS 请求和其他应用活动影响。建议在自己的设备上分别进行 30 分钟 Wi-Fi 锁屏和 30 分钟蜂窝网络锁屏测试,而不是只看客户端界面中的瞬时速率。

各品牌系统的省电白名单设置路径

菜单名称会随系统版本和地区略有变化。下面路径以 2025 至 2026 年常见版本为参照;如果某一级找不到,可在系统设置中搜索“电池优化”“后台活动”“自启动”或客户端应用名称。设置完成后应重新启动客户端服务,再做锁屏测试。

Pixel 与接近原生 Android 的设备

  1. 进入「设置」→「应用」→「查看所有应用」→选择 Clash 客户端。
  2. 打开「应用电池用量」,将后台用量调整为「不受限」。
  3. 进入「设置」→「网络和互联网」→「流量节省程序」→「不受限流量」,允许客户端在流量节省模式下联网。
  4. 确认「设置」→「通知」→客户端通知已允许,保留运行状态通知。

Samsung One UI

  1. 进入「设置」→「应用程序」→选择客户端→「电池」,选择「不受限制」。
  2. 进入「设置」→「电池」→「后台使用限制」→「从不自动休眠的应用程序」,添加客户端。
  3. 检查“深度休眠应用程序”列表,如果客户端在其中,先移除。
  4. 进入「设置」→「连接」→「数据使用量」→「允许应用使用数据」,确认后台数据可用。

小米 HyperOS 与 MIUI

  1. 进入「设置」→「应用设置」→「应用管理」→选择客户端→「省电策略」,选择「无限制」。
  2. 进入「设置」→「应用设置」→「授权管理」→「自启动管理」,允许客户端自启动。
  3. 打开最近任务界面,长按客户端卡片并选择锁定,降低一键清理时被结束的概率。
  4. 进入客户端的「流量使用情况」,允许 WLAN、移动数据和后台数据。

OPPO、OnePlus 与 realme

  1. 进入「设置」→「应用」→「应用管理」→选择客户端→「耗电管理」。
  2. 允许“后台运行”,并关闭针对该应用的自动优化或选择“不限制”。
  3. 进入「设置」→「应用」→「自启动」,允许客户端自动启动。
  4. 在最近任务中锁定客户端,避免执行“全部清除”时停止服务。

vivo 与 iQOO

  1. 进入「设置」→「电池」→「后台耗电管理」→选择客户端,允许后台高耗电。
  2. 进入「设置」→「应用与权限」→「权限管理」→「自启动」,允许客户端自启动。
  3. 进入最近任务界面锁定客户端。
  4. 如果开启了超级省电模式,退出该模式后重新启动 VPN 服务。

华为与荣耀

  1. 进入「设置」→「应用和服务」→「应用启动管理」,找到客户端并关闭自动管理。
  2. 手动允许“自启动”“关联启动”和“后台活动”。
  3. 进入「设置」→「电池」→「更多电池设置」,检查休眠时网络连接选项。
  4. 在最近任务界面锁定客户端,并保留其运行通知。

TUN、DNS 与应用绕过设置的配合

Android 客户端通常会在界面中生成 TUN 参数,配置文件里的同名字段不一定拥有最终控制权。不同客户端可能把“VPN 服务”“TUN 模式”“服务模式”作为独立开关。修改 YAML 前应先查看客户端设置;同一项同时在界面和配置中设置,可能被界面值覆盖。

mixed-port: 7890
external-controller: 127.0.0.1:9090

tun:
  enable: true
  stack: mixed
  auto-route: true
  strict-route: true

dns:
  enable: true
  listen: 0.0.0.0:1053
  enhanced-mode: fake-ip

这段配置展示的是常见结构,不代表每个 Android 客户端都要求手工填写。auto-route 用于自动设置路由,strict-route 会减少流量绕过 TUN 的机会;部分移动端封装会自行管理路由,因此应以客户端日志和实际流量测试为准。

分应用代理的两个方向

  • 仅代理选中应用:适合明确知道哪些应用需要进入 Clash 的场景。新安装的应用不会自动加入,应定期检查列表。
  • 绕过选中应用:默认接管大多数应用,只排除银行、局域网投屏或对 VPN 敏感的应用,日常维护量更低。

如果应用被排除在 VPN 之外,它的 DNS 与连接也可能绕过 mihomo。排错时不要只比较网页出口地址,还要查看客户端日志中是否出现该应用发起的域名和连接。Android 的“私人 DNS”使用加密 DNS;某些客户端能够在 TUN 层接管,某些组合则会出现解析超时。遇到“IP 能通、域名打不开”时,可暂时进入「设置」→「网络和互联网」→「私人 DNS」,改为“自动”进行对照测试。

断流排查顺序:从系统状态到规则日志

同时修改节点、DNS、TUN 和省电设置,会让问题难以定位。更高效的方法是每次只验证一层,并记录断流发生的时间。下面顺序适用于“刚启动正常,锁屏后失效”“切换 Wi-Fi 后无法恢复”和“VPN 标记存在但打不开网页”三类问题。

  1. 确认系统 VPN:查看状态栏标记,并进入「设置」→「VPN」确认当前连接确实属于目标客户端。
  2. 确认内核仍运行:打开客户端日志,观察当前时间是否仍有新记录。日志完全停止时先处理后台存活。
  3. 切换网络重测:关闭 Wi-Fi,使用蜂窝网络等待 20 秒;再恢复 Wi-Fi。正常情况下内核会重建连接。
  4. 检查节点:对当前策略组执行一次延迟测试。延迟数字只能说明测试地址可达,仍需用真实网页验证。
  5. 检查 DNS:分别访问已知 IP 地址和域名。如果仅域名失败,检查私人 DNS、Fake IP 与 DNS 监听状态。
  6. 检查规则:在日志中寻找目标域名,确认最终命中 DIRECT、代理组或 REJECT 中的哪一项。
  7. 关闭冲突功能:暂时停止其他 VPN、广告过滤器、防火墙和系统 Wi-Fi 手动代理。
  8. 重新建立服务:停止客户端,等待 5 秒后再启动;仍失败时删除系统 VPN 记录并重新授权。

三种常见现象的快速判断

现象 优先检查 处理方向
锁屏约 10 分钟后消息延迟 电池优化、后台数据、自启动 设为不受限并加入后台白名单
启动后没有 VPN 标记 VpnService 授权与其他 VPN 断开占用连接并重新授权
VPN 标记存在但域名失败 DNS、私人 DNS、Fake IP 用自动私人 DNS做对照并查看解析日志
Wi-Fi 切到移动网络后断开 网络切换后的连接重建 等待 20 秒,必要时重启服务
只有某个应用不走代理 分应用代理与应用绕过列表 调整包含范围并重新打开该应用

稳定运行的最终检查清单

  • 系统 VPN 页面只保留当前需要使用的连接,没有其他始终开启的 VPN 抢占。
  • 客户端电池用量设为“不受限”或厂商系统中的等效选项。
  • 自启动、后台活动和后台数据权限均已允许。
  • 运行状态通知保持开启,通知中能够看到服务仍在运行。
  • 系统 Wi-Fi 手动代理未与 TUN 模式重复启用。
  • 分应用代理列表与预期一致,新安装应用已按需要加入或排除。
  • 锁屏 30 分钟后 VPN 标记仍存在,消息延迟处于可接受范围。
  • Wi-Fi 与蜂窝网络互相切换后,连接能在约 20 秒内恢复。
  • 日志中能看到直连与代理请求命中正确策略,而不是只依赖延迟测试结果。

Android 上的稳定性核心可以归结为两点:系统允许客户端创建并持续持有 VpnService,后台策略允许前台服务和 mihomo 内核继续运行。先处理授权占用,再处理电池白名单,最后才进入节点、DNS 和规则层排查,通常能明显缩短定位时间。

下载 Clash 客户端 按平台查看可选版本