# 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