cbb 8c1383fe4f SmbFast v20 (1.18.0):SMB 高速传输安卓客户端
- SMB 3.1.1 多流条带传输(下载/上传),轮转交错写入、48MB 内存护栏
- 前台服务保活 + WiFi/CPU 锁,后台传输不断连
- HyperOS 焦点通知/超级岛适配(miui.focus.param 双轨协议)
- 全屏连接编辑器:共享多选、批量建连;错误中文提示 + TCP 预探测
- 凭据 AndroidKeyStore 加密存储;失败自动/手动重试;空间预检
- 全局单层极光背景(修复切页闪烁)+ 单元测试
2026-10-11 20:59:05 +08:00

SMB 极速 (SmbFast)

一个以传输速度为第一目标的安卓 SMB 客户端,基于 SMB2/SMB3 协议(SMBJ 库)+ Jetpack Compose。

功能

  • 连接管理:添加/编辑/删除 NAS、Windows 共享连接,支持域账号、匿名登录,连接前可测试
  • 文件浏览:共享目录浏览(面包屑导航)、新建文件夹、重命名、删除、按类型显示图标
  • 高速下载:多流分块并行下载(默认 4 流、1MB 分块,可调至 16 流 / 8MB)
  • 上传:系统文件选择器上传(顺序流);本地文件多流并行上传
  • 传输管理:实时进度、实时速度(EMA 平滑)、取消、完成后直接打开
  • 设置:并行流数、分块大小、下载目录

为什么快

手段 说明
SMB 3.1.1 协商 优先协商 SMB3(大 MTU),单请求 MaxRead/MaxWrite 可达 8MB(SMB2 仅 1MB)
多流并行 大文件切成条带,每条带独立打开 SMB 句柄并行读取,靠 credits 在单连接上流水线并发
大分块 减少 RTT 往返次数,请求粒度默认 1MB、可调 8MB(自动按服务器协商值截断)
连接复用 Connection/Session/Share 全程池化,浏览无重复握手开销
关闭签名/加密 默认不做 SMB 签名与加密以换取吞吐(服务器强制时自动回退协商)
本地零拷贝拼装 FileChannel 定位写 + 预分配,各流直接写入自己的偏移

实测建议:手机连 5GHz Wi-Fi,NAS 开 SMB3(Windows 8+/Server 2012+ 默认开启)。千兆内网理论 110MB/s 左右,多流可基本跑满;百兆/2.5G 环境收益更明显(单流顺序读通常只能到 30~60MB/s)。

构建

要求:JDK 17+,Android SDK(platform 35、build-tools 34+)。

./gradlew :app:assembleDebug    # 产物: app/build/outputs/apk/debug/app-debug.apk
./gradlew :app:assembleRelease  # 需要签名配置

local.properties 中配置 sdk.dir。Gradle 仓库默认走阿里云镜像(settings.gradle.kts),国内环境无需代理。

使用

  1. 首页点 + 添加连接:填服务器 IP(如 192.168.1.10)、共享名称(如 share)、用户名密码(或勾选匿名)
  2. 点「测试」确认可用,然后「连接」
  3. 浏览目录,点文件右侧菜单选择 下载 / 下载并打开
  4. 「传输」页查看实时速度;设置页可调并行流数与分块大小

下载保存位置:优先 Download/SMBFast/,受限存储设备回退到应用私有目录(设置页可见实际路径)。

已知限制

  • SMBJ 不支持 SMB3 Multichannel(多网卡聚合),多流并行在同一 TCP 连接上实现
  • 密码明文保存在应用私有 SharedPreferences(未加密)
  • 暂不支持 SMB over QUIC / 直连 TLS,未做流媒体边下边播

技术栈

Kotlin · Jetpack Compose (Material 3) · SMBJ 0.15.0 (SMB2/SMB3) · BouncyCastle · Gson · Coroutines

S
Description
实现安卓上的SMB连接
Readme
262 KiB
Languages
Kotlin 100%