# v2rayNG is Android only, and its data download needs a proxy first

> v2rayNG is the Kotlin, GPL-3.0 Android client for the Xray core and the v2fly core. Builds come from GitHub releases rather than a store, the routing data files must be placed in a package directory whose path varies by device, and the in-app download that fetches them will not run until a proxy already works.

**2dust/v2rayNG** — 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.

- Repository: https://github.com/2dust/v2rayNG
- Website: https://v2rayng.2dust.link
- Stars: 63,117 · Forks: 8,160
- Language: Kotlin
- License: GPL-3.0
- Published: 2026-08-08 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/2dust-v2rayng

## Install is a GitHub release download and no store is named

The build comes from the repository's own releases page, and that is the only distribution channel named anywhere. The download section points at https://github.com/2dust/v2rayNG/releases and at the project site https://v2rayng.2dust.link, then stops. It does not say which release asset to pick, which CPU architectures are covered, or whether the app appears in any store, and the only other destinations offered are a Telegram group and a Telegram channel. A first run therefore means pulling a file off a release page and installing it, with nothing in that text telling you whether the file you fetched is the one the project published. Desktop users are sent somewhere else entirely.

## The desktop client is v2rayN, a separate repository

A tip block sits directly under the download link and draws a line the name itself blurs. v2rayNG is the mobile version, and the desktop version is v2rayN at https://github.com/2dust/v2rayN. Different repository, different release history, different platform. The consequence is a wrong artifact: a Windows or macOS user who lands on these releases has the phone build, and the shared name makes that a cheap mistake. The two projects share an author, a Telegram group at https://t.me/v2rayN and a place in the same client family, yet nothing in this repository documents feature parity between them, so you cannot assume a v2rayN setting has a v2rayNG counterpart. WSA adds a third situation, and it carries its own permission step.

## geoip.dat and geosite.dat go in a directory that varies by device

Routing decisions depend on two data files, and the app expects to find them at one exact path.

```text
Android/data/com.v2ray.ang/files/assets
```

The package name in that path is com.v2ray.ang, which tells you the application id this build uses, and a parenthetical attached to it matters: the path may differ on some Android device. Every documented route to custom routing data runs through that location, whether the file is an officially imported domain list or a third party dat file such as h2y. If the directory resolves somewhere else on a given handset, the app finds no geoip.dat and no geosite.dat. Nothing describes what happens then, whether it falls back, refuses to route, or runs without rules, and no error path is documented for a file that never arrived.

## The in-app download needs a working proxy before it can run

There is a chicken and egg problem in the update flow, stated in a parenthesis. The download feature pulls an enhanced version of the data files from the Loyalsoldier/v2ray-rules-dat repository, and the note on that line says it needs a working proxy. On a fresh install with no server configured and no route, the request has nowhere to go. What is offered instead is manual import: the latest official domain list and ip list can be brought in by hand, and a third party dat file can be dropped into the same assets folder. The working order is therefore install, transfer the files yourself, then configure routing, with the in-app download becoming usable only once a server is already up. Anyone provisioning several phones repeats the manual step each time.

## Compiling V2rayNG gives you an aar core that is probably out of date

The development guide opens with a warning that matters to anyone building this. The Android project under the V2rayNG folder compiles directly in Android Studio or through the Gradle wrapper, and the same sentence then says the v2ray core inside the aar is probably outdated. The parentheses around probably are the author's own hedge, not a fixed version number. What you get from a local build is a client shell wired to a core binary that may lag the current Xray or v2fly release, with no version check at startup and no documented way to ask a build which core it carries. The published releases and a locally compiled app are two separate paths to a working client, and neither one states the core version it ships.

## A current core means a Go build of the aar and a submodule checkout

Getting past that means leaving the Kotlin project behind. The aar can be compiled from one of two Go projects, AndroidLibV2rayLite for the v2fly core or AndroidLibXrayLite for the Xray core, and the guide sends you to the Go Mobile page and a makefile tutorial to do it. AndroidLibXrayLite sits at the repository root as a directory of its own, next to compile-hevtun.sh and a hev-socks5-tunnel directory, and a .gitmodules file at the root records that some of these come from other repositories rather than being stored here. A fresh clone without a submodule checkout is therefore not the tree the project expects. Bringing a current core up means a Go toolchain, a makefile run and a decision between two Go projects, which is a different job from opening Android Studio.

## On WSA the VPN permission is an appops grant you type by hand

Android Emulators run the app without extra steps. Windows Subsystem for Android does not, and the fix is one shell command.

```bash
appops set [package name] ACTIVATE_VPN allow
```

The placeholder is literal, and nothing in the repository supplies the substituted value. The application id visible in the assets path is com.v2ray.ang, so the string you pass has to be confirmed against the build you actually installed. Until the grant exists the app cannot set up the VPN interface that carries its traffic, and a user on WSA reads that as the app refusing to connect rather than as a missing permission. No revocation command is given, nothing says whether the grant survives an app update, and the same command is pointless on a device where the emulator path already works.

## GPG signed releases and three versions in seventeen days

Authenticity is handled with signatures rather than with a store, and the fingerprint is published in plain text.

```text
7694 5E9F 3E9A 168F 8070 F195 805D 661C
134D FAF6 8903 C199 463C 31E5 AE90 3AE0
```

The stated purpose is verifying authenticity and integrity, and preventing what the project calls mirror, ISP or CDN hijacking, which is the real exposure for a client handed out as a file. What is not given is the command that checks a signature against those two lines, so the fingerprint only helps someone who already knows the verification step. Cadence is quick: 2.3.7 on 2026-09-05, 2.3.8 on 2026-09-10 and 2.3.9 on 2026-09-22, with the last push to master landing on the same day as 2.3.9. The root listing has no changelog file, so at that pace the way to learn what changed is to compare builds.

## Conclusion

v2rayNG fits an Android phone or emulator user who already knows which core and which routing data they want, and the GPL-3.0 licence leaves you free to build on it. It does not fit a desktop user, who belongs in the separate v2rayN repository, and it does not fit anyone who needs the routing data fetched on first run, because that download requires a working proxy. Before anything else, check the asset path on your own handset, since the project warns that Android/data/com.v2ray.ang/files/assets may differ by device.

## FAQ

### 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.9, released on 2026-09-22. It came after 2.3.8 on 2026-09-10 and 2.3.7 on 2026-09-05, and the last push to the master branch was on the same day as 2.3.9.

### 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.

## Sources

- [Official documentation](https://v2rayng.2dust.link)
- [Official README](https://github.com/2dust/v2rayNG#readme)
- [Project repository](https://github.com/2dust/v2rayNG)
- [Release notes](https://github.com/2dust/v2rayNG/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/2dust-v2rayng
