Android and desktop setup

V2Ray Android and v2rayN Client Setup

A focused guide to the v2rayNG Android client, the v2rayN desktop client, and subscription-based routing, with steps organized by platform and workflow.

Xray · V2Fly VMess · VLESS Trojan · Shadowsocks Open source
04 Supported platforms 03 GUI clients CORE Xray · V2Fly OPEN Open-source licenses DOCS Configuration guides

Subscriptions and routingExplained by task

First understand what the client controls, then choose the protocol, proxy mode, and routing rules. The panels below use the actual setting names found in clients, keeping separate functions from being hidden behind one vague switch.

SUBSCRIPTION

Subscription management: group updates and active server selection

A subscription URL retrieves server configurations in bulk; it is not a connect button. Create a subscription group first, update it, and then select an active server from the list. v2rayN works well with separate groups for different purposes; in v2rayNG, the current subscription can be updated from the top-right menu. When an update fails, distinguish an invalid URL, a network access failure, and malformed response content before deleting working local configurations.

Subscription groupsand update order

A client can save multiple subscription sources, but updates should be performed per group. After adding a URL, verify the group name and address, then run the update and inspect the result. Once the server list appears, select an active server manually. Disable or remove subscriptions you no longer use to keep identically named servers from causing confusion. Place temporary manual configurations in a separate group so subscription updates do not overwrite local changes.

Core selectionand client boundaries

v2rayNG primarily uses the Xray core ecosystem, v2flyNG uses the V2Fly core, and v2rayN provides a desktop GUI for managing the relevant core components. The client handles imports, switching, and system integration; the core actually parses protocols and executes routing. If a new protocol parameter is not recognized, first check whether the client and core support that field rather than checking only the server address.

Routing modeand rule priority

Global, direct, and rule modes solve different problems. Global mode quickly verifies whether the proxy path works; direct mode pauses interception; rule mode is intended for everyday use, selecting an exit by domain, IP, port, or process. During troubleshooting, start with a simple mode, then return to rule mode and inspect the match order. Avoid adding many rules from unknown sources at once, or it will be difficult to identify which rule changed the traffic path.

System interceptionand application scope

A desktop system proxy mainly affects programs that follow system network settings, while TUN mode can cover a broader range of traffic. Android clients use the system VPN interface for local forwarding and can control participating apps with per-app proxying. Choose based on actual needs: use the system proxy first for browser traffic, and consider a separate proxy or TUN for command-line tools and apps that ignore system settings.

By operating systemChoose a client

Start with v2rayN on desktop and use v2rayNG on Android. The package pages further narrow the choices by processor architecture and release format.

Desktop pick

Windows

Use v2rayN. The desktop edition provides a cross-platform interface, while the classic WPF edition suits users who prefer the traditional Windows workflow. After installation, import a subscription and enable the system proxy. If the program will not start, check system components, installation-directory permissions, and the selected architecture.

Go to downloads
Desktop platform

macOS

Use the cross-platform desktop edition of v2rayN. Before downloading, determine whether the device uses Apple Silicon or an Intel processor; the two packages are not interchangeable. On first launch, allow the system to open the app, then configure the system proxy or TUN permissions as prompted.

Go to downloads
Mobile pick

Android

Use v2rayNG with the Xray core by default; choose v2flyNG when the V2Fly core is required. Most recent devices work best with an arm64 package; use the universal build when the architecture is unknown. Grant system VPN permission before connecting, and adjust background operation according to the device's battery-saving policy.

Go to downloads
Desktop platform

Linux

Use the Linux desktop edition of v2rayN. Debian- and Ubuntu-based distributions typically use deb, while Fedora, Rocky Linux, and related systems use rpm; you must also distinguish x64 from arm64. After installation, confirm that the desktop session, tray support, and system proxy settings fit the current distribution.

Go to downloads

Three stepsto configure a basic connection

These three steps cover only the minimum viable workflow. Once the connection works, configure routing rules, per-app proxying, DNS, or TUN; troubleshooting will be much easier.

  1. 01

    Install the client for your platform

    Use v2rayN on Windows, macOS, and Linux; use v2rayNG on Android. Before downloading, verify the operating system, processor architecture, and package format. After installing on desktop, launch the client. On Android, allow notifications and any required background permissions first; there is no need to connect yet.

  2. 02

    Import a subscription and select an active server

    Copy a valid subscription URL, add it as a source in the client's subscription group, and run an update. When the list appears, choose a server as the active entry. If the update fails, confirm the URL still works in a browser or on the provider's page, then check whether the client reports a network, format, or authentication error. Shared links can also be imported, but verify that all protocol fields are present.

  3. 03

    Enable the proxy and verify the traffic path

    On desktop, enable the system proxy first. On Android, tap Connect and approve the system VPN request. For verification, begin with a mode that has few rules, confirm that the browser behaves as expected, and then restore custom routing gradually. If the browser works but one program does not, check whether that program uses its own proxy settings or bypasses the system network configuration.

Project VCore and client roles

Clients, cores, protocols, and subscriptions are four distinct layers. Understanding the boundaries makes client selection and troubleshooting more direct.

01

Project V and the V2Ray configuration model

Project V established a network proxy model centered on JSON configuration, inbounds, outbounds, and routing. Common clients are not a separate protocol; they turn complex configuration into an operable graphical interface. After a subscription import, the client organizes server parameters into a configuration the core can read, then starts the process, switches the active server, and integrates with system network settings. Whether a shared configuration works therefore depends not only on the client name, but also on core support for the relevant protocol and transport parameters.

02

The V2Fly and Xray core families

V2Fly continues the community maintenance direction of V2Ray Core, retaining its mature inbound, outbound, routing, and transport structure. Xray extends a similar configuration model with additional protocol and transport capabilities. The two share many fundamental concepts, but their fields and new features are not always identical. v2flyNG is closely aligned with the V2Fly core, v2rayNG typically uses Xray, and v2rayN manages core components on desktop. When a configuration is incompatible, check the client version, core type, and server parameters as one troubleshooting chain.

03

What the three GUI clients do

v2rayN targets Windows, macOS, and Linux, making it suitable for managing multiple subscription groups, routing modes, the system proxy, and desktop runtime status. v2rayNG targets Android, using Xray as its primary execution layer and offering QR scanning, clipboard import, per-app proxying, and local VPN access. v2flyNG also targets Android but follows the V2Fly core path. All three are community-maintained open-source software; update schedules vary by project, and setting names and supported fields may differ.

04

Open-source licenses and reviewable code

The source code for v2rayN, v2rayNG, and v2flyNG is released under each project's own open-source license; the V2Fly and Xray cores also have defined license boundaries. Open source allows the community to review implementation, configuration parsing, and update history, while requiring users to understand that the software, core, and subscription service are separate entities. These docs cover client operation and public technical concepts; they do not replace maintainer announcements or treat third-party subscription sources as part of a client project.

05

Updates and configuration compatibility

Client updates, core updates, and subscription updates are three separate things. Client updates mainly change the interface, import logic, and system integration; core updates may add protocol fields, fix transport issues, or alter behavior; subscription updates retrieve the server list again from the provider. When a problem appears, do not reinstall the client, delete the configuration, and change the subscription all at once. Record the current settings, change one variable at a time, and observe whether the error changes.

Before and after connectingCheck these first

Why doesn't importing a subscription connect automatically?

Importing a subscription only creates a server list. You still need to select an active server and enable the system proxy on desktop, or start a system VPN connection on Android. If the list is empty, update the current subscription group again and read the error message. See Subscription and server terminology for related terms.

How should I choose between global and rule mode?

Global mode is useful for briefly testing the proxy path: all traffic intercepted by the client uses the same exit. Rule mode selects direct or proxied traffic by domain, IP, port, or process and is better for everyday use. Confirm the connection in global mode first, then switch back to rule mode to troubleshoot specific rules.

A server speed test passes, but an app cannot connect. What should I do?

A speed test only shows that one test request completed; it does not mean every app reads the system proxy. Check the system proxy status, per-app list, matched routes, DNS settings, and the target app's own proxy options. If only one program fails, first check whether it bypasses system network settings.

What is the main difference between v2rayNG and v2flyNG?

Both are Android GUI clients; the main difference is their core. v2rayNG primarily uses Xray, while v2flyNG corresponds to V2Fly. Base the choice on the protocols and parameters included in the subscription. If an existing configuration is stable in the current client, there is no need to migrate repeatedly just because the names differ.

Configuration principlesand troubleshooting notes

Each article breaks down client behavior around a specific problem instead of replacing configuration steps with broad conclusions.

View all articles →
Advanced

FakeDNS explained: how virtual IPs speed up domain routing

Learn how FakeDNS responses work, why reserved address ranges are used, and what to watch for when combining domain sniffing, TUN mode, and routing rules.

Read the full article →
Troubleshooting

Subscription link expired or parsing failed? Six steps to find the root cause

Check URL validity, response content, network access, client request behavior, and local settings in order to distinguish a subscription-source problem from a client import issue.

Read the full article →
Protocols

VMess, VLESS, Trojan, and Shadowsocks: differences and selection guide

Compare protocols by encryption responsibilities, handshake overhead, transport combinations, and device constraints to match configuration choices with server capabilities.

Read the full article →