Compatibility

June 22, 2026 ยท View on GitHub

This page lists the expected platform shape for flutter_vless.

Package Scope

flutter_vless is a federated Flutter plugin for Xray/V2Ray-compatible client flows:

  • VLESS
  • VMESS
  • Trojan
  • Shadowsocks
  • SOCKS
  • WireGuard import from Clash YAML and sing-box JSON
  • Hysteria2 import from share links, Clash YAML, and sing-box JSON
  • raw Xray JSON
  • supported Clash YAML and sing-box import paths

Runtime support for newer protocols still depends on the packaged or supplied Xray artifact on each platform. Validate generated configs against the target artifact before release.

Platform Matrix

PlatformSupported modesMinimum / validated versionNative requirementMain limitations
AndroidVPN, proxy-onlyminSdk 23, target SDK 35 in the Android packageXray runtime AAR from Maven Central; Gradle packaging.jniLibs.useLegacyPackaging = true when extracted native executables are requiredMain AAR includes device and emulator ABIs.
iOSVPN, proxy-onlyiOS 15.0+Network Extension, Packet Tunnel target, App Group, signed real device for tunnel validationSimulator is not a reliable VPN/tunnel test target.
macOSVPN, proxy-onlymacOS 13.0+ for the validated setupPacket Tunnel extension, App Group, Swift Package products, setup commandPacket Tunnel routing and DNS changes must follow the architecture note.
WindowsVPN/tunnel, proxy-onlyRecent Flutter Windows toolchainLocal xray.exe available to the appTunnel/system routing may require elevated permissions; the plugin does not download Xray for you.
WebNot supportedN/AN/ANo web implementation is registered.

Android

The Android implementation includes 16KB page size support for modern Android builds and bundles native Xray libraries for device ABIs.

The Android runtime AAR includes armeabi-v7a, arm64-v8a, x86, and x86_64.

Use the Android Gradle plugin packaging DSL when your app needs extracted native executables:

android {
    packaging {
        jniLibs {
            useLegacyPackaging = true
        }
    }
}

Apple Platforms

iOS and macOS use Apple's Network Extension model for tunnel mode.

Required for tunnel mode:

  • Packet Tunnel extension target
  • Network Extension capability
  • App Group shared between the app and extension
  • matching signing team/profile setup

Pass the base app bundle id to Dart:

await flutterVless.initializeVless(
  providerBundleIdentifier: 'com.example.myapp',
  groupIdentifier: 'group.com.example.myapp',
);

The plugin appends the Packet Tunnel extension suffix internally.

Windows Xray Lookup

Windows needs a local xray.exe. Common lookup locations include:

windows/xray/xray.exe
xray/xray.exe
xray.exe
data/flutter_assets/xray/xray.exe
%APPDATA%/flutter_vless/xray.exe

The bundled example expects:

example/windows/xray/xray.exe

Known Product Boundaries

  • No web implementation.
  • No automatic Windows Xray download.
  • No guarantee that every imported server config works on every platform.
  • No automatic conversion for protocols that Xray cannot run.
  • VPN/tunnel mode depends on operating-system permissions and native project setup, not only Dart code.