Files
SMB_Android/README.md
T
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

56 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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+)。
```bash
./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