Android 冲浪客户端源码对比评估报告
评估视角:Android 架构 / 工程安全抽样(静态)
系统基线:Android 16(API 36)及更新系统行为
文档版本:2026-09-30
评估性质:选型级静态审查 + 公开信息交叉验证,非形式化第三方安全审计
先放测试结果:综合排名(仅 Android 客户端场景)
| 排名 |
项目 |
一句话 |
更适合 |
| 1 |
SFA |
Android 16+ 适配与内核同源最强;无默认遥测 |
要 sing-box、能接受 Experimental |
| 2 |
FlClash |
Clash 生态里体验与 target 36 最佳 |
要好用 GUI + mihomo + 多端 |
| 3 |
CMFA |
原生多模块最扎实、VPN 路径成熟 |
要可维护原生工程、偏稳定 |
| 4 |
NekoBox |
仍可用,但相对 SFA 明显落后 |
插件/历史习惯;勿用 Play 版 |
| — |
sing-box |
内核标杆,不是 App |
引擎/协议能力评估 |
| — |
Verge-rev |
桌面标杆,不是 Android |
桌面选型 |
1. 评估范围与对象
1.1 对比仓库
1.2 口径澄清(重要)
| 项目 |
是否 Android App |
本报告中的角色 |
| SFA |
✅ |
sing-box 官方 GUI,与内核同生态 |
| FlClash |
✅(兼桌面) |
Clash/mihomo 系多端客户端 |
| CMFA |
✅ |
Clash/mihomo 系原生 Android 客户端 |
| NekoBox |
✅ |
sing-box 系第三方/社区 Android 客户端 |
| sing-box |
❌ |
仅内核;App 层请看 SFA / NekoBox |
| Verge-rev |
❌ |
仅桌面,不参与 Android 排名 |
若目标是「Android 端选型」,应以 SFA / FlClash / CMFA / NekoBox 为主;sing-box 与 Verge-rev 仅作生态参照。
2. 评估方法与边界
2.1 已执行的工作
- 本地浅克隆相关仓库至工作区
_eval/,对关键路径做检出与检索。
- 代码侧定向抽样:
targetSdk / compileSdk / minSdk、Gradle 模块结构
AndroidManifest.xml:权限、VpnService、导出组件、FGS 类型
- 依赖树线索:Firebase / Crashlytics / 商业统计 SDK 等
- 敏感功能入口:远程控制、Xposed、本地入站相关公开讨论
- 公开元数据:GitHub API(Star、最近推送、License、默认分支)、README 安全警告、社区已知漏洞讨论。
2.2 未执行(因此不能夸大结论)
| 未做项 |
影响 |
| 全量逐文件 / 逐 commit 审计 |
无法声称「每一行都看过」 |
| 官方 Release APK 与源码构建产物一致性比对 |
供应链完整性未证明 |
| 真机动态抓包 / 长时间稳定性压测 |
流畅性、稳定性含推断成分 |
| 内核协议/密码学实现深挖 |
mihomo / sing-box 深度安全未覆盖 |
| 形式化「无后门」证明 |
不可能由静态抽样单独保证 |
2.3 结论可信度分级
| 级别 |
适用结论 |
| 高 |
是否 Android 项目、SDK 目标版本、模块形态、有无默认遥测 SDK、README 明确的供应链警告 |
| 中 |
架构质量相对排序、Android 16 适配相对优劣、公开已知共性问题(如 localhost SOCKS) |
| 低 / 推断 |
日常使用「手感」流畅度、长连接绝对稳定性(缺压测) |
| 不可保证 |
「绝对无后门」、第三方改包/渠道包安全 |
3. 各项目画像
3.1 sing-box(内核)
| 项 |
内容 |
| 语言 |
Go |
| 角色 |
协议、路由、DNS、入站/出站等核心引擎 |
| 质量印象 |
工程纪律强、持续演进、社区与文档成熟 |
| Android 关系 |
通过 libbox 被 SFA / NekoBox 等嵌入;本身不是 App |
| 后门抽样 |
未见「隐蔽上报用户流量到作者服务器」类典型模式(内核层抽样有限) |
3.2 SFA(sing-box-for-android)
| 项 |
内容(抽样时点) |
| 包名 |
io.nekohasekai.sfa |
| 版本线索 |
VERSION_NAME=1.15.0-alpha.9,VERSION_CODE=741 |
| UI |
Kotlin + Jetpack Compose |
| 内核绑定 |
libbox.aar / libbox-legacy.aar |
| SDK |
compileSdk = 37,targetSdk = 37,默认 minSdk = 24(otherLegacy 可至 21) |
| Product Flavors |
play / other / otherLegacy |
| 服务 |
VPNService、ProxyService、USBIP、Taildrop 等 |
| 特殊能力 |
Xposed 模块(隐藏 VPN / 应用列表等);Remote Control(用户配置的远程管理) |
| 遥测 |
依赖侧未见 Firebase / Crashlytics 等 |
| README |
明确 Experimental;GPL-3.0 + 名称限制条款 |
| 维护 |
活跃;有 Android 16 QPR2 相关 VPN 隐藏/接口修复提交线索 |
| 生态注意 |
GitHub Issues / PR 基本关闭;Star 规模小于 Clash 系 GUI |
架构评价:与内核同团队、对系统 API 跟进最激进,适合作为 sing-box 官方 Android 参考实现;客户端标注 Experimental/alpha,工程完备度高但产品成熟度需自行承担风险。
3.3 FlClash
| 项 |
内容(抽样时点) |
| 技术栈 |
Flutter (Dart) + Android 原生模块 + Golang 内核(ClashMeta/mihomo) |
| Android 模块 |
android/{app, service, core, common} |
| SDK |
targetSdk = 36,compileSdk = 36,minSdk = 23 |
| UI |
Material You,自适应多屏;宣称开源无广告 |
| 服务 |
VpnService + ProxyService,foregroundServiceType=specialUse |
| 遥测 |
Firebase Crashlytics 可选;模型默认 crashlytics = false,设置中可开关 |
| 分发 |
GitHub Releases、F-Droid 仓库链接等 |
| 自动化 |
Intent:START / STOP / TOGGLE |
架构评价:Android 16(API 36)对齐良好,跨平台体验统一;Flutter + VPN 在部分 OEM ROM 上边界问题排查成本高于纯原生。
| 项 |
内容(抽样时点) |
| 血统 |
Fork / 延续 ClashForAndroid(CFA)架构 |
| 技术栈 |
Kotlin 多模块:app / service / core / design / common |
| 内核 |
Clash.Meta / mihomo(android-real 等分支策略见其 README) |
| SDK |
minSdk = 21,targetSdk = 35 |
| 版本线索 |
如 versionName = 2.11.34(以仓库当时配置为准) |
| IPC |
Binder / kaidl 远程接口(IClashManager 等),UI 与服务边界清晰 |
| 遥测 |
代码侧未见 AppCenter / Firebase;PRIVACY_POLICY.md 仍提及第三方服务,疑似文档遗留 |
| 系统跟进 |
Manifest 注释含 Android 17+ 跨 Profile loopback 相关权限说明 |
| 分发 |
F-Droid、GitHub 等 |
架构评价:Android 原生工程结构最「教科书」:进程边界、配置与服务分离成熟;UI 相对偏旧,targetSdk 尚未到 36。
3.5 NekoBoxForAndroid
| 项 |
内容(抽样时点) |
| 血统 |
SagerNet / shadowsocks-android 系 GUI + sing-box |
| 技术栈 |
Kotlin、Room、插件化 |
| SDK |
compileSdk/targetSdk = 35,minSdk = 21(buildSrc Helpers) |
| 版本线索 |
VERSION_NAME=1.4.2,约 2026-02 量级提交节奏(相对 SFA/FlClash/CMFA 偏慢) |
| Flavors |
oss / fdroid / play / preview |
| 供应链警告 |
README:Google Play 版自 2024-05 起被第三方控制,非开源,请勿下载 |
| 协议面 |
宽(含插件扩展:Trojan-Go / Naïve / Mieru 等) |
架构评价:功能与协议覆盖广,但客户端演进弱于 SFA;同属 sing-box 系时,长期更建议评估迁往 SFA。
3.6 clash-verge-rev(仅参照)
| 项 |
内容 |
| 技术栈 |
Rust + Tauri + 前端 |
| 平台 |
Windows / macOS / Linux |
| Android |
无 |
| 本报告处理 |
不参与 Android 排名;桌面 Clash 生态可作对照 |
4. 维度对比总表
4.1 基础属性
| 维度 |
SFA |
FlClash |
CMFA |
NekoBox |
sing-box |
Verge-rev |
| Android App |
✅ |
✅ |
✅ |
✅ |
❌ |
❌ |
| 主要语言 |
Kotlin/Compose |
Dart/Flutter + Kotlin |
Kotlin |
Kotlin |
Go |
Rust + TS/前端 |
| 代理内核 |
sing-box |
mihomo |
mihomo |
sing-box |
自身 |
mihomo |
| 配置生态 |
sing-box JSON 为主 |
Clash YAML / Meta |
Clash YAML / Meta |
订阅出站为主* |
JSON |
Clash YAML |
| License |
GPL-3.0(+名称限制) |
GPL-3.0 |
GPL-3.0 |
标注 GPL 系/Other |
Other/自定义 |
GPL-3.0 |
| 维护活跃度(抽样) |
高 |
高 |
高 |
中偏低 |
高 |
高(桌面) |
* NekoBox README:订阅侧侧重解析出站节点,分流规则等可能被忽略。
4.2 Android 16 / SDK 适配
| 项目 |
compileSdk |
targetSdk |
minSdk(主路径) |
Android 16 相对结论 |
| SFA |
37 |
37 |
24 |
最优(已越过 API 36) |
| FlClash |
36 |
36 |
23 |
优秀(正式对齐 Android 16) |
| CMFA |
35 |
35 |
21 |
可用,未正式 target 36 |
| NekoBox |
35 |
35 |
21 |
可用,跟进偏慢 |
| sing-box / Verge |
N/A |
N/A |
N/A |
非 Android App |
Android 16 相关关注点(通用):
- 前台服务类型(
specialUse / systemExempted 等)声明是否完整
- VPN / 网络能力 API、OEM 对 VpnService 的差异
- 工作资料 / Private Space 与 loopback 不隔离 带来的本地代理风险
- 通知权限、电池优化、后台限制对长连接的影响
SFA 在公开提交线索中有针对 Android 16 QPR2 connectivity 的 VPN 隐藏相关修复,体现对系统变更的跟进速度。
4.3 代码质量与架构
| 项目 |
架构特点 |
优点 |
主要短板 |
| SFA |
单 App 模块为主 + Compose + libbox + 可选 Xposed |
与内核同源;系统 API 新;无默认遥测 |
Experimental/alpha;Issues 关闭;Clash 用户迁移成本 |
| FlClash |
Flutter UI + 独立 Android service/core |
工程现代化;UI/多端一致;target 36 |
Flutter+VPN 边界;跨语言栈复杂度 |
| CMFA |
经典多模块 + Binder 服务化 |
进程边界清晰;原生可维护性最强 |
UI 偏旧;target 35 |
| NekoBox |
SagerNet 遗产 + 插件 |
协议/插件丰富 |
依赖与节奏老化;相对 SFA 落后 |
| sing-box |
Go 内核分层(protocol/route/dns…) |
内核质量顶尖 |
不是 App |
| Verge-rev |
Tauri 桌面 |
桌面体验与生态强 |
无 Android |
4.4 流畅性(体验)
| 项目 |
相对评价 |
说明 |
| FlClash |
★★★★★ |
Material You、自适应,社区对「好用」反馈多 |
| SFA |
★★★★☆ |
Compose 现代;偏内核/配置向,学习曲线高于 Clash GUI |
| CMFA |
★★★☆☆ |
功能完整,界面风格偏经典 CFA |
| NekoBox |
★★★☆☆ |
功能密度高,界面相对陈旧 |
| 说明 |
— |
本项含推断与口碑,非统一设备帧率/掉帧实测 |
4.5 稳定性
| 项目 |
相对评价 |
说明 |
| CMFA |
★★★★★ |
Android VpnService 路径久经考验;模块边界清晰 |
| FlClash |
★★★★☆ |
综合稳定;极端 OEM 场景可能更吃适配 |
| SFA |
★★★★☆ |
内核强;客户端 Experimental/alpha,版本波动需接受 |
| NekoBox |
★★★☆☆ |
内核尚可;客户端维护滞后影响长期稳定性预期 |
| sing-box 内核 |
★★★★★ |
引擎层;不等于某一 GUI 的整体稳定性 |
4.6 安全性与「后门」判断
4.6.1 后门(恶意隐蔽通道)
对官方 GitHub 源码做权限、依赖、明显外联与敏感功能入口抽样后:
| 项目 |
抽样结论 |
备注 |
| SFA |
未见典型后门 |
Remote Control / Xposed 为显式功能,非隐蔽植入 |
| FlClash |
未见典型后门 |
Crashlytics 默认关闭,属可选遥测 |
| CMFA |
未见典型后门 |
隐私政策文档可能过时,以依赖树为准 |
| NekoBox(GitHub 源码) |
未见典型后门 |
— |
| NekoBox(Google Play 渠道) |
高风险(供应链) |
官方 README 明确第三方控制、非开源 |
| sing-box 内核 |
未见典型后门(有限抽样) |
— |
| Verge-rev |
未做 Android 专项 |
桌面项目 |
「未见」≠「证明不存在」。 只能降低风险,不能替代完整审计与二进制一致性校验。
4.6.2 更现实的高危面(共性 / 个案)
| 风险类型 |
影响项目 |
说明 |
| 无鉴权本地 SOCKS/Mixed 入站 |
多数 xray/sing-box/Clash 系客户端 |
任意 App 可连 127.0.0.1 旁路分应用代理,探测出口 IP;Private Space 亦难隔离 loopback。社区称 “localhost attack”。 |
| 供应链 / 改包 |
尤其 NekoBox Play |
只使用 GitHub Releases / F-Droid 等可信渠道并验签 |
| 订阅源投毒 |
全部 GUI |
客户端再干净,恶意订阅仍可劫持流量 |
| 可选遥测 |
FlClash |
Crashlytics 需用户开启才会收集崩溃相关设备信息 |
| 高能力功能 |
SFA |
Xposed 隐藏、Remote Control:能力强,需用户理解威胁模型 |
| 导出组件 |
FlClash / SFA 等 |
DocumentsProvider 等 exported 组件属功能暴露面,需关注授权模型 |
| QUERY_ALL_PACKAGES |
多数 Android 客户端 |
分应用代理所需,属敏感权限但用途合理 |
4.6.3 遥测 / 第三方 SDK 对照
| 项目 |
默认遥测 |
说明 |
| SFA |
无(抽样) |
未见 Firebase 等 |
| FlClash |
关 |
可选手动打开 Crashlytics |
| CMFA |
无(抽样) |
隐私文档提及的服务未必仍嵌入 |
| NekoBox |
无(抽样) |
外联多为更新检查 / 文档 / 用户订阅 |
5. 权限与组件面(Android App 摘要)
以下为 Manifest 抽样摘要,完整列表以各仓库当前文件为准。
5.1 SFA
- 网络 / FGS / 通知 / 开机自启 / 忽略电池优化
- Wi‑Fi 状态、本地网络、粗/精/后台定位、相机
QUERY_ALL_PACKAGES
VPNService(systemExempted)、ProxyService 等
BootReceiver exported
- Xposed Provider exported
- WorkingDirectory DocumentsProvider exported
5.2 FlClash
- 网络 / FGS / 通知 / Wi‑Fi / 忽略电池优化
QUERY_ALL_PACKAGES、厂商 GET_INSTALLED_APPS
VpnService / ProxyService(specialUse)
- TileService、广播接收(自定义 permission)
- FilesProvider(Documents)exported
5.3 CMFA
- FGS / 通知 / 开机自启 /
QUERY_ALL_PACKAGES
- 注释中的
INTERACT_ACROSS_USERS(跨用户/Profile 场景,受保护权限)
- 经典 CFA 多 Activity + ExternalControl 自动化
- Binder 远程服务架构
5.4 NekoBox
- 网络 / FGS(含 systemExempted)/ 通知 / 开机 / WakeLock
- 相机、
QUERY_ALL_PACKAGES
- signature 级自定义
SERVICE permission
- 插件 Query、多 Deep Link(clash/sn 等)
6. 综合排名(仅 Android 客户端场景)
| 排名 |
项目 |
一句话 |
更适合 |
| 1 |
SFA |
Android 16+ 适配与内核同源最强;无默认遥测 |
要 sing-box、能接受 Experimental |
| 2 |
FlClash |
Clash 生态里体验与 target 36 最佳 |
要好用 GUI + mihomo + 多端 |
| 3 |
CMFA |
原生多模块最扎实、VPN 路径成熟 |
要可维护原生工程、偏稳定 |
| 4 |
NekoBox |
仍可用,但相对 SFA 明显落后 |
插件/历史习惯;勿用 Play 版 |
| — |
sing-box |
内核标杆,不是 App |
引擎/协议能力评估 |
| — |
Verge-rev |
桌面标杆,不是 Android |
桌面选型 |
分项偏好(便于决策)
| 若你最在意… |
更倾向 |
| Android 16 / 新系统行为 |
SFA > FlClash > CMFA ≈ NekoBox |
| UI 友好、上手快 |
FlClash > SFA ≈ CMFA > NekoBox |
| 原生架构可维护、进程隔离 |
CMFA > SFA > NekoBox > FlClash |
| 与 sing-box 内核同步 |
SFA ≫ NekoBox |
| Clash YAML / 规则生态 |
FlClash / CMFA |
| 降低遥测面 |
SFA / CMFA / NekoBox(源码渠道);FlClash 保持 Crashlytics 关闭 |
| 供应链谨慎 |
全员只用官方 GitHub/F-Droid;严禁 NekoBox Play 非官方版 |
7. 选型建议
7.1 推荐组合
sing-box 路线(Android 16 优先)
- 客户端:SFA
- 内核:随官方 libbox / sing-box 版本
- 注意:Experimental、配置以 sing-box 为准
Clash / mihomo 路线(体验优先)
- 首选 GUI:FlClash(target 36)
- 备选:CMFA(原生、稳定、可定制包名自编译)
已在使用 NekoBox
- 短期可继续用 GitHub/F-Droid 验签包
- 中长期评估迁移至 SFA
- 立即停用官方已警告的 Play 第三方包
桌面
- 可单独考虑 Verge-rev;不要与 Android 客户端混排决策
7.2 安全使用基线(适用于所有客户端)
- 仅从 GitHub Releases / F-Droid 等可信渠道获取,校验签名与哈希。
- 假设本地 SOCKS/Mixed 可能被同设备其他 App 访问:尽量启用入站鉴权、关闭不必要入站、理解分应用代理的局限。
- 审慎对待订阅源;自建或可信源优先。
- FlClash:保持 Crashlytics 关闭,除非你明确接受崩溃上报。
- SFA:非必要不启用 Xposed 隐藏与 Remote Control;启用则纳入威胁模型。
- 不要期望「开源客户端」单独提供匿名性保证。
8. 与「是否从代码侧分析」的说明
本报告的结论建立在:
- ✅ 有代码侧抽样(SDK、Manifest、模块、依赖线索、敏感功能入口等)
- ✅ 有公开信息交叉验证(README 警告、社区已知问题、仓库元数据)
- ❌ 不是全量代码审计、APK 一致性证明或动态对抗评估
因此:适合作为 内部选型与风险提示文档;若需合规签字级报告,应另立项目做 SBOM、构建再现、二进制比对与运行时基线。
9. 建议的后续加深项(可选)
若需把评估推进到「可归档的技术附录」,建议固定三端 SFA / FlClash / CMFA 继续:
- 权限与导出组件矩阵(逐条对照用途与攻击面)
- 依赖 SBOM(Gradle/Flutter lockfile)
- 关键路径代码走读:VpnService 生命周期、配置/订阅拉取、本地入站默认值
- 官方 APK ↔ 源码构建 产物比对(有构建环境时)
- Android 16 真机冒烟:VPN 建立/切换网络/分应用/睡眠唤醒/OEM 杀后台
10. 附录:抽样时关键文件索引
| 项目 |
关键路径(示例) |
| SFA |
gradle.properties,app/build.gradle.kts,version.properties,app/src/main/AndroidManifest.xml,.../RemoteControlManager.kt,.../bg/VPNService.kt,.../xposed/** |
| FlClash |
android/gradle/libs.versions.toml,`android/app |
| CMFA |
根 build.gradle.kts(SDK/版本),app/src/main/AndroidManifest.xml,service/.../remote/*.kt,PRIVACY_POLICY.md |
| NekoBox |
buildSrc/.../Helpers.kt,nb4a.properties,app/src/main/AndroidManifest.xml,README.md(Play 警告) |
| sing-box |
Go 模块树(protocol/、route/、experimental/ 等) |
| Verge-rev |
仅元数据确认桌面定位,未做 Android 源码对比 |
附录:本地评估克隆目录(若存在)
D:\Tools Test\
├── FlClash\
├── ClashMetaForAndroid\
├── NekoBoxForAndroid\
├── sing-box\
└── sing-box-for-android\
11. 修订记录
| 日期 |
说明 |
| 2026-09-30 |
初版:纳入 SFA,完成六仓库口径澄清与 Android 维度对比;明确方法边界与后门结论表述 |
文档结束。