webview 中文文档 下载 App

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 的签名对不上,系统会拒绝安装。

这就是为什么:

覆盖更新的实际流程

Google Play 商店推送一个新的 WebView APK 时,系统做的事:

  1. 检查新 APK 的签名是否为 Platform + 是否和当前已安装的 WebView 同 SharedUserId
  2. 如果匹配 → 跳过"卸载"步骤,直接在原位置替换 APK(文件系统层面)
  3. APK 被标记为 PackageManager.PACKAGE_REPLACED
  4. 下次需要 WebView 时,系统自动加载新 APK 的 Chromium

整个过程不中断 App 运行、不触发应用数据清理、不要求用户确认——这就是为什么你完全感觉不到。

签名变更历史

Google 在 2018~2019 年间曾尝试把 WebView 的 Platform 签名换成普通 App 签名,以降低系统风险。但最终放弃——因为:

  1. 签名变更会导致覆盖更新失败,需要厂商配合刷固件
  2. 厂商定制 ROM 上 WebView 签名本来就混乱,再加一层变更会雪上加霜
  3. Platform 签名在 Android 生态里已经被广泛接受

→ 下一页:覆盖安装为什么不丢数据