本文语言:中文 · 其他语言:English · فارسی · Русский
Chimera Lite 是一款面向 Android 的实验性代理客户端。Android 应用层使用 Kotlin:Watfaq 界面基于 Jetpack Compose,MetaCubeX 风格界面采用 Android 原生视图;代理核心由 Rust 编写,并通过 UniFFI 接入 Kotlin。
AChimera 提供 Watfaq(Compose)和 MetaCubeX 风格两套可切换界面;两套界面共用同一配置、设置、VPN 服务和 Rust 核心。Android 侧负责应用界面、系统 VPN 接入及业务协调,代理运行由原生 Rust 核心承担。
代理核心由 Rust 编写,并以 Android 原生库运行,设计目标是在提供高效网络处理能力的同时保持较低的资源开销。实际 CPU 和内存占用会随设备、配置、协议、规则及连接数量变化;本项目不以未经测量的固定数值作为资源占用承诺。
我们承诺将 Mihomo 配置兼容作为持续对齐目标:逐步对齐配置解析与运行行为,并针对支持范围补充验证。这里承诺的是持续缩小与 Mihomo 的兼容差距,不代表当前版本已能不加修改地运行所有 Mihomo 配置。实际支持范围由本项目锁定的上游版本、显式启用的核心 feature、本地运行时校验及 Android 集成共同决定。
当前核心锁定于 Chimera_Client v0.28.1,对应完整修订 daf67cb。下表依据该修订的 clash-lib 配置类型、协议转换实现及本项目显式启用的 features整理;它描述的是当前配置与运行实现范围,不是上游能力全集。
| Mihomo 配置类型 | 当前状态 | 支持范围与已知限制 |
|---|---|---|
ss(Shadowsocks) |
已启用 | 支持 Shadowsocks 出站代理;配置包含加密方式、密码、UDP 及插件选项。当前实现的插件范围包括 obfs、v2ray-plugin 和 shadow-tls,不代表任意 SIP003 插件都可用。 |
socks5 |
已启用 | 支持 SOCKS5 出站代理;配置模型包含认证、TLS 与 UDP 选项。 |
anytls(AnyTLS) |
已启用 | 支持 AnyTLS 出站代理及 TLS 客户端证书配置;客户端指纹和 idle-session 相关字段可读取,但当前不会应用。 |
vless(VLESS) |
部分支持 | 本项目运行时校验允许 TCP、WebSocket 和 XHTTP;TLS、REALITY 与 VLESS 原生加密 feature 已启用。XUDP 尚未实现(对应节点会关闭 UDP),SMUX 设置虽可读取但不会生效;目前原生加密仅支持 1-RTT。 |
wireguard(WireGuard) |
已启用 | 支持 WireGuard 出站配置,包含密钥、地址及路由相关选项。 |
trojan(Trojan) |
部分支持 | 支持 TLS 及默认 TCP、WebSocket 网络;虽然上游转换器包含 gRPC 实现,本项目的运行时校验目前仍拒绝 gRPC。client-fingerprint 字段可被读取,但客户端指纹模拟尚未实现。 |
hysteria2(Hysteria 2) |
已启用 | 上游 Hysteria 2(QUIC/TLS)实现已启用,支持项以该版本配置模型为准;client-fingerprint 不代表已实现客户端指纹模拟。 |
direct / reject |
内置动作 | 分别表示直连和拒绝流量,不属于代理协议。 |
传输与安全能力方面,本项目启用了 TLS、REALITY、WebSocket、XHTTP-H3 和 VLESS 原生加密相关 feature。需要注意,feature 已启用不等于 Mihomo 的每个字段组合都已适配:例如当前运行时校验不接受 VLESS/Trojan 的 gRPC 网络。http-port、mixed-port 是本地入站监听端口,不代表支持 HTTP 出站代理;当前出站类型定义也不包含 vmess。
- 在 Watfaq(Compose)与 MetaCubeX 风格界面之间切换,共用同一运行状态和配置数据。
- 通过 Android VPN 服务接入系统流量,并管理配置、代理组与节点选择。
- 导入和校验配置,查看运行日志及节点状态。
- 通过 UniFFI 将 Kotlin 应用层连接到 Rust 代理核心。
- Chimera — 跨平台桌面应用
- Chimera_Client — Rust 客户端核心及
clash-lib - Chimera Server — Rust 编写的服务端网络核心,以兼容 Xray-core 的服务端配置与运行行为为目标;项目仍在持续开发,具体支持范围因协议组合而异,详见兼容性矩阵和验证记录
- Proxy Wiki — 使用与部署文档
- Android SDK 36、Android NDK
29.0.14206865 - Kotlin、Jetpack Compose、Java 25 toolchain
- Rust
1.97.1(Rust 2024 edition)、cargo-ndk - UniFFI;上游 Rust
clash-lib依赖以完整 Git revision 锁定
- JDK 25
- Android SDK 36 和 Build Tools 36.0.0
- Android NDK
29.0.14206865 - Rust
1.97.1,以及仓库rust-toolchain.toml中声明的 Android targets 和组件 cargo-ndk;只有使用仓库justfile中的命令时才需要安装just
让 Gradle 找到 Android SDK/NDK,可在本机 local.properties 中配置 sdk.dir(可选 ndk.dir),或设置 ANDROID_SDK_ROOT / ANDROID_HOME(可选 ANDROID_NDK_HOME / ANDROID_NDK_ROOT)。local.properties 是本机配置,不要提交其中的本机路径。
安装命令行构建依赖:
cargo install cargo-ndk --locked如需使用下方的 just 命令,还需安装 just:
cargo install just --locked构建 Debug APK(默认仅包含 x86_64 ABI):
./gradlew :app:assembleDebug构建包含全部 Android ABI 的 Debug APK:
./gradlew :app:assembleDebug -Pchimera.fullAbi=true运行 Kotlin / Android 质量检查:
./gradlew ktlintCheck testDebugUnitTest lintDebugRust 导出接口变化后,使用仓库脚本生成 Kotlin UniFFI 绑定;检查已提交绑定与 Rust 接口是否一致:
just generate-bindings
just check-bindingsGradle 构建会为 Android ABI 编译 Rust 原生库,但不会自动重新生成 Kotlin UniFFI 绑定。绑定检查和生成需要 Android NDK、Rust Android target 与 cargo-ndk。
Windows 可将上述 ./gradlew 替换为 .\gradlew.bat。scripts/start-emulator.sh 需要 Bash 环境;运行前请在 Android Studio Device Manager 中创建 AVD:
./scripts/start-emulator.sh
# 或指定 AVD 名称
./scripts/start-emulator.sh YOUR_AVD_NAMEGitHub Actions 每日运行 Nightly 构建,也支持在 Actions 页面手动触发。构建的全 ABI Debug APK 会作为 Actions Artifact 保留 14 天;工作流还会把 APK 和校验文件上传到滚动的 GitHub nightly 预发布。Debug APK 使用 Android 默认 debug key,不是正式发布签名。可从项目 Releases 页面下载预发布 APK,也可从对应的 Actions 运行记录下载限期保留的 Artifact。
正式 Release APK 需要配置发布签名。密钥配置方式见Release APK 签名说明;仓库中的 SIGNING_CERT_SHA256.txt 用于核对不同版本 APK 是否由同一证书签名。证书连续性可以验证签名身份是否一致,但本身不证明现实中的个人或公司身份。
AChimera 仍在持续开发,并以逐步对齐 Mihomo 配置为兼容目标。各版本的实际能力以当前源码、锁定的 Rust 核心修订、启用的 feature 及 Android 集成为准;上游支持不代表所有配置字段或组合均已适配。构建成功也不等同于已验证特定协议连接、VPN 生命周期或所有 Android 设备上的运行行为。
项目许可证见仓库根目录的 LICENSE。欢迎通过 Issue 反馈问题或提交 PR;开始前可先阅读 Proxy Wiki 和应用架构说明。