2026-05-18 11:10:52 +08:00

4.2 KiB
Raw Blame History

1. Spec And API Validation

  • 1.1 阅读现有 SmsReceive 实现,确认短信广播、收件箱兜底和诊断 UI 的当前状态
  • 1.2 查询 Android 15 前台服务、Doze/App Standby、RECEIVE_SMS hard restricted、小米后台自启动相关资料
  • 1.3 生成后台保活 OpenSpec proposal、design、tasks 和 capability specs
  • 1.4 用 npx openspec validate add-xiaomi-background-keepalive 校验规格结构
  • 1.5 后续提交或 push 前检查 diff避免引入非预期 EOF newline 变化

2. Manifest And Permission Plan

  • 2.1 增加 RECEIVE_BOOT_COMPLETED 权限
  • 2.2 增加前台服务所需权限,按当前 targetSdk 兼容处理
  • 2.3 如 targetSdk 升到 33+,补充 POST_NOTIFICATIONS 申请和诊断
  • 2.4 如使用直接请求电池优化白名单,增加 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
  • 2.5 声明 BootReceiver,覆盖 BOOT_COMPLETEDLOCKED_BOOT_COMPLETEDMY_PACKAGE_REPLACED
  • 2.6 声明 SmsKeepAliveService,避免声明 Android 15 从 boot 禁止启动的前台服务类型

3. Keepalive Service

  • 3.1 新增 SmsKeepAliveService
  • 3.2 服务启动后立即创建通知渠道和低打扰常驻通知
  • 3.3 服务在规定时间内调用 startForeground
  • 3.4 服务定期写入心跳状态,不执行耗时短信扫描
  • 3.5 服务停止或异常时写入明确诊断原因
  • 3.6 增加 UI 按钮开启/关闭常驻保活,并持久化用户选择

4. Boot And Package Restore

  • 4.1 新增 BootReceiver
  • 4.2 收到开机或包替换广播时记录事件和时间
  • 4.3 如果用户已开启保活,尝试启动 SmsKeepAliveService
  • 4.4 捕获前台服务启动限制异常并写入 KeepAliveState
  • 4.5 在 UI 展示最近开机事件和服务恢复结果

5. Xiaomi / HyperOS Setup Guide

  • 5.1 增加标准应用详情页入口
  • 5.2 增加 Android 电池优化设置入口
  • 5.3 增加可选的直接请求忽略电池优化入口
  • 5.4 增加小米后台自启动设置入口,显式组件失败时 fallback
  • 5.5 增加“我已开启自启动”人工确认状态
  • 5.6 增加“我已设置省电无限制”人工确认状态
  • 5.7 UI 明确说明人工确认项无法通过稳定公开 API 完全读取

6. SMS Receiver Delivery Diagnostics

  • 6.1 记录最近一次 system_sms_broadcast 到达时间
  • 6.2 记录最近一次 sms_inbox_observersms_inbox_manualsms_inbox_polling 命中时间
  • 6.3 当收件箱兜底发现新验证码但广播未到达时,展示“疑似短信广播未投递”
  • 6.4 在 UI 中列出 onReceive 不触发的排查清单
  • 6.5 增加 logcat 输出区分权限缺失、body 为空、parser 失败、广播未到达

7. Optional Native Experiment

  • 7.1 第一轮 Java 保活方案真机验证前,不实现 native fork/daemon
  • 7.2 如用户仍要求尝试,新增 NDK heartbeat 实验开关
  • 7.3 native heartbeat 只写本地诊断状态,不承担短信监听职责
  • 7.4 文档记录 native 子进程被系统同组清理的限制

8. Tests

  • 8.1 为 KeepAliveStateStore 增加状态读写测试
  • 8.2 为 Boot action 处理逻辑增加单元测试
  • 8.3 为设置 intent fallback 增加测试或可验证日志
  • 8.4 保持现有验证码解析测试通过
  • 8.5 不要求本轮编译;代码完成后再按用户要求通知

9. Xiaomi 12S / HyperOS 3 Device Validation

  • 9.1 手动开启小米自启动
  • 9.2 手动设置省电策略为无限制
  • 9.3 开启常驻通知,后台 30 分钟后发送验证码短信
  • 9.4 锁屏 30 分钟后发送验证码短信
  • 9.5 重启手机,确认保活服务是否自动恢复
  • 9.6 重启后未打开 app 直接发送第一条短信,记录广播是否到达
  • 9.7 手动 force-stop 后发送短信,确认不承诺接收,并记录诊断表现
  • 9.8 如 onReceive 不到但收件箱有短信,记录 HyperOS 设置、权限状态和 logcat

10. Delivery Criteria

  • 10.1 OpenSpec validate 通过
  • 10.2 相关上下文逻辑分析通过
  • 10.3 相关测试通过
  • 10.4 代码实现完成后通知用户,不强制编译