59 lines
2.8 KiB
Markdown
59 lines
2.8 KiB
Markdown
# Upstream/API research snapshot
|
|
|
|
Checked 2026-09-23.
|
|
|
|
## Flet
|
|
|
|
Current Flet publishing docs describe a generated Flutter shell and support
|
|
`[tool.flet.app] path/module`, local developer packages and Flutter user extensions.
|
|
The bridge uses a Flet `Service` control and a Dart `FletService`, then a standard
|
|
Flutter `MethodChannel` for the Android plugin. It is intentionally not a Python
|
|
subprocess bridge.
|
|
|
|
## Android
|
|
|
|
Current Android docs require `VpnService.prepare()`, `protect()` for upstream sockets,
|
|
`Builder.establish()`, and a foreground service on API 26+. Android 14+ foreground
|
|
services require a declared type; this project uses the documented `specialUse` type and
|
|
an explanatory property. Android has one active VPN service per user/profile.
|
|
|
|
`Builder.addDisallowedApplication()` is valid for `DIRECT`, but it makes traffic bypass
|
|
the VPN and therefore cannot implement `VOID`. `VOID` needs a UID-aware native packet
|
|
path and a fail-closed drop policy; the Python model exists now, while enforcement is a
|
|
device-tested native milestone.
|
|
|
|
`LocalOnlyHotspot` is the public API for an app-created local network. Android 13+
|
|
requires `NEARBY_WIFI_DEVICES`; older targets use location permission. The reservation
|
|
returns SSID/password but the interface address must be discovered at runtime. The
|
|
implementation does not assume a fixed `192.168.43.1` address and does not enable
|
|
system tethering.
|
|
|
|
## FreeTurn
|
|
|
|
The current `samosvalishe/free-turn-proxy` mobile README documents the gomobile API:
|
|
`Start`, `StartTunnel`, `StartDirectTunnel`, `Restart`, `Stop`, `GetState`,
|
|
`TunnelStats`, `ParseTunnelConfig`, `SetProtect`, `SetEventSink`, `ValidateConfig` and
|
|
`OnCaptcha`. The Android AAR is built with the upstream `task build:android` target.
|
|
The Android reference app is GPL-3.0 and is used only as lifecycle/API evidence.
|
|
|
|
## SignBox / sing-box-lx
|
|
|
|
The selected fork is `Leadaxe/sing-box-lx`, pinned to `v1.14.1-lx.8`. Its release AAR
|
|
is verified against upstream `SHA256SUMS`; it exposes `CommandServer`, `CommandClient`,
|
|
`PlatformInterface`, VLESS and AmneziaWG 3.x features. LxBox confirms Android lifecycle
|
|
uses `CommandServer` and manages the live core through an in-process `CommandClient`,
|
|
without a public management port.
|
|
|
|
The fork registers `tun`, `mixed`, `socks`, and `http` inbounds. Because this UI exposes
|
|
separate ports, the client emits separate SOCKS and HTTP inbounds instead of forcing
|
|
both protocols onto one mixed port.
|
|
|
|
FreeTurn and libbox AARs ship different `go.Seq`/`go.Universe` implementations. Android
|
|
rejects the duplicate classes, and sharing one version across independently built JNI
|
|
libraries is unsafe. The libbox-first APK excludes FreeTurn until namespace isolation
|
|
or another proven isolation design is implemented.
|
|
|
|
## Removed scope
|
|
|
|
iOS and NetworkExtension are not implemented. macOS is omitted from the first build;
|
|
desktop target is Linux/Windows proxy-only.
|