跨网络互联技术(①Singbox Core-Flutter-Android)
直接嵌入 sing-box 核心(通过 FFI)
把 sing-box 编译成原生库(比如 .so 或 .dylib),然后用 Flutter 的 FFI(外部函数接口)调用它
SagerNet/sing-box: The universal proxy platform
Source code (zip) 或 Source code (tar.gz)
这是 sing-box 的完整源码,适合你在 Windows 上用 Go 和 Android NDK 来交叉编译成 .so 文件。
为什么需要 Android NDK?
因为你要编译的是 给 Android 用的 .so 动态链接库,而 Android 使用的是 ARM 架构(比如 arm64-v8a),而你的 Windows 是 x86 架构。这就涉及到一个关键概念:
🧬 交叉编译(Cross Compilation)
在一个平台(比如 Windows)上编译出另一个平台(比如 Android ARM)能运行的程序。
🧰 NDK 的作用
🧭 查看 NDK 路径的方法(适用于 Android Studio)
go run ./cmd/internal/build_libbox -h
打开 Android Studio
点击顶部菜单栏的 File → Project Structure
在左侧选择 SDK Location
建议你用 25 或以上的版本,比如:
C:\Users\xxx\AppData\Local\Android\sdk\ndk\25.1.8937393
这个版本兼容性好,适合用来编译 Android 21+ 的 .so 文件。