搭载Firebase通知的侧载Android应用遭Play Protect强制停止排查
问题描述
我有一款已签名的私有侧载Android应用,核心功能是推送Firebase通知,仅附带一个PIN码注册页面。多数时候运行正常,但每日固定时间会被强制停止,导致Firebase通知无法送达,且多台不同设备均出现该问题。
日志分析
抓取到的logcat日志显示强制停止的触发规律:
07-18 09:00:07.862 1398 4907 I ActivityManager: Force stopping XX.XXXX.XXXX appid=10485 user=0: from pid 14937 07-18 09:00:07.863 1398 4907 I WindowManager: Force removing ActivityRecord{7ac2d00 u0 XX.XXXX.XXXX/crc64993323848f6bc121.MainActivity t1282}
我的设备在每日9:00刚过触发,其他设备触发时间不同但都是每日固定点,和应用启动时间无关。查询触发进程pid 14937,确认是Google Play服务进程:
u0_a243 14937 940 17504584 184708 0 0 S com.android.vending
核心疑问
- 已确认是Play Protect导致:侧载安装时Play Protect曾提示风险但已允许,且Play Protect设置中的「上次运行时间」和应用被强制停止的时间完全吻合。我能控制所有客户端设备,能否通过白名单等方式解决?
- 该问题是在应用更新、实现BigPictureStyle通知(需在
OnMessageReceivedhandler中下载图片)后才出现的,此前运行正常且安装时Play Protect未提示。是不是这个改动触发了拦截? - 补充日志显示拦截判定,但仍不明确具体原因:
yma.a(44): Unwanted app (MUwS) without is_muws flag was returned with verdict POTENTIALLY_UNWANTED on autoscan: XX.XXXX.XXX
解决方案建议
1. 设备端Play Protect信任配置
既然可控所有客户端设备,可直接将应用加入Play Protect信任列表:
- 打开设备「Google Play 商店」→ 右上角个人头像 → 「Play Protect」→ 「设置」
- 选择「已允许的应用」,添加你的应用包名;若无需全局扫描,也可临时关闭「扫描设备以查找安全威胁」(不推荐,会降低设备整体安全性)
2. 调整通知下载逻辑,规避检测
从日志的POTENTIALLY_UNWANTED和MUwS(疑似指后台静默下载行为)判定来看,OnMessageReceived中自行下载图片的操作可能触发了Play Protect的恶意行为检测:
- 改用Firebase Cloud Messaging的原生通知图片功能:通过
notification.image字段直接传递图片URL,由系统负责下载和展示,无需App在后台执行网络操作 - 若必须自行下载,需将下载操作放在前台服务中执行,并显示明确的下载通知提示,避免后台静默操作被判定为可疑
3. 利用Play Console降低误判
即使是私有侧载应用,也可上传到Google Play Console的「内部测试」频道,获取官方签名验证,减少Play Protect的误判:
- 上传应用到内部测试频道,生成测试链接后,只要应用签名一致,即使侧载安装,Play Protect也会识别为可信应用
4. 排查具体触发规则
部分设备可在Play Protect设置中查看详细扫描报告,确认是下载行为、包名特征还是其他因素导致的误判,针对性调整应用逻辑。
内容的提问来源于stack exchange,提问作者Qowy
相关产品推荐
相关产品推荐

