axevpn_flutter 3.0.3
axevpn_flutter: ^3.0.3 copied to clipboard
Multi-protocol VPN plugin for Flutter supporting OpenVPN, WireGuard, V2Ray/Xray (VLESS, VMess, Trojan, Shadowsocks) and OpenConnect on Android and iOS.
3.0.3 #
- Fix: 3.0.2's
implementation(files("libs/libv2ray.aar"))broke the release build entirely for every consuming app — AGP's:axevpn_flutter:bundleReleaseAartask fails with "Direct local .aar file dependencies are not supported when building an AAR" because AGP always builds this library module's own.aaroutput variant, even when it's only ever consumed as a source subproject. Reverted this module's own dependency tocompileOnly. - Fix (the real, build-safe version of the 3.0.2 fix): libv2ray.aar is now auto-attached to the consuming app module via a
gradle.projectsEvaluatedhook in this plugin'sandroid/build.gradlethat injectsimplementation files('libs/libv2ray.aar')into everycom.android.applicationmodule in the build (normally just:app). Buyers still don't need to touch their ownbuild.gradle— the dependency now reaches the runtime classpath without requiringimplementation/apion the library module itself, which is what broke the build in 3.0.2.
3.0.2 #
- Fix: V2Ray/VLESS/VMess
NoClassDefFoundError: Llibv2ray/V2RayVPNServiceSupportsSet;for every buyer – the real bug was in this plugin's ownandroid/build.gradle, which declaredlibv2ray.aarascompileOnly. That excludes it from the runtime classpath entirely, so any white-label app that didn't also manually add the same dependency in their ownapp/build.gradleshipped without the V2Ray engine and crashed on connect. Changed toimplementation(files("libs/libv2ray.aar")), which Gradle now propagates to every consuming app automatically — no buyer-side build.gradle edits required. (ThecompileOnly-requires-app-side-fix workaround from 3.0.1 is removed; it's no longer needed.) - Fix: V2Ray engine init failure now reports a clean error instead of crashing the app –
AxeV2RayVpnService.onCreate()wrapsLibv2rayinitialization in aThrowablecatch (catchingNoClassDefFoundError/UnsatisfiedLinkError, which areErrors, notExceptions);connect()now rejects with a readable stage/error message instead of taking down the whole process if the engine can't load. - Fix: white-label notification branding – the WireGuard notification (and the V2Ray/OpenConnect notifications) no longer hardcode "AxeVPN" anywhere. Added
setNotificationConfig({appName, connectedTitle, connectedSubtitle, channelName, channelDescription})on both theOpenVPNandWireGuardDart engines (shared across all four protocols natively). Any field left unset now falls back to the host app's own label (android:label/strings.xmlapp_nameon Android,CFBundleDisplayName/CFBundleNameon iOS) instead of a literal brand name.
3.0.1 #
- Fix: WireGuard foreground-service crash (Android 12-15) –
com.wireguard.android.backend.GoBackend$VpnService(the service Envato'sForegroundServiceDidNotStartInTimeExceptionreport named) ships in the upstreamtunnelAAR with noforegroundServiceTypeat all; declared it explicitly withspecialUsesostartForeground()no longer throwsMissingForegroundServiceTypeExceptionon API 34+. - Fix: removed a redundant, non-functional
AxeWireGuardVpnServicestart that racedGoBackend's ownVpnService.Builder().establish()call for the same tunnel, which was destabilizing the real WireGuard connection. - Fix: corrected VPN foreground service type for OpenVPN, V2Ray, and WireGuard services from
connectedDevice/systemExemptedtospecialUsewith thePROPERTY_SPECIAL_USE_FGS_SUBTYPE=vpnproperty.systemExemptedrequires asignature|privilegedpermission a third-party app can never hold, andconnectedDeviceis for companion/wearable links, not VPN — both were rejected by Play policy review and/or crashed on Android 14+. - Fix: V2Ray
libv2ray.aarnot packaged at runtime – the AAR iscompileOnlyin this plugin (AGP rejects bundling an AAR inside another AAR); consuming apps must addimplementation(files("libs/libv2ray.aar"))themselves. Documented this requirement and applied it in the bundled example/host app, fixingClassNotFoundException/UnsatisfiedLinkErroron V2Ray connect.
2.0.0 #
- New: WireGuard protocol support – full Android and iOS integration via native WireGuard-Go and WireGuardKit
- Android 15+ 16 KB page-size compatibility – NDK 27,
enable16KPageSize=true, verified on API 36 device - Dual-protocol API – separate
OpenVPNandWireGuardengine classes with identical lifecycle (initialize→connect→disconnect) - New
WireGuardStatusmodel – duration, byteIn, byteOut, lastPacketReceive - New
WGStageenum – preparing, connecting, connected, disconnecting, disconnected, denied, error - Unified plugin class –
AxeVPNFlutterPluginhandles both OpenVPN and WireGuard on Android - iOS 16.0+ – WireGuardKit integration via Network Extension
- Upgraded compileSdk to 36 and minSdk to 24
- Updated Gradle wrapper and NDK to latest LTS versions
- Improved channel naming to
com.axevpn.flutter.*namespace - Added
isConnected()helper toOpenVPNengine - Updated dependencies: Flutter ≥ 3.10, Dart ≥ 3.0
- Comprehensive API documentation on all public classes and methods
1.3.4 #
- Fix notification issue for newest SDK
1.3.3 #
- Solving namespace for android build
1.3.2 #
- Fix datetime that being nulled (VPN Status)
1.3.1 #
- Upgrade library gradles
- Update native for Permission channel name ($APPNAME VPN Background & $APPNAME VPN Stats)
- Clearify notifications on readme.md
1.3.0 #
- Adept for SDK 34
- Solving #105, #29, #99
- Update examples to support flutter latest flutter (3.22.2 tested)
1.2.2 #
- Update openvpnlib
1.2.1 #
- Update openvpnlib
1.2.0+1 #
- Update docs
1.2.0 #
- Fix iOS issues (byteIn and byteOut not updated) #6
- Add lastStatus and lastStage listener while initialize
- Add packetsIn, packetsOut and connectedOn status
- Update licenses to GPL3 (Before it was MIT)
1.1.3 #
- Add permission request for android
requestPermissionAndroid()#5 - Continue the connection after user grant vpn connection #8
1.1.2 #
- Fix exported errors on SDK 31
- PendingIntent errors fixes
1.1.1+1 #
- Update readme, more detail about iOS setup
1.1.1 #
- Fix iOS by Adding PacketTunnelProvider
- More detail at instructions
- Fix VPNStatus not updated after disconnected
1.1.0 #
- Add 'raw' on onVpnStageChanged
- Add details on doc
- Fix duration still going on failed to connect
1.0.1+2 #
- Solving scores
1.0.1+1 #
- iOS Support
- Android Support