v2rayNG: A dual-core Android client for V2Ray, Xray, and v2fly
A V2Ray client for Android, support Xray core and v2fly core. v2rayNG A V2Ray client for Android, support Xray core and v2fly core Download / Download the latest release here: [!TIP] v2rayNG is the mobile version.
At a glance
- What is it?
- v2rayNG is an open-source Android client that runs both Xray and v2fly cores. It focuses on mobile proxy use with geoip/geosite routing, but its development workflow carries real friction for anyone who wants to build from source.
- Who is it for?
- Adopt v2rayNG if you need a maintained, dual-core Android client for V2Ray or Xray and you are comfortable installing APKs from GitHub releases. Skip it if you require a fully reproducible build: the bundled core inside the aar is likely outdated, and you will need to compile the Go-based core yourself via AndroidLibV2rayLite or AndroidLibXrayLite.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Kotlin, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.
Star history
- 2dust/v2rayNG65,829 ★ · +5,615
| Repository | 2026-07-28 | 2026-11-13 |
|---|---|---|
| 2dust/v2rayNG | 60.2k | 65.8k |
5,615 Stars in the last 108 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What v2rayNG solves and who it targets
v2rayNG is an Android client for V2Ray, but it is not limited to the original v2fly core. The README states that it supports both Xray core and v2fly core, which makes it a single entry point for two separate proxy engines. The intended user is someone who already runs a V2Ray or Xray server and needs a mobile client to connect to it. The project explicitly positions itself as the mobile counterpart to the desktop v2rayN, with a note in the README that says "v2rayNG is the mobile version" and directs desktop users to the v2rayN repository. That distinction matters: this is not a general-purpose VPN app, and it does not try to be one. It is a specialized client for a specific protocol family.
How the dual-core mechanism works
The architecture is split between the Android UI and the actual proxy engine. The UI is a Kotlin project under the V2rayNG folder, and the proxy logic lives in a separate Go-based library packaged as an aar file. The README names two source repositories for that aar: AndroidLibV2rayLite for the v2fly core and AndroidLibXrayLite for the Xray core. That means the app does not embed the cores directly in the main repository. Instead, it links against a prebuilt aar, and the core version is fixed at the time that aar was compiled. The routing logic uses geoip.dat and geosite.dat files, which the app stores in Android/data/com.v2ray.ang/files/assets. The app can download enhanced versions of these files from the Loyalsoldier/v2ray-rules-dat repository, but the README adds a caveat: that download feature needs a working proxy. So you cannot bootstrap the enhanced rules without already having a route out.
Getting it running: releases, signatures, and permissions
The primary installation path is the GitHub releases page. The README tells users to download the latest release from https://github.com/2dust/v2rayNG/releases, and it does not mention any alternative like F-Droid or Google Play. Release files are signed with GPG, and the README provides a fingerprint: 7694 5E9F 3E9A 168F 8070 F195 805D 661C 134D FAF6 8903 C199 463C 31E5 AE90 3AE0. That signature is meant to guard against mirror, ISP, or CDN hijacking, which is a real threat for proxy clients. For emulator use, the README notes that v2rayNG can run on Android Emulators, and for Windows Subsystem for Android (WSA) you need to grant VPN permission with the command: appops set [package name] ACTIVATE_VPN allow. That is a concrete, non-obvious step that most users will not guess.
Building from source: where the friction starts
The development guide is honest about a significant limitation. It says the Android project under the V2rayNG folder can be compiled directly in Android Studio or with the Gradle wrapper, but the v2ray core inside the aar is "(probably) outdated." That is a direct quote from the README, and it changes the calculus for anyone who wants to build a custom client. To get a fresh core, you must compile the aar yourself from the Go projects AndroidLibV2rayLite or AndroidLibXrayLite. That requires the Go Mobile toolchain and a working Makefile build, which is a substantially higher bar than building a normal Android app. The README points to the Go Mobile wiki and a Makefile tutorial, but it does not provide a step-by-step guide for this repository. So the default build path gives you an old core, and the fresh-core path demands Go expertise.
Geoip and geosite handling: flexibility with a catch
The routing data is not hardcoded. The app reads geoip.dat and geosite.dat from a device-specific assets folder, and the README says the path may differ on some Android devices. That path is Android/data/com.v2ray.ang/files/assets, which is scoped storage on modern Android versions. Users can manually import the latest official domain list from Loyalsoldier/v2ray-rules-dat and the IP list from the geoip repository. The README also mentions that third-party dat files can be placed in the same folder, giving an example of the h2y file from the v2fly guide. That is a real strength: you are not locked into the bundled rules. But the catch is that the enhanced download feature requires an already-working proxy, so updating rules while offline or on a fresh install is not possible. You have to side-load the files manually if you have no active connection.
Licence and maintenance reality
The project is licensed under GPL-3.0, which means any derivative work that you distribute must also be GPL-3.0. That is a standard copyleft licence, but it matters if you plan to fork the client for internal use or for a commercial product. The repository is not archived, and the last push was 2026-11-01, with releases 2.3.15 (2026-11-01), 2.3.14 (2026-10-28) and 2.3.13 (2026-10-22) published within about ten days. That cadence suggests active maintenance. The README also links to a Telegram group and a Telegram channel for community support, which is a practical resource but also a sign that official documentation is thin. The wiki is mentioned, but the README does not summarize its contents. Maintenance cost for a user is low: you install the APK and update when a new release appears. For a developer, the cost is higher because the core build is separate and the aar version lag is a known issue.
When v2rayNG is the wrong tool
If you need a client that works out of the box with a recent core, v2rayNG may not be the best choice. The README explicitly warns that the bundled core in the aar is probably outdated, so users who depend on the latest protocol features or security fixes cannot get them from a standard release. They must either wait for the maintainers to update the aar or build it themselves. Also, the app is Android-only. The README directs desktop users to v2rayN, so there is no cross-platform story here. If your use case is a desktop or server environment, this project is irrelevant. Another limitation is the routing data bootstrap problem: the enhanced geoip/geosite download needs a proxy, so a user who cannot connect yet is stuck with the default rules unless they manually copy files. That is a real operational gap for first-time setup in a restricted network.
Alternatives and the difference in approach
The most direct alternative is the desktop client v2rayN, which the README itself points to. v2rayN is a separate project that runs on Windows, and it is not a mobile app. The difference is not just the platform: v2rayN has its own release cycle and its own core packaging, so the outdated-core problem may or may not affect it. Another alternative is to use a generic V2Ray client that only supports one core, such as a v2fly-only client. The advantage of v2rayNG is that it supports both Xray and v2fly cores in one app. But that dual support comes at the cost of a more complex build system, because two separate Go projects must be compiled to produce the aar. A single-core client would be simpler to build and update, but it would lock you into one protocol implementation. The trade-off is flexibility versus simplicity.
Editorial conclusion
Adopt v2rayNG if you need a maintained, dual-core Android client for V2Ray or Xray and you are comfortable installing APKs from GitHub releases. Skip it if you require a fully reproducible build: the bundled core inside the aar is likely outdated, and you will need to compile the Go-based core yourself via AndroidLibV2rayLite or AndroidLibXrayLite. Before relying on it, verify the GPG signature of the release file against the published fingerprint, and check whether the geoip/geosite assets in the app match the routing rules you intend to use. The project is actively pushed, with releases as recent as November 2026, but the core version lag is a documented, unresolved trade-off.
Frequently asked questions
What is v2rayNG?
An Android V2Ray client written in Kotlin, released under GPL-3.0, that runs either the Xray core or the v2fly core. It is the mobile half of the pair, with the desktop build kept in the separate v2rayN repository.
How do I install v2rayNG?
From the releases page of the repository at https://github.com/2dust/v2rayNG/releases, which is the only download channel the project names. The project does not name individual release assets or describe a store listing.
How do I set up v2rayNG?
Put geoip.dat and geosite.dat into Android/data/com.v2ray.ang/files/assets, and on WSA grant VPN permission with appops set [package name] ACTIVATE_VPN allow. The in-app download of those files needs a working proxy, so the first import has to be manual.
What is the latest v2rayNG version?
2.3.15, released on 2026-11-01. It came after 2.3.14 on 2026-10-28 and 2.3.13 on 2026-10-22, and the last push to the master branch was on the same day as 2.3.15.
Is v2rayNG open source?
Yes. The project is published under GPL-3.0 with its source on GitHub, and the project site is https://v2rayng.2dust.link. Support is directed to a Telegram group and channel rather than to the repository.
Is v2rayNG safe to install?
Release files are signed with GPG so that authenticity and integrity can be checked, which the project frames as protection against mirror, ISP or CDN hijacking. The signing fingerprint is published, but no verification command is documented alongside it.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/2dust-v2rayng)Star history chart for your README
[](https://hysenlabs.com/projects/2dust-v2rayng)Was this useful?