Android 13 打开镜像崩溃的修复
现象
在 Android 13 设备上,点击 EtchDroid 的"选择镜像"按钮,刚弹出文件选择器选完 ISO 文件回来,EtchDroid 就闪退了。或者甚至在文件选择器里浏览到某个目录就直接崩溃。
根因
这个问题在 EtchDroid v2.0 和更早版本上有多个报告。根因有两层:
第一层:Android 13 的 Storage Access Framework(SAF)行为变化
Android 13 对 SAF(也就是 Document Picker 背后的文件访问框架)做了比较大的改动,涉及 URI 权限授予、持久化、和应用沙箱内文件访问的交互。EtchDroid 旧版本对 SAF 的某些边界情况处理不当,导致在访问特定目录或特定文件 URI 时触发空指针异常或越界。
第二层:某些 Android 13 机型的 USB 权限弹窗卡死
部分国产 ROM(OneUI 5、MIUI 14、ColorOS 13 等)在 Android 13 上对 USB 权限请求的处理有定制,导致 EtchDroid 的 USB 设备枚举流程卡住或触发异常。
解决方案
方案一:升级到 v2.1(最推荐)
EtchDroid v2.1 的发布说明里明确列出了一条修复:
"Fixed a crash when opening images on some Android 13 devices"
这条修复就是针对 SAF 崩溃问题的。如果你还在用 v2.0 或更早,直接升级到 v2.1 就好。
方案二:不升级,改用文件管理器绕过 SAF
如果因为某些原因暂时不能升级(比如在等某个特定版本的其他功能),可以用一个绕过技巧:
- 用第三方文件管理器(MT 文件管理器、Solid Explorer 等)先把 ISO 文件复制到手机内部存储的
Download目录 - 在文件管理器里直接点击这个 ISO 文件
- 系统应该会弹出"用 EtchDroid 打开"的选项 → 点击
- EtchDroid 会收到文件 URI,但这次 URI 是文件管理器直接提供的、已经有正确权限的 URI
方案三:授予"所有文件访问"权限
Android 11+ 的 Scoped Storage 可能导致 EtchDroid 对某些路径的文件访问受限。尝试:
- 设置 → 应用管理 → EtchDroid → 权限
- 找到 "所有文件访问" 或 "文件和媒体"
- 选择 "允许"
方案四:用 F-Droid 版本
F-Droid 版本虽然在功能上与 Play/GitHub 版本一致,但 F-Droid 的构建过程可能会在某些权限边界处理上略有不同——有极少数用户报告在 Play 版本崩溃的场景下,F-Droid 版本不崩溃。这不是 EtchDroid 开发者的官方解释,但值得一试。
Android 13 以上呢
v2.1 也修复了 Android 14 和 Android 15 的兼容性问题。最新版本应该覆盖了 Android 5.0 ~ Android 15 的所有版本。