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.
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.
geoip.dat / geosite.dat)The project includes a simplified version with basic rules ("geoip:private", "geoip:cn", "geosite:gfw") from @lhear/v2ray-rules-dat.
git clone --recursive https://github.com/lhear/SimpleXray
libxray.so) for your target architecture in app/src/main/jniLibs/[architecture directory]. E.g., app/src/main/jniLibs/arm64-v8a/libxray.so.geoip.dat and geosite.dat files into the app/src/main/assets/ directory. These are required for routing.Contributions are welcome! You can help by:
This project is licensed under the Mozilla Public License Version 2.0.
Kotlin
97.5%
Python
2.1%
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.
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.
geoip.dat / geosite.dat)The project includes a simplified version with basic rules ("geoip:private", "geoip:cn", "geosite:gfw") from @lhear/v2ray-rules-dat.
git clone --recursive https://github.com/lhear/SimpleXray
libxray.so) for your target architecture in app/src/main/jniLibs/[architecture directory]. E.g., app/src/main/jniLibs/arm64-v8a/libxray.so.geoip.dat and geosite.dat files into the app/src/main/assets/ directory. These are required for routing.Contributions are welcome! You can help by:
This project is licensed under the Mozilla Public License Version 2.0.
Kotlin
97.5%
Python
2.1%