Kr328

客户端与生态

Clash for Android 核心开发者 · 2019 — 2023

又名 K大

将规则核心装入掌心:Clash for Android 的移动端拓荒

攻克移动系统沙盒与网络切换的重重险阻,打造装机量数百万的移动端规则代理神器

第一幕 · 移动困局:沙盒高墙与跨语言碰撞的技术天堑

当 Clash 在桌面端凭借灵活的 YAML 策略组大放异彩时,移动端的世界却依然是一片荒漠。

与拥有完整文件系统权限和常驻特权的桌面环境不同,移动操作系统是一座戒备森严的沙盒牢笼。Android 系统对后台进程施加着近乎严苛的资源配额,低内存击杀机制(OOM Killer)与深度休眠策略(Doze Mode)随时会毫不留情地抹杀异常常驻进程。

更为棘手的是系统权限的铁板一块。Android 严禁普通无提权应用随意创建底层虚拟网卡(TUN 设备),整机网络流量必须完全通过特权接口 android.net.VpnService 向系统内核申请文件描述符(File Descriptor),再安全渡让给应用进程。

而将采用 Go 语言编写的 Clash 核心塞入智能手机,更面临着跨语言与底层调度的巨大天堑:Go 运行时自带的垃圾回收(GC)和抢占式协程调度,在资源敏感的移动芯片上极易诱发严重的系统抖动与异常功耗。

要在 Java/Kotlin 虚拟机、C++ 桥接层与底层 Go 运行时之间建立纳秒级的数据通道,要求开发者必须同时洞悉 Linux 内核网络栈、Binder IPC 通信与 Android NDK 极限优化。[1][13]

第二幕 · 底层攻坚:tun2socket、lwIP 与零拷贝的极客突破

2020 年 3 月 26 日,Kr328 在 GitHub 推送了底层网络库 tun2socket 的创世提交(Commit 74c8a6e)。他在项目声明中用最极简的极客语言定下基调:“A utilize that use kernel tcpip stack to forward packet from tun device.”(一个利用内核 TCP/IP 协议栈将数据包从 TUN 设备转发至 Socket 的工具)。

面对移动端处理网络数据包时的性能损耗,Kr328 展现出了顶级系统工程师的深厚功底。

2021 年 5 月 21 日,他在提交 7381b78 中为核心引入轻量级 lwIP 协议栈(“Improve: use lwip stack instead of kernel”),绕过繁冗的操作系统内核路由中转,直接在应用内实现高并发数据包快速解构。

2022 年 4 月 14 日,Kr328 推送了里程碑式的提交 20bdf17(“Feature: add zero-copy support”),在底层实现了真正的零拷贝(Zero-Copy)网络数据搬运。

零拷贝技术的实装,彻底消除了内核态与用户态之间冗余的内存拷贝和上下文切换开销,使移动设备在承载千兆高吞吐规则代理时依旧保持轻盈冷静,彻底粉碎了“Go 语言在手机上必卡顿发烫”的行业刻板偏见。[2][3][7][8]

第三幕 · 架构解耦:kaidl 编译器与跨进程状态机的自愈奇迹

在解决底层封包吞吐的同时,移动应用的稳定性面临着另一道考验:进程生命周期管理。

为了避免传统 Java AIDL 在 Kotlin 工程中繁琐胶水代码带来的维护泥潭,Kr328 发挥编译器级工程力,自研并开源了 kaidl 代码生成器。该工具基于 Google KSP(Kotlin Symbol Processing)与 Kotlinpoet,开创性地为 Kotlin 开发者提供原生强类型的 Android Binder 跨进程接口生成方案。

2021 年 5 月 16 日,Kr328 在提交 d48b15a 中将 kaidl 内联至项目(“Improve: \"inline\" kaidl”),由此确立了 CFA 极其稳健的跨进程架构:前台交互界面(:app)与后台虚拟网卡核心服务(:service)物理隔离运行,即便前台 UI 遭遇异常闪退,底层的网络代理通道依然岿然不动。

针对移动网络中用户最深恶痛绝的“电梯假死”与基站切换断连,Kr328 打造了高度自适应的网络自愈状态机。

2021 年 9 月 11 日,他在提交 b07f70a 中优化了网络监听器行为(“Improve: should not reload profile on network changed”),终结了传统代理在 Wi-Fi 与蜂窝数据切换时暴力重载配置导致的连接闪断;2022 年 4 月 20 日,他又在提交 bf59ead 中实装网络重置时的全局连接精准熔断(“Feature: close all connections on reset”),彻底消除了网络突变带来的僵尸死链接。

针对长期待机功耗,他在提交 c7cb1da 中引入熄屏感知(“Improve: disable network observer on screen off”),在屏幕熄灭进入 Doze 模式时自动休眠网络观察模块,实现了真正的无感极低功耗。[4][6][10][9][11]

第四幕 · 原生美学:Material Design、分应用代理与 Fake-IP 典范

与许多简单使用网页打包壳(Webview)拼凑出的跨平台移动应用不同,Kr328 始终坚持采用纯正的原生技术栈(Kotlin + Android Jetpack)精细打磨 CFA。

CFA 的界面堪称 Android 平台上遵循 Material Design 规范的教科书级典范:主屏以极具科技感的仪表盘呈现当前出站规则、实时吞吐速率波形与一键启停开关;在代理面板中,策略组与节点以高信息密度的卡片排列,用户轻点一键测速,彩色延迟徽章便如水波般流动闪烁,网络质量一目了然。

而最深入人心的,是他对“分应用代理(Per-App Proxying)”的极致打磨:用户只需在界面中轻轻勾选,即可随意指定哪些应用走代理、哪些直连,甚至支持包名模糊搜索与黑白名单双向切换。

配合底层 Fake-IP 模式与精心调优的 fake-ip-filter 域名白名单,CFA 巧妙规避了国内金融应用与本土通信软件的证书校验问题,兼顾了本地生活直连安全与海外学术资源加速,真正做到了“润物细无声”的智能化日用体验。[13][15]

第五幕 · 骤停风暴:“删库,不再维护。Take care.”与时代叹息

凭借坚如磐石的稳定性和赏心悦目的原生质感,CFA 迅速登顶中文 Android 规则代理工具榜首,在 GitHub 与 Google Play 商店斩获了数百万次下载与无数极客的好评。在长达近四年的时间里,它成为了千千万万移动设备用户触摸真实互联网最可靠的随身桥梁。

2023 年 11 月 2 日,桌面端最负盛名的 CFW 仓库被删除,整个中文代理社区骤然卷入巨大的震荡中。

北京时间 2023 年 11 月 3 日 14:15,面对突发的外部生态变动,Kr328 在 Telegram 官方频道 @cfa_channel 留下一句极其平静、克制而又令全网无数用户为之唏嘘的告别原话:

“删库,不再维护。Take care.”

随后,拥有极高声誉的 Kr328/ClashForAndroid 仓库被彻底删除,应用从 Google Play 官方商店全面下架;同日 Dreamacro/clash 核心仓库也被记录为删除。在这场时代风暴中,作者以最体面的方式收起行囊,给长达四年的拓荒长征画上了句号。[16][19][13][15]

第六幕 · 时代余响:分支接力与深植移动生态的开源丰碑

尽管主仓库随风而去,但 Kr328 留下的技术财富并未在风暴中湮灭。

早在 2022 年 6 月 7 日,开源社区便创建了 MetaCubeX/ClashMetaForAndroid(CMFA)分支仓库。该项目以 CFA 的开源底座为基准,无缝换装了新一代 Mihomo(Clash.Meta)核心,完整保留了 Kr328 开拓的原生 Material Design 界面、kaidl 跨进程通信体系与 tun2socket 底层驱动。

在原版停更后,CMFA 迅速扛起了 Android 平台规则代理的大旗,继续守护着数以百万计的移动端设备。

从突破系统沙盒的 tun2socket,到造福 Android 极客圈的 kaidl 编译器与 Riru 系统模块,Kr328 用纯粹的工程力证明了:真正的极客即便告别舞台,他所锻造的每一行优雅代码与架构范式,依然会在开源世界的血脉中奔流不息。[17][18][20][3]

代表作品与核心贡献

Clash for Android (CFA)

访问作品

基于 Android VpnService 与 Clash 核心构建的国民级 Android 规则代理客户端

tun2socket

访问作品

利用内核网络协议栈将 TUN 设备数据包高效重定向至 Socket 的底层网络库

基于 Google KSP 与 Kotlinpoet 构建的现代化 Kotlin Android Binder IPC 代码生成器

Android 系统底层极客模块

访问作品

包含 Riru-ClipboardWhitelist、Riru-IFWEnhance 等针对系统进程与沙盒机制的底层探索

致敬开发者的坚守

代码或许归档,但火种永不熄灭。为推动网络对抗演进与底层工程突破的开拓者献上一份敬意。

单设备 1 小时内限致敬 1 次 · 匿名无感不收集隐私

编年大事记

开源底层 TUN 转发工具 tun2socket

推送创世根提交 74c8a6e 开源 tun2socket,利用内核网络栈将 TUN 虚拟网卡报文高效重定向至 Socket。[2][3]

发布 Clash for Android 首批公开稳定版

确立纯原生 Android 交互设计,支持规则分流、节点延迟彩色测速与订阅管理。[13]

深度整合 Fake-IP 与原生 TUN 模式

大幅降低移动网络环境下的建连延迟与设备待机耗电,消除锁屏断连痛点。[13]

Clash for Android 架构现代化全面重构

推送提交 07e8afa 开启工程架构全面现代化,确立多模块工程体系与旧版本数据库平滑迁移模块。[5]

引入自研 kaidl Kotlin Binder 编译器

推送提交 d48b15a 内联自研 kaidl 编译器,利用 KSP 实现纯 Kotlin 跨进程 Binder IPC 通信与双进程解耦。[6][4]

引入 lwIP 协议栈替代原生内核网络转发

推送提交 7381b78 为核心引入嵌入式 lwIP 网络协议栈,优化小包解构效率并降低移动端内存抖动。[7]

上架 Google Play 商店并推出 FOSS 纯净构建

为海内外 Android 用户提供便捷官方分发渠道,下载量迅速突破百万级,并分离出无闭源跟踪器的 FOSS 开源版本。[15]

重构移动网络自愈状态机

推送提交 b07f70a 优化网络状态变更监听,消除 Wi-Fi 与移动蜂窝网络切换时重新加载配置引发的闪断假死。[10]

引入熄屏深度休眠感知

推送提交 c7cb1da 在屏幕熄灭时停用网络状态观察模块,深度适配 Android Doze 低功耗待机模式。[11]

实装 tun2socket 零拷贝支持

推送提交 20bdf17 在 tun2socket 中实装零拷贝传输,彻底消除用户态与内核态间冗余内存复制开销。[8]

实装网络重置即时连接熔断机制

推送提交 bf59ead 在网络重置时主动断开所有现存套接字,消除移动基站切换产生的残留死链接。[9]

ClashMetaForAndroid 社区分支仓库创建

GitHub 记录 MetaCubeX 社区于此日创建仓库,以 CFA 开源工程为基础适配 Clash.Meta 核心。[18][17]

发布 CFA v2.5.12 最终稳定版本构建

推送提交 8506303 并发布 v2.5.12 标签,精细调优 MTU 并更新隐私策略,成为作者亲手维护的绝版发行版。[12][14]

删除 GitHub 仓库并从 Google Play 下架

同期记录显示,Kr328 在频道留下“删库,不再维护。Take care.”告别后删除仓库并下架应用;与原版核心删库同为北京时间 11 月 3 日,不据此推断因果关系。[16][19]

一手来源与考据

小传正文中的关键事实与时间点均基于以下公开一手记录或权威报道:

  1. [1]

    记录作者在 GitHub 上的开源项目、开发历史与主页说明

    https://github.com/Kr328
  2. [2]

    2020-03-26 创世提交,确立使用内核 TCP/IP 协议栈转发 TUN 数据包的核心定位

    https://github.com/Kr328/tun2socket/commit/74c8a6eede9b13b2f6f4c23ec6269ee0f7ce8e30
  3. [3]

    开源 TUN 报文转发与 Socket 桥接底层库

    https://github.com/Kr328/tun2socket
  4. [4]

    基于 KSP 与 Kotlinpoet 构建的现代化 Kotlin Android Binder IPC 代码生成器

    https://github.com/Kr328/kaidl
  5. [5]

    2021-05-15 开启模块化重构,奠定现代移动端架构基石与数据库平滑迁移逻辑

    https://github.com/MetaCubeX/ClashMetaForAndroid/commit/07e8afa69a428a3928e38e9ed3bde6ee4ea69bb4
  6. [6]

    2021-05-16 将 kaidl 内联入工程,确立前台界面与后台服务的强类型跨进程架构

    https://github.com/MetaCubeX/ClashMetaForAndroid/commit/d48b15afee393bea59fa75ca232767afb7ddacb3
  7. [7]

    2021-05-21 引入嵌入式 lwIP 替代直接内核转发,大幅精简移动端数据包解析开销

    https://github.com/MetaCubeX/ClashMetaForAndroid/commit/7381b787f3aa91700887c074917580bb7cabbbf8
  8. [8]

    2022-04-14 消除跨态内存拷贝与系统调用开销,实现千兆吞吐下的极低 CPU 占用

    https://github.com/MetaCubeX/ClashMetaForAndroid/commit/20bdf171eef210aacf96b979b9618ccc28cfbcda
  9. [9]

    2022-04-20 在网络重置时强制切断连接,彻底消除移动网络切换带来的残留死套接字

    https://github.com/MetaCubeX/ClashMetaForAndroid/commit/bf59ead3b2490592854f95225aa525e263ffc5b4
  10. [10]

    2021-09-11 优化网络变更处理,避免 Wi-Fi 与蜂窝数据切换时重复载入配置引发的闪断

    https://github.com/MetaCubeX/ClashMetaForAndroid/commit/b07f70ab0b494a87ea9f20b52612f3895bcd7e5d
  11. [11]

    2021-11-16 熄屏时自动停用网络状态观察模块,完美适配 Android Doze 低功耗待机

    https://github.com/MetaCubeX/ClashMetaForAndroid/commit/c7cb1dab38865997a9a0a297ea7ff65204f598d8
  12. [12]

    2022-11-17 完成 MTU 微调与版本发布,成为作者亲手维护的绝版构建

    https://github.com/MetaCubeX/ClashMetaForAndroid/commit/85063036936b71a3663ae081619bf9795bf37ca9
  13. [13]

    保存了 CFA 仓库被删除前的完整 README、功能特性与历史 Releases 记录

    https://web.archive.org/web/20231103071433/https://github.com/Kr328/ClashForAndroid
  14. [14]

    记录作者在 GitHub 发布的最后一个正式稳定版本 Release

    https://web.archive.org/web/20231103070004/https://github.com/Kr328/ClashForAndroid/releases/tag/v2.5.12
  15. [15]

    证实其在 Google Play 官方商店的正式发行、评分及数百万下载数据

    https://web.archive.org/web/20231028120000/https://play.google.com/store/apps/details?id=com.github.kr328.clash
  16. [16]

    记录作者在频道发布的“删库,不再维护。Take care.”告别短语

    https://t.me/cfa_channel/1594
  17. [17]

    基于 CFA 开源底座由社区维护并换装 Mihomo 核心的继承项目

    https://github.com/MetaCubeX/ClashMetaForAndroid
  18. [18]

    created_at 字段记录仓库创建时间,不等同于首次发布或分支全部开发历史的起点。

    https://api.github.com/repos/MetaCubeX/ClashMetaForAndroid
  19. [19]

    按北京时间记录:CFW 发布仓库于 11 月 2 日被删除,Clash Core 于 11 月 3 日被删除;区分删库与归档,不推断各项目行动之间的因果关系。

    https://github.com/net4people/bbs/issues/303#issuecomment-1792177030
  20. [20]

    展现作者在 Android 系统底层沙盒穿透与 Zygisk/Riru 模块化机制上的深入造诣

    https://github.com/Kr328/Riru-ClipboardWhitelist
资料边界与事实声明

本文严格基于公开的代码仓库归档记录、Git 提交历史、官方 Release 说明、应用商店公开记录及开发者公开技术发言编写。对于开发者的现实姓名、个人生活及离场去向,本站绝不进行任何调查、推测或记录;对 2023 年 11 月的项目关停与应用下架,仅据实陈述客观事实,不作非公开背景的臆测。

修订历史:
  • :优化补全六幕戏剧化长篇纪传,全面核验 tun2socket、kaidl、lwIP 及零拷贝 Commit SHA,补充 14 项编年大事记与 20 项权威开源文献。

发现人物信息不准确?

写明需要纠正的内容,可附相关链接。资料会在人工核验后更新。