Files
TPSchedule/docs/android-mvp-validation.md
T

4.2 KiB
Raw Blame History

Android 首版验证记录

当前浏览器诊断细化版为0.7.2+20,验证见 0.7.2记录。本科接入记录见 0.7.0记录。下文为首版历史记录。

日期:2026-10-13。测试环境:Flutter 3.47.7 / Dart 3.13.5 / JDK 17;Android 16 API 36,Pixel 7 模拟器,1080×2400。首版版本 0.1.0+1,包 ID com.example.hepan_everyday,最低 Android 7.0(API 24)。

已验证

  • flutter analyze:No issues found。
  • flutter test:58 项通过,包括 11 节时间、上海时区和非周一开始日、不连续周次、导入拒绝保留原课表、存储损坏恢复、示例隔离、通知去重和权限降级、日历中断恢复与归属检查、200% 字体和重叠课程、通知点击详情。
  • integration_test/app_flow_test.dart 在 Android 模拟器通过:两页导航、单色设置、实际日期选择器和学期周数保存、导入预览取消与确认、示例不改真实保存文件、错误导入保持数据、重开恢复。
  • integration_test/calendar_bridge_test.dart 在专用 Hepan_Integration_Test 日历通过:创建、再次同步更新同一 ID、映射丢失后找回、错误 key 无法删除、删除自有事件。设备实际查询表明 Unrelated_fixture 事件保留,CalendarContract.Reminders 无记录。
  • 首次真实 APK 构建、安装、启动成功。初次编译下载依赖用时约 695 秒,后续构建约 40 秒。
  • 短时通知使用独立测试入口 tool/reminder_probe.dart,不写入用户课表文件。应用退到后台后系统收到通知,实际标题及内容包含测试课程、教师和教室;点击通知打开对应课程详情。

补充设备结果

  • 模拟器重启后:未重新打开 APP,系统仍送出已安排的测试通知;启动正式 APP 后,空课表协调取消残留自有通知。
  • 已重建并安装 lib/main.dart 正式入口 APK,核实包名、0.1.0+1、API 24/36 和三种 Android 架构。示例课表、我的、周日、末节、设置和 200% 字体已有设备截图;验证 APK 不包含测试入口。
  • 已完成一次独立代码审查:无 Critical/Minor,三项 Important 均用回归测试修复。58 项测试全通过,未进行重复审查。

仍需本人手机验证

  • 本人学校登录、验证码、二次验证、真实研究生课表解析。目前解析器明确提示待联调,保护已有课表;见 school-integration-status.md。
  • 真实手机的厂商省电、锁屏通知、长时间后台与真机重启行为;模拟器结果不能代替真机。
  • 不同手机日历应用与云账户对自定义归属标记的同步行为。
  • iOS 尚未配置及验证。

本轮修复和设备异常

日历设备测试复现 Calendar Provider 不允许“事件单条 URI + selection”操作;改为集合 URI 加事件 ID、应用包和实例标记条件,原设备测试随后通过。首次设备界面测试时模拟器连接中断;重新启动并使用软件图形模式后同项测试通过。首次权限检查未通过来自测试框架重装应用;本轮单独授权后完成系统日历测试。

通知初始化暂时失败后可重试,日历服务异常在设置中解释并保持未启用。首次同步中断、尚无保存 ID 时,通过选定日历的专属标记恢复清理;清理失败持久保存待重试状态。

补充:系统文件选择器已从 Downloads 选择随附 JSON,正常显示 3 条课程预览和示例来源;飞行模式下正式 APP 重开后页面正常,示例体验未写成真实课程。

审查修复:设置改为按字段在最新状态上修改;首次日历写入前保存未完成状态,清理成功才允许更换目标;没有可用备份时提供确认恢复入口,真实文件测试验证损坏主文件和备份均先归档。 最终 APK:229736269 字节,SHA-256 FC61132FB0CD2881A300BB1A2D7ABB9994EDF54E369C65E1FB9E285FB42AA114。修复后重新构建、安装、启动,原生页面同时存在课表和我的两个标签入口;受影响 app_flow 设备测试重新通过。 本地合并:已按用户选择将源码合并回桌面项目 master,合并后重新运行 58 项测试全部通过,flutter analyze 无问题;临时开发目录已归档,开发分支已清理。