SimpleXray is a high-performance proxy client for Android, built upon the robust Xray-core (@XTLS/Xray-core).
It features an innovative approach: directly executing the official Xray-core binary, unlike traditional JNI methods. This method isolates core logic from the app layer, boosting stability and maximizing Xray-core's native performance. SimpleXray aims to provide a stable and efficient network experience.
- Enhanced Stability: By running Xray-core as an independent child process, SimpleXray avoids JNI complexities, potential memory issues, and app crashes linked to core library failures. This isolation significantly improves reliability.
- High Performance: Leverages Xray-core's native speed and integrates @heiher/hev-socks5-tunnel for efficient Tun2socks, ensuring low latency and high throughput.
- User-Friendly: Offers a clean, intuitive UI and simplified setup, making it easy for users to configure and manage connections.
Most Xray-core Android clients use JNI to call a compiled .so library. While easy to integrate, this can cause stability issues like performance overhead, cross-language complexity, and app crashes if the core library fails.
SimpleXray's core difference is how it starts and manages the proxy:
On installation/update, the embedded Xray-core binary (as libxray.so
) is extracted. When connecting, the app uses standard Android APIs to run this binary as a separate child process, not via JNI calls. Communication happens via defined Inter-Process Communication (IPC).
This design preserves the original Xray-core binary's stability and performance while physically isolating the core process from the main app, enhancing reliability and security.
These files are usually in /storage/emulated/0/Android/data/com.simplexray.an/files/
.
The project includes a simplified version with basic rules ("geoip:private"
, "geoip:cn"
, "geosite:gfw"
) from @lhear/v2ray-rules-dat. Users can replace them with full versions if needed.
- Requirement: Android 10 or higher.
- Get App: Download the APK from the Release Page.
- Install: Install the APK on your device.
- Configure: Launch the app, import or manually add server details.
- Connect: Select a config and tap connect.
- Environment: Install Android Studio and configure the Android SDK.
- Get Code: Clone the repo and submodules:
git clone --recursive https://github.com/lhear/SimpleXray
- Import: Open the project in Android Studio.
- Integrate Core: Place the Xray-core binary (
libxray.so
) for your target architecture inapp/src/main/jniLibs/[architecture directory]
. E.g.,app/src/main/jniLibs/arm64-v8a/libxray.so
. - Build: Sync Gradle and run the build task.
Contributions are welcome! You can help by:
- Submitting Bug Reports (Issues)
- Suggesting Features
- Submitting Code (Pull Requests)
- Improving Documentation
This project is licensed under the Mozilla Public License Version 2.0.