Check compatibility if your system is outdated. Choosing a package for a different chip won’t overcome an OS version limit.
Installation and network permissions
Install in Applications; grant permissions for the features you use
Check prompts for app launch, the system proxy, and TUN separately.
Android downloads
Choose v2rayNG by default. Use v2flyNG only when your configuration specifically requires the V2Fly core.
v2rayNG
RecommendedXray core
Android GUI client · APK
arm64
A good first choice for most phones released since 2015. Your device must still support 64-bit apps; processor marketing specs alone aren’t enough to confirm compatibility.
Includes multiple architectures. Choose it if you’re unsure of your device’s architecture or the arm64 installer reports incompatibility, then check the system requirements.
Supports multiple architectures; typically a larger download
Manifest release label: 2.2.6. The manifest maintains the release label separately from the package filename; check the package details for the app version shown during installation.
v2flyNG
AlternativeV2Fly core
For configurations that require V2Fly
arm64
For devices that support arm64 apps. Check the node protocol and transport settings first; don’t assume every field is interchangeable between cores.
If Android requires permission to install apps from your browser or file manager, grant it only to the source you’re using. You can revoke that permission after installation. The first time you connect, Android will ask for VPN permission; approve it to establish the local traffic tunnel.
Other VPN apps on the same device may already be using that tunnel. Disconnect them before testing, then check the status bar and client logs. If the connection drops often in the background, review battery optimization, auto-start, and background activity restrictions instead of repeatedly changing the installer.
Core and configuration compatibility
One key difference between v2rayNG and v2flyNG is the core they use. The same protocol name doesn’t guarantee that all transport options, security settings, and newer fields are supported identically. For REALITY, flow, or a specific transport, check support in the selected client’s current core first.
If an upgrade reports a signature mismatch, don’t uninstall right away. Export any nodes and routing settings you can preserve, check which release channel your current app came from, and then decide whether to migrate. Uninstalling may delete app data, and a subscription URL might not be recoverable from a system backup.
Before installing on Android
Check
Requirement
What to do
App architecture
arm64 or universal
Check which app ABIs your device supports. If you’re unsure, choose the universal version.
Operating system compatibility
Meets the minimum requirements for the selected app release
If the installer says your OS version is too old, a universal package won’t replace an OS upgrade.
Permissions and storage
Install-source permission, VPN permission, and enough free storage
You need storage for both the download and installation. Confirm VPN permission before connecting.
In-place upgrades
Compatible app ID and signing key
Preserve your data before migrating between release channels; don’t uninstall blindly.
Linux downloads
First check your distribution’s package system. deb and rpm are package formats, not connection modes.
v2rayN
Desktop clientdeb / rpm
Desktop GUI · x64 and arm64
deb package
For compatible distributions that use deb packages. Most x64 desktop systems should use the main download; ARM devices should use the arm64 package below.
For distributions that use rpm and meet the package dependencies. The right file extension is only a first step; your system libraries must also meet the requirements.
Check both your system architecture and the package architecture.
Package system and dependencies
deb or rpm, with all dependencies required by the package
Check with your distribution’s package manager; don’t force installation across package systems.
Runtime environment
A working graphical desktop session and required system libraries
This GUI client is not intended for command-line-only environments.
Feature permissions
Configure system proxy and TUN separately
Grant permissions only for the features you use; don’t run your entire desktop session with elevated privileges.
INSTALLATION / CONFIGURATION
What to configure after installation
01 / IMPORT
Import a subscription or node
After installing the client, import a subscription link, share link, or configuration file that you obtained and are authorized to use. Subscriptions provide node settings; the installer itself doesn’t include connectable nodes. Make sure you’ve copied the complete content, then use the client’s import option. A regular webpage URL is not necessarily a subscription link.
Subscription links may contain account identifiers or access tokens, so treat them as sensitive information. If parsing fails, check whether the link has expired, returns a login page, or requires a specific format from the provider. Don’t upload private links to unfamiliar online conversion tools.
02 / ROUTING
Choose a node and routing mode
After importing, select a node with complete settings, then choose between the system proxy and TUN. The system proxy mainly affects apps that follow system proxy settings; TUN can cover traffic differently and usually requires additional permissions. For an initial test, start with a simple configuration. Add complex routing rules after confirming the basic connection works.
Routing mode determines how requests are sent out; it doesn’t change the server protocol. After changing routing rules, reload the configuration and start a new request. Existing browser connections may continue using the previous route, so a page that’s already open isn’t a reliable test.
03 / VERIFY
Verify requests and review logs
Check that the client has started listening, then send a new browser request and use the logs to identify its route. A reachable port doesn’t mean proxy requests are working, and a latency test can’t replace an access check. First rule out incorrect node settings and system time, then check DNS, routing, and whether the app uses the proxy.
If only one app has connection problems, check that app’s network settings instead of immediately reinstalling the client. A reproducible error is more useful than “can’t connect.” When documenting it, include the error type but redact subscription URLs, credentials, and private server identifiers.
Updating the app and migrating its configuration are separate tasks. Save data you can restore before replacing the application files.
Before updating, use the client’s available export or backup feature to save subscription groups, manually added nodes, custom routing, and DNS settings. Also note the local listening port, system proxy mode, and whether TUN is enabled. A subscription URL alone may not restore manual rules, and copying the app files alone may not include your user data directory.
Exit the old client before installing so running processes don’t lock files. On the first launch after updating, check that your groups and nodes are still there, confirm the core loaded successfully, then test a proxy request. If you need to roll back, keep a copy of the pre-update configuration. Don’t let different versions take turns rewriting your only copy of the data.
Assess the package format and system requirements together. An architecture mismatch usually becomes apparent during installation or startup; missing system libraries, runtimes, or permissions can also prevent the app from launching. By contrast, expired subscriptions, server parameter mismatches, and DNS rule errors are configuration problems. Switching to a package for another architecture usually won’t help.
DOWNLOAD / QUESTIONS
Download and installation FAQs
Which Windows version should you choose: Desktop or classic WPF?
For a first installation, start with Desktop, which uses a newer cross-platform interface. The classic WPF version is a stable branch that preserves the traditional Windows workflow and may suit users who prefer familiar controls. Keep their configurations separate and back up your settings before switching. Avoid letting both versions control the system proxy at the same time.
What’s the difference between the Android arm64 and universal versions?
Most phones released since 2015 can usually use arm64, but check which app architectures your device supports. The universal version includes multiple architectures and is a good choice if you’re unsure or arm64 is reported as incompatible. It must still meet the client’s system requirements.
Does the download include nodes you can connect to?
The installer contains the client app, not node accounts or a subscription. After installing, import a subscription link, share link, or configuration that you obtained and are authorized to use. Then select a node and test the connection. Treat subscription links as sensitive information and don’t share them publicly.
What should you save before upgrading?
Use the client’s available export or backup feature to save subscription groups, manually added nodes, custom routing, and DNS settings. Note the local listening port as well. Exit the old process before installing, then check on first launch that your settings migrated successfully. Don’t delete the old configuration directory right away.
Installed successfully but can’t connect—should you download it again?
Start by checking the client logs, subscription validity, node settings, system time, and proxy or VPN permissions. Then check for local port conflicts and review routing and DNS settings. Reinstall only if the package won’t open, you chose the wrong architecture, or application files are missing.