拍照草稿恢复与凭据存放
本次修复保存未提交的当单草稿,在拍照、会话失效或 Android 回收进程后恢复同一账户的表单及照片。尚未生成正式修复安装包:原正式签名凭据缺失,不能用新密钥替代,否则无法覆盖安装现有正式版。
已定位的行为
独立 API 35 模拟器中,将已填写的当单保持 150 秒,确认实际发生两分钟授权校验后拍照,正常授权没有造成退出。另通过本机测试代理模拟拍照返回时会话失效,复现直接出现登录页、进程未崩溃、草稿被删除的行为。这是一个与用户描述相符的丢数据路径,尚不能断定它就是实体手机问题的唯一原因。
修改后在离开表单、进入相机和授权检查前保存草稿;相机结果先归入原账户草稿,再清理临时照片。草稿持续保留到成功保存或明确返回放弃。重新登录同一账户或冷启动时恢复;账户变化、锁屏和正在拍摄时不向错误的页面推送表单。授权校验仍然有效。
存放规则
| 内容 | 默认目录 |
|---|---|
| 原 Android 签名密钥及两个密码文件 | %LOCALAPPDATA%\JiDangJia\Signing\ |
| 服务器数据库、认证/支付加密密钥和媒体 | %LOCALAPPDATA%\JiDangJia\Server\ |
| 虚构测试账户、测试密钥及隔离数据库 | %LOCALAPPDATA%\JiDangJia\TestData\ |
| 安装包、压缩包、构建输出和验收报告 | 项目 artifacts/ |
签名脚本只读原凭据,拒绝项目内、Artifacts 下或经过目录联接的签名路径,并核对既有正式证书指纹;缺少凭据或证书不符时停止,不生成替代密钥。源码及服务器打包排除密钥和密码文件。
服务端在创建数据库和加密密钥前拒绝 Artifacts 数据目录,也拒绝支付宝密钥来自 Artifacts。默认启动脚本发现旧程序旁已有账户库时要求完整迁移并显式指定 -DataDirectory,避免悄悄创建空库。迁移须先停止服务,备份并保留整个目录,尤其不能遗漏 private-vault.key、purchase-vault.key 和媒体。
本次检索了已挂载磁盘的回收站元数据、用户目录及其他磁盘上的签名文件/备份压缩包、Git 历史和系统卷影副本,未找到匹配的原签名私钥。没有改动其他项目的密钥,也没有创建新的正式签名身份。
验证
使用独立 codex_camera_delay_api35 AVD、emulator-5556、单独测试包和本机虚构账户;未操作用户原有的 emulator-5554 或正式账户。
26 项修复后原生检查覆盖慢操作、会话失效、同账户重新登录、冷启动、相机期间真实进程回收、照片只添加一次、相机取消、保存入库和返回放弃草稿。保存后直接检查隔离 SQLite 库中的本金、利率和合同照片,且恢复文件已清理。原有版本还验证过 Android 活动重建路径。
另通过 445 项业务/备份/认证检查(含 7 项存放边界检查)、73 项安全/禁言/更新检查、60 项实际登录客户端检查、27 项实际购买客户端检查及 41 项发布清理检查。支付仅使用虚构签名和回调,没有实际付款。
原生证据为 artifacts/verification/camera-delay-*-fixed.json;camera-delay-expiry-before.json 与 camera-delay-expiry-after.json 对照保留了修复前后的草稿行为。测试包使用独立包名和测试签名,服务器地址是模拟器本机测试地址,不能作为正式手机修复包交付。