原生安卓稳如老狗,一上澎湃 OS 全是坑
鸿枢在原生 Android 系统上跑得稳稳当当,可等我把客户端装到家里那台刷了小米澎湃 OS(HyperOS)的备用机上,立马来了一记下马威。
第一个坑来自 Android 15+ 的新规:系统对 dataSync 类型的前台服务加了硬性紧箍咒,24 小时内最多只准跑 6 小时,时间一到直接强行杀后台。第二个坑更要命——国产 ROM 为了所谓的防诈骗安全保护,遇到带验证码的短信时会直接拦截并吞掉系统的 SMS_RECEIVED 广播!系统短信 App 自己能弹出通知栏提醒,但第三方应用连半点广播信号都收不到。
remoteMessaging 保活与小米私有权限诊断
2026 年 10 月 13 日至 14 日(v0.1.0-alpha.15 ~ alpha.18,Commit 017a1a5、d0af63c),我先动手拆解保活难题。
我把常驻前台服务的类型从受限的 dataSync 切换到了专为跨设备消息传输设计的 remoteMessaging,彻底绕开了 24 小时内只准运行 6 小时的限制,同时顺手支持了把服务从系统“最近任务卡片”里隐藏,免得平时清后台手滑划掉。
接着专门针对小米设备写了一套私有权限直达诊断页,引导一键打开“自启动”和极其隐蔽的“通知类短信”读取权限,并用 NotificationListenerService 监听系统短信通知来给被吞掉的广播兜底。
P0–P4 统一采集链:把通知当“信号”而非“正文”
直接抓通知栏内容很快又引出了新毛病:当手机连续收到几条未读短信时,系统通知栏会把它们折叠合并成一句 [3条] 某某发来消息。如果无脑把通知文字塞进数据库,收件箱里就会多出一堆莫名其妙的汇总垃圾,还会跟稍后读到的收件箱记录重复入库。
到了 10 月 18 日至 19 日(v0.2.0-alpha.9,PR #68 ~ #73),我彻底重写了 P0–P4 统一采集链:
- 折叠汇总拦截:前置分类器一旦识别出
[N条]这类聚合通知,当场拦截丢弃,绝不入库。 - 通知信号暂缓核对:不再把通知文本直接当成最终短信,而是把它当成“有新短信到了”的触发信号。遇到普通号码通知暂缓 30 秒,遇到显示为联系人姓名的通知暂缓 150 秒,耐心等系统短信 App 把真实数据写进系统收件箱数据库后,再去查询配对。
这套组合拳下来,澎湃 OS 吞验证码广播和通知重复入库的两大顽疾终于被治得服服帖帖。