搜索文档

输入关键词查找当前使用指南和维护文档。

Skip to content
中州鹅 · 历史记录与验证证据文档目录

结论、提交、测试结果与安装包均对应文中记录时点。日常操作以现行维护手册为准。

整包恢复跨进程日志 · 2026-10-27 ​

代码:bb9d2a78,对应旧报告 P1-8。

本批改动 ​

恢复计划确认后先保存并停止引擎,由私有请求把已校验的备份交给独立 :restore 进程。该进程不初始化偏好、Room、主题或 native,引导旧主进程退出后才复制和替换目录,避免旧缓存和后台任务重新覆盖导入结果。

noBackup 中的日志先登记每个目标与 UUID,再建立同文件系统暂存。所有目录替换成功才记录全局 COMMITTED;此前中断统一回滚,此后中断保留新数据并继续清理。每个目录都有所有权标记,恢复进度先落盘再移除证据,可反复执行。冲突保留原目录和外来数据,恢复页可重试或保存仅含路径/错误的诊断。

主进程在 attachBaseContext、偏好与 provider 初始化前持同一文件锁恢复。可选外置卷未连接时保留待处理状态,方案加载、切换、改名、删除与新建也检查相关路径。偏好 .xml.bak 按 Android 语义优先恢复并校验完整 XML;替换已导入偏好时移除旧 .bak。只删除被替换数据库的旧 sidecar,未被备份替换的数据库保留原 WAL。

验证 ​

  • 完整回归:1197 项应用 JVM、6 项构建逻辑,失败、错误与跳过均为 0;新增 41 项执行。日志。
  • 62 项恢复相关执行覆盖 API23/28 框架路径、原目录保留、四个替换窗口、全局提交、存储卷离线/返回、外来目录冲突、重复恢复、清理中断、符号链接、畸形/超限日志、偏好备份与数据库 WAL。
  • 主机操作系统实际启动六个独立 JVM 子进程,在暂存、四个重命名和全局提交后强制结束,父进程重新读取磁盘日志并检查全组目录恢复。测试没有执行被杀进程的 finally/close。
  • 本提交 CI 全绿,1197 项应用测试及 ARM64 Release 均成功;下载该批 APK。下载 ZIP 摘要与 GitHub 元数据一致,APK检查仅有ARM64直连Rime及C++库,16KiB对齐。

仍需设备补验的边界 ​

上面的六次强制结束是主机进程实验,不能冒充 Android 真机进程或物理断电。本批初始验收边界为Android页面交接、主进程杀退与真实外置卷拔插。后续209cca0e已完成Android交接及偏好/WAL读回,真实卷拔插仍待验收。物理断电可能涉及硬件缓存和多个卷的目录元数据,当前实现未声称能组成硬件原子事务。

原表 P1-8 的代码路径已接入;P1-10 后续完成小词表模拟器正常关机验证。一次主题返回闪退仍按用户指示等待下次有效崩溃栈。

后续补充发现:中断后大量残留目录的递归清理仍在启动线程,可能拖慢再次打开。下一批正在把目录恢复与后台清理分开,并避免启动等待仍在执行的恢复锁;这些后续改动尚未计入 bb9d2a78 安装包与1197项统计。

协议与恢复说明 · 来源与验证范围