AChimera is an experimental proxy client project based on Android + Kotlin/Jetpack Compose + Rust/UniFFI. The current repository already includes core capabilities such as an Android UI, VPN service entry, config import and validation, Rust core bridging, log viewing, and a node panel. Its goal is to separate the mobile experience and the underlying network core into a clear multi-module structure.
The current app name is Chimera Lite, and the package includes both the Android UI layer and the Rust core exposed to Kotlin through UniFFI.
hysteria2realityxhttptrojanvlesstls+ws
- Android SDK 36
- Kotlin + Jetpack Compose
- Java 25 Toolchain
- Rust 2024
- UniFFI
cargo-ndkclash-libas the Rust core dependency
Before building locally, prepare at least:
- JDK 25
- Android SDK 36 and Build Tools 36.0.0
- Android NDK
29.0.14206865 - Rust toolchain
cargo-ndk
It is recommended to configure one of the following so Gradle can locate the SDK/NDK:
sdk.dirinlocal.properties, and optionallyndk.dir- or
ANDROID_SDK_ROOT - or
ANDROID_HOME - optionally
ANDROID_NDK_HOME/ANDROID_NDK_ROOT
Install cargo-ndk:
cargo install cargo-ndk --lockedBuild the Debug APK:
.\gradlew assembleDebugRun quality checks:
.\gradlew testDebugUnitTest lintDebugBuild the Release APK:
.\gradlew assembleReleaseThe core module automatically completes two steps before Android compilation:
- Use
cargo ndkto buildchimera-ffifor Android ABIs - Run
uniffi-bindgenagainst the generated dynamic library to output Kotlin bindings
This project is still evolving, and the README only describes what has already been implemented in the current repository. Based on the existing strings and implementation, some known limitations still remain:
- after stopping the VPN, the current implementation may restart the app to avoid an unsafe runtime state
- some settings only fully take effect after restarting the VPN when switching configurations
clash-rs/clash-libstill has limited compatibility with some mihomo configurations
The project uses the LICENSE file in the repository root.
- If you run into usage issues or implementation problems, feel free to open an Issue or PR.
- Even if you are a complete beginner, after reading the wiki, you can continue asking more specific questions.
- The project also hopes to attract more developers to help improve it.
If this project helps you, consider giving it a star 馃А