以传输速度为第一目标的安卓 SMB2/SMB3 客户端 · SMBJ + Jetpack Compose · 为局域网 NAS 而生
自动发现共享(自研 DCERPC 枚举,fnOS/群晖/Samba/Windows 实测);多选共享批量创建连接;域账号/匿名;TCP 预探测,填错 IP 5 秒内中文报错。
目录浏览、面包屑导航、新建文件夹、重命名、删除,按类型显示图标;连接全程池化,无重复握手。
下载与上传均为多流条带并行(4~16 流、1~8MB 分块),轮转交错写入对机械盘友好,内置 48MB 内存护栏。
前台服务(dataSync)+ WiFi 低延迟锁 + CPU 唤醒锁;通知栏进度/速度/全部停止;退后台、熄屏照常满速。
小米焦点通知/超级岛适配(miui.focus.param 双轨协议),传输进度上岛;其他品牌自动忽略,零副作用。
凭据 AndroidKeyStore AES/GCM 加密存储;失败自动重试一次 + 一键重试;下载前磁盘空间预检;上传自动改名防覆盖。
| 手段 | 说明 |
|---|---|
| SMB 3.1.1 协商 | 优先协商 SMB3 大 MTU,单请求 MaxRead/MaxWrite 可达 8MB(SMB2 仅 1MB) |
| 多流条带并行 | 大文件切条带,每条带独立 SMB 句柄并行读写,靠 credits 在单 TCP 连接上流水线并发 |
| 轮转交错写入 | 各条带按块轮转推进,写入聚在 ~8MB 连续窗口整体前移——机械盘不再来回寻道,速度稳 |
| 大分块 | 请求粒度默认 1MB、可调 8MB,自动按服务器协商值截断,减少 RTT 往返 |
| 连接复用 | Connection / Session / Share 全程池化,浏览与传输无重复握手 |
| 关闭签名/加密 | 默认不做 SMB 签名与加密以换取吞吐(服务器强制时自动回退协商) |
| 零拷贝拼装 | FileChannel 定位写 + pread 并发读,多协程安全 |
| 内存护栏 | 条带缓冲合计上限 48MB,配置拉满也不堆溢出闪退 |
要求 JDK 17+、Android SDK(platform 35 / build-tools 34+)。Gradle 走阿里云镜像(settings.gradle.kts),国内无需代理。
./gradlew :app:assembleDebug # 调试包
./gradlew :app:assembleRelease # 签名 release(密钥库 smbfast.keystore 已含在仓库)
./gradlew :app:testReleaseUnitTest # 单元测试(含 fnOS 真实响应回归样本)
电脑在 dist/ 目录起 python -m http.server 8080,手机浏览器访问 http://电脑IP:8080/SmbFast-release-v20.apk 直接安装——聊天工具传 APK 常被截断,导致「解析软件包出现问题 (33)」。
| 版本 | 主要变化 |
|---|---|
| 1.0 ~ 1.8 | 基础功能、Compose 界面、多流下载、崩溃日志体系、DCERPC 共享枚举字节级攻坚(fnOS 实测) |
| 1.9.0 (v11) | 连接编辑改为全屏分区页面,视觉全面华丽化 |
| 1.10.0 (v12) | 共享多选、批量建连;整体 UI 缩小一号 |
| 1.11.0 (v13) | 前台服务保活 + WiFi/CPU 锁,修复后台传输被系统断连 |
| 1.12.0 (v14) | 上传多流条带化;修复条带句柄互相截断的 bug |
| 1.13 ~ 1.14 | HyperOS 焦点通知/超级岛适配;修复横幅轰炸与双轨协议(v15/v16) |
| 1.15.0 (v17) | TCP 预探测 + 异常链穿透翻译:填错 IP 5 秒内中文报错 |
| 1.16.0 (v18) | 编辑模式同样支持多选共享 |
| 1.17.0 (v19) | 内存护栏、自动重试、空间预检、上传防覆盖、凭据加密、通知「全部停止」 |
| 1.18.0 (v20) | 全局单层极光背景,修复切页闪烁 |
Kotlin Jetpack Compose · Material 3 SMBJ 0.15.0 BouncyCastle Coroutines Gson AndroidKeyStore