7~9 时代:Chrome 兼任 WebView,一段省空间但坑频出的实验
为什么这么做
Android 7.0 Nougat(2016)发布时,Google 的磁盘优化策略是让 Chrome 和 WebView 共用 Chromium 代码——理论上两份代码重复、省出几百 MB 空间。
实际做法:让 Chrome 应用同时兼任 WebView provider。用户机器上:
- 有 Chrome → 系统把 Chrome 注册为 WebView 的实现,WebView APK 可能被标记为 disabled
- 禁用 Chrome → 系统自动切换到独立的 Android System WebView APK(需要重启才生效)
用户端的麻烦
这条路线很快暴露出问题:
- 用户"清理存储"时误卸 Chrome → 第二天 App 内网页全白屏
- 厂商定制版 Chrome vs Play 版 Chrome 行为不一致 → 某些 ROM 上 Chrome 兼任 WebView 渲染出兼容性 bug
- 用户手动禁用 Chrome 后忘了重启 → WebView provider 还挂着 Chrome,App 崩溃
- Chrome 更新后签名变更 → WebView 切换失败
开发者端的问题
- WebView 行为突然取决于 Chrome 版本,而 Chrome 的更新节奏和 WebView 不完全一致
- Chrome 兼任 WebView 时,
WebView.setWebViewClient的某些回调(如shouldOverrideUrlLoading)表现和独立 WebView 不同 - 某些 API(如
WebRenderStats)兼任时期被截断
Oreo 和 Pie 延续
Android 8 (2017) 和 Android 9 (2018) 延续了这条路线,但 Google 已经在为拆回去做准备——WebView Beta 轨道(2017 年上线)其实就是为独立模式铺路。
废弃与回归
Android 10 Q(2019)正式结束了 Chrome 兼任的时代——WebView 和 Chrome 拆成两个独立应用,更新各走各的。这一步被当时的开发者社区普遍叫好:
"终于不用关心 Chrome 版本号了,App 内网页渲染质量只跟 WebView 版本挂钩,清晰多了。"
→ 继续阅读:10+ 至今的稳定期:独立更新 + 安全月更节奏