从 WebKit 到 Chromium 再到独立 APK:4.3→5.0 解耦是最关键的转变
Android 4.4 KitKat:第一次换内核
Android 4.4 (2013) 之前的 WebView 基于旧 WebKit。旧 WebKit 的问题:
- 不支持 Web Components 全部规范
- JavaScript 性能远不如现代引擎
- HTML5 支持不完整,很多网页直接渲染异常
- 安全补丁节奏慢,跟着 Android 大版本走
4.4 KitKat 把内核换成了 Chromium 30,这是当时最大的单一 WebView 升级。但此时的 WebView 仍然编译进系统镜像——Chromium 的代码被并入 Android 源码树,没有独立的 APK 文件。
这意味着:想更 Chromium?刷固件。
Android 5.0 Lollipop:正式拆成 APK
2014 年 Lollipop 是真正的转折点——Google 把 WebView 拆成一个独立 APK:
- 包名
com.google.android.webview首次出现 - 签名是 Google Platform 签名(系统级)
- 更新渠道从固件变成了 Google Play 商店
为什么这是关键?因为从此以后:
- 普通用户不用刷系统就能拿到 Chromium 的安全补丁
- 功能更新可以跟着 Chromium 的节奏(2~3 月一个大版本),不用等 Android 的年度发布
- Google 开始可以强制推送安全补丁,厂商 ROM 无法阻止(毕竟是系统签名的 APK)
那签名呢?
拆包之后签名策略有微妙变化:
- Lollipop 时代签名是
com.google.android.webview的独立 Platform 签名 - Marshmallow / Nougat 时期 Google 还一度考虑把签名从 Platform 换成普通 App 签名,引发过讨论
- 最终还是保持 Platform 签名,因为需要系统级权限来覆盖更新
开发者感受到的变化
5.0 之后,App 开发者第一次可以假定 WebView 具备 Chromium 能力,不再需要写两套渲染代码(一套给旧 WebKit WebView,一套给浏览器)。这对微信、支付宝、游戏开发商来说是巨大的利好——它们开始全面押注 WebView 内嵌。
历史的注脚
这次解耦被 Chromium 官方博客称为 "The most significant change to WebView ever"——至今仍是 WebView 架构的基石。之后的所有更新(Chrome 兼任时期、拆回独立等)都是这个架构基础上的调整。