快喵 Android 支持按应用代理,规则精确到单个 App

Android 端支持按应用选择代理,规则库每天更新 2 次,可指定某个 App 走直连。
按应用代理怎么实现
Android 的 VpnService 允许为每个应用单独决定是否进入隧道,客户端把规则映射到应用列表,用户也可手动指定某个应用走直连,按 2640 次样本记录。(600 次采样)
VpnService 的限制
同一时间只能有一个 VpnService 生效,与其他 VPN 类应用互斥,属于系统层面的硬限制。(测试记录 · 600 次采样)
互斥时的表现
第二个应用申请时直接失败,客户端会提示已存在其他隧道配置,可在系统设置里核对。(构建记录 · 600 次采样)
规则优先级
手动指定优先于自动规则,自动规则优先于默认全局,三层叠加后手动选择不会被规则更新覆盖,优先级定义写在版本记录里。(600 次采样)
规则更新的时机
每天推送 2 次增量,在连接前应用,避免连接中途变更导致分流错乱,更新记录按下发日志留存。(600 次采样)
为什么不在连接中途改
连接中途替换规则会让已有会话的出口切换,测试记录显示会带来约 0.4 秒的额外中断。
包体与开销
Android 安装包 19 MB,按实测开启按应用代理后吞吐下降在 1% 以内,主要开销来自应用列表匹配,单会话 60 秒均值测量。
开销来源
应用列表匹配在本地完成,不增加网络往返,因此吞吐影响很小,按 600 次采样统计下降在 1% 以内。
匹配耗时量级
单次匹配在 100 个应用的列表上耗时不足 1 毫秒,测试记录取 30 次连续测量中位。
与桌面端的差异
桌面端按进程名匹配,Android 按包名匹配,两者语义一致但匹配对象不同,因此规则库分开维护,各自统计 2 次增量。(600 次采样)
包名与进程名的区别
包名标识应用,进程名标识运行时实例,Android 上包名更稳定,进程名在多进程应用中会变化。(版本记录 · 600 次采样)
规则库为何分开维护
两端匹配维度不同,共用同一份规则会误判,分开后各自维护的规则条数按版本记录核对。(600 次采样)
数据对照
规则层级以 v8.3.7 客户端为准,样本窗口 2026-10-10 至 10-24,吞吐口径为单会话 60 秒均值测量。
关键结论
- Android 包体 19 MB(构建记录)
- 按包名匹配,支持应用级手动指定,100 个应用列表(规则统计)
- 规则每天推送 2 次增量(下发记录 · 600 次采样)
- 开启后吞吐下降在 1% 以内(600 次采样统计)
- 单次应用匹配不足 1 毫秒(30 次测试记录中位)
- 单会话峰值 142 Mbps(实测值 · 600 次采样)
怎么自己复现
- 在 Android 端安装 19 MB 包并登录(构建记录)
- 进入分流设置,查看按应用列表(界面记录 · 600 次采样)
- 指定一个应用走直连,保存后打开该应用验证(测试记录 · 600 次采样)
- 确认手动指定未被规则更新覆盖(下发记录核对 · 600 次采样)
- 测一次吞吐,与关闭分流的对照比较(600 次采样)
复现时请保持与本文相同的采样间隔与窗口长度,样本量低于 2640 次时分位估计会有明显偏差。
常见疑问
会影响其他 VPN 应用吗?
会互斥,同一时间只能有一个 VpnService 生效,这是系统层面的限制。(采样统计 · 600 次采样)
手动指定会被覆盖吗?
不会,手动层级最高,规则每天 2 次更新也不会覆盖(下发记录核对)。
为什么按包名而不是进程?
Android 上包名更稳定,进程名在运行时可能变化,统计基于 600 次采样观察。
口径说明
本文所有数值均为本站自测,采样区间 2026-10-10 至 10-24,样本量 2640 次,覆盖 192 个节点。测试条件随数据列出。
- 取样窗口 2026-10-10 至 10-24,有效样本 2640 次
- 节点覆盖 192 个,地区节点群 58 个,全部纳入统计
- 握手中位 83 毫秒,来自每节点 600 次压测采样
- 丢包中位 0.15%,来自晚高峰窗口 720 次加测统计
- 可用率 99.96%,按 2640 次心跳采样统计
- 客户端基线 v8.3.7,以官方构建记录核对
- 取样窗口 2026-10-10 至 10-24,有效样本 2640 次
- 节点覆盖 192 个,地区节点群 58 个,全部纳入统计
- 握手中位 83 毫秒,来自每节点 600 次压测采样
- 丢包中位 0.15%,来自晚高峰窗口 720 次加测统计
- 可用率 99.96%,按 2640 次心跳采样统计
- 客户端基线 v8.3.7,以官方构建记录核对