Skip to content

Transfer Engine

Yichenlemon edited this page Aug 28, 2026 · 1 revision

🛰️ 传输引擎

传输是 FastTransfer 的立身之本,支持三种通道,各有绝活。

三通道总览

通道 适用场景 特点
🏠 本地 电脑内部整理 最快,直接用 IO 流
📱 ADB 手机 / Android 设备 走 USB,大文件夹用 tar 流式打包
💾 WPD (MTP) U盘 / 移动硬盘 / 相机 走系统协议,兼容性最好

📱 ADB — 为什么快?

普通工具会一个文件一个文件地传,文件多时来回请求几万个包,巨慢。

FastTransfer 的做法:

  • 大文件夹 / 小碎文件 → 用 tar 流式打包成单一数据流传输,一次搞定,避免逐文件往返。
  • 多设备并发 → 每个设备用独立 adb -s <序列号> 进程,互不抢 USB 带宽。

⏱️ 传输体验

  • 📊 实时进度:显示已传多少、总量多少、速度多少
  • ⏸️ 可暂停 / 可继续:点一下暂停,再点恢复
  • 🔌 断线处理:设备中途断开会提示,不假死
  • 📝 错误日志:失败的条目全部留痕,供排查

🧠 实现 TIP(给开发者)

  • TransferEngine 统一调度,三种 Provider(Local/Adb/Wpd)各自实现细节。
  • 所有 WPD COM 调用必须在专用 STA 线程执行,否则会蓝屏级崩溃(0xC0000005)。
  • 详情见源码 Providers/ 目录。

Clone this wiki locally