写入失败后的恢复流程
v1.9 之前的失败处理
在 v1.9 之前,EtchDroid 遇到写入失败时的行为非常原始——直接弹窗提示"写入失败",然后把 U 盘留在半写入状态。用户需要自己拔掉 U 盘、重启 EtchDroid、重新走一遍全部流程。
v1.9+ 的失败恢复机制
v1.9 rc1 的发布说明里提到一个关键改进:
"EtchDroid will now recover from most write failures and ask you to unplug and reconnect your USB drive"
新的恢复流程是:
- EtchDroid 检测到写入异常(USB 断开、设备重置、写入超时、设备返回错误等)
- 暂停写入
- 在界面上明确提示"检测到错误,请拔掉 U 盘后重新插入"
- 用户执行操作后,EtchDroid 重新枚举 USB 设备
- 重新开始写入整个镜像(EtchDroid 不做断点续写,恢复总是从头开始)
注意:恢复机制只在 EtchDroid 前台运行时生效。如果写入过程中手机重启了、或者 EtchDroid 被系统杀死了,恢复流程只能等下次手动打开 EtchDroid 重新来。
为什么不做断点续写
EtchDroid 不提供断点续写功能。原因有两个:
- 写入磁盘镜像本身就不应该续写:磁盘镜像是对整个磁盘的逐位拷贝——如果在某一个扇区中断后从中间续写,那些没被覆盖的后半部分保留了上一个镜像的残留数据,得到的盘会是混乱的、不可启动的
- 恢复代码复杂度:为了一个极少见的场景(应急救场时 U 盘写一半出错)增加断点续写的实现和测试成本,不符合 EtchDroid "只做一件事且做好"的产品定位
U 盘"变砖"后怎么办
写入中途强制中断(拔掉 U 盘、手机强制关机等)后,U 盘会处于 MBR/GPT 半写入状态——表现为:
- 电脑上提示"U 盘未格式化"或显示一个 1MB 的残缺分区
- Android 提示"USB 有问题"
- 直接重写镜像可能失败(因为 U 盘处于不确定的分区状态)
解决方法是先格式化再重写。具体步骤见本站 U 盘格式恢复指南。
一个务实建议
在应急场景下,U 盘可能是你唯一的工具。所以在写完镜像、校验通过后,先别急着拔 U 盘——等进度条完全消失、EtchDroid 提示可以安全拔出后再拔。多等 30 秒可以避免最后几个扇区还没刷完到物理闪存的情况(U 盘的内部缓存还没 flush)。