SimpleXray
Stable and efficient Android proxy client based on Xray-core
Install / Use
/learn @lhear/SimpleXrayREADME
SimpleXray
<img src="https://raw.githubusercontent.com/lhear/SimpleXray/main/metadata/en-US/images/icon.png" alt="icon" width="150">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.
Key Features
- 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.
Unique Technical Approach
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.
Data Files (geoip.dat / geosite.dat)
The project includes a simplified version with basic rules ("geoip:private", "geoip:cn", "geosite:gfw") from @lhear/v2ray-rules-dat.
Quick Start
- Requirement: Android 10 or higher.
- Get App: Download the APK from the Release Page or get it from F-Droid.
- Install: Install the APK on your device.
- Configure: Launch the app, import or manually add server details.
- Connect: Select a config and tap connect.
Build Guide (Developers)
- 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. - Add Data Files: Place
geoip.datandgeosite.datfiles into theapp/src/main/assets/directory. These are required for routing. - Build: Sync Gradle and run the build task.
Contributing
Contributions are welcome! You can help by:
- Submitting Bug Reports (Issues)
- Suggesting Features
- Submitting Code (Pull Requests)
- Improving Documentation
License
This project is licensed under the Mozilla Public License Version 2.0.
Related Skills
node-connect
352.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
