为什么 Play Protect 会提示风险?
Google Play Protect 是 Google 内置的 Android 安全服务,它会在设备上扫描应用,发现潜在有害行为时弹出警告。常见触发原因包括:过度申请敏感权限、集成被标记的第三方 SDK、明文传输数据、签名异常等。收到提示后,盲目加固或重新打包可能掩盖问题,正确的做法是按顺序排查。
第一步:检查权限申请
权限是 Play Protect 最关注的信号之一。先看应用是否申请了与核心功能无关的敏感权限,例如:
- READ_SMS、RECEIVE_SMS:非短信类应用申请即高风险。
- ACCESS_FINE_LOCATION:后台持续定位容易触发警告。
- READ_CONTACTS、WRITE_CONTACTS:非通讯录应用慎用。
- REQUEST_INSTALL_PACKAGES:动态加载或更新时可能被滥用。
排查方法:在 AndroidManifest.xml 中列出所有 uses-permission,对照功能说明,删除冗余权限。如果必须使用,确保在运行时动态申请并给出明确解释。
第二步:审计第三方 SDK
很多风险来自集成的广告、统计或推送 SDK。这些 SDK 可能偷偷收集设备信息或下载可执行代码。建议:
- 列出所有依赖的 SDK 及其版本,检查是否有已知恶意行为记录。
- 使用 Google Play SDK 索引或第三方工具扫描 SDK 安全性。
- 移除不再维护或来源不明的 SDK,尤其是那些要求动态加载 dex 或 so 的。
如果必须保留,尝试更新到最新版本,或与 SDK 提供商确认合规性。
第三步:检查网络传输安全
明文 HTTP 传输、未校验服务器证书、使用不安全的加密套件都可能被 Play Protect 标记。排查点:
- 是否所有网络请求都使用 HTTPS?
- 是否在代码中硬编码了 HTTP 地址?
- 是否实现了证书锁定(Certificate Pinning)?
- 是否忽略了 SSL 错误(如 TrustAllCerts)?
建议使用 Network Security Config 强制 HTTPS,并移除不安全的 TrustManager。如果应用需要与自建服务器通信,确保使用有效证书并开启证书锁定。
第四步:验证签名完整性
签名异常是 Play Protect 报毒的常见原因。检查以下方面:
- APK 是否使用 V2 或 V3 签名方案?仅 V1 签名容易被篡改。
- 签名证书是否过期?过期证书会导致安装失败或警告。
- 是否使用了调试证书发布?调试证书不被信任。
- 签名后是否被二次修改?任何修改都会破坏签名完整性。
使用 apksigner 工具验证签名,确保输出显示“Verified”。如果签名丢失,需要重新使用正式证书签名。
排查顺序总结
按照上述顺序,从权限到签名逐步排查,可以快速定位问题。如果所有项都正常,但 Play Protect 仍报毒,可能是 Google 的误报,可以通过 Google Play 控制台提交申诉。同时,建议参考 我们的安全服务 进行深度检测。对于开发者,保持代码透明、权限最小化、网络加密是长期避免风险的关键。
如果你需要更系统的安全整改方案,可以查看 关于我们 页面,了解如何结合自动化工具与人工审计。