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
| Platform | Supported modes | Minimum / validated version | Native requirement | Main limitations |
|---|---|---|---|---|
| Android | VPN, proxy-only | minSdk 23, target SDK 35 in the Android package | Xray runtime AAR from Maven Central; Gradle packaging.jniLibs.useLegacyPackaging = true when extracted native executables are required | Main AAR includes device and emulator ABIs. |
| iOS | VPN, proxy-only | iOS 15.0+ | Network Extension, Packet Tunnel target, App Group, signed real device for tunnel validation | Simulator is not a reliable VPN/tunnel test target. |
| macOS | VPN, proxy-only | macOS 13.0+ for the validated setup | Packet Tunnel extension, App Group, Swift Package products, setup command | Packet Tunnel routing and DNS changes must follow the architecture note. |
| Windows | VPN/tunnel, proxy-only | Recent Flutter Windows toolchain | Local xray.exe available to the app | Tunnel/system routing may require elevated permissions; the plugin does not download Xray for you. |
| Web | Not supported | N/A | N/A | No 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.