Platform 签名是 WebView 能被覆盖更新的秘密
Android 签名等级
Android APK 有几种签名等级,权限逐级递减:
| 签名等级 | 权限 | 能覆盖的 APK |
|---|---|---|
| Platform | 系统级最高权限 | 所有同 Platform 签名的 APK |
| SharedUser | 跨 APK 共享 UID | 同 SharedUserId |
| 普通 App 签名 | 沙箱级 | 同包名 + 同签名 |
com.google.android.webview 使用的是 Platform 签名 + SharedUserId="android.uid.system" 双重保障。
为什么这很重要
普通 App 想覆盖更新有个前提:新 APK 的签名必须和旧 APK 的签名完全一致。如果厂商在出厂时给 WebView 换了自己的签名,那 Google Play 商店就无法推送更新——新 APK 的签名对不上,系统会拒绝安装。
这就是为什么:
- Pixel / 原生 Android → 一直走 Google Platform 签名 → Google Play 可以直接更新
- 小米 HyperOS 自研 WebView → 小米换了签名 → Google Play 上的
com.google.android.webview装不上,只能小米自己更 - HarmonyOS NEXT → 不基于 Android → 完全不用这套机制
覆盖更新的实际流程
Google Play 商店推送一个新的 WebView APK 时,系统做的事:
- 检查新 APK 的签名是否为 Platform + 是否和当前已安装的 WebView 同 SharedUserId
- 如果匹配 → 跳过"卸载"步骤,直接在原位置替换 APK(文件系统层面)
- APK 被标记为
PackageManager.PACKAGE_REPLACED - 下次需要 WebView 时,系统自动加载新 APK 的 Chromium
整个过程不中断 App 运行、不触发应用数据清理、不要求用户确认——这就是为什么你完全感觉不到。
签名变更历史
Google 在 2018~2019 年间曾尝试把 WebView 的 Platform 签名换成普通 App 签名,以降低系统风险。但最终放弃——因为:
- 签名变更会导致覆盖更新失败,需要厂商配合刷固件
- 厂商定制 ROM 上 WebView 签名本来就混乱,再加一层变更会雪上加霜
- Platform 签名在 Android 生态里已经被广泛接受
→ 下一页:覆盖安装为什么不丢数据