Jetpack Webkit (androidx.webkit) 让开发者不再关心 Android 版本差异
为什么需要它
每个 Android 系统版本(10、11、12、13、14...)自带一套固定的 android.webkit API——来自当时发布 WebView APK 时的 Chromium 版本。问题是 Android 发布速度比 WebView APK 慢得多:
- Android 14 自带的
android.webkitAPI 是 Chromium M118 时期的 - 但用户设备上装的 WebView APK 可能已经是 Chromium M130+
- Chromium M130 有的 API,
android.webkit里根本没有声明——你编译不过去
Jetpack Webkit 的解决方案:不调用 Android 平台 API,而是通过反射 / JNI 直接调用 WebView APK 的 API。
架构

三层关系:
App 代码 → androidx.webkit (Jetpack Webkit 库)
↓
WebView APK 的 API(设备上最新版本)
↓
Chromium 渲染引擎
对比原生:
App 代码 → android.webkit (Android 平台 API,固定死)
↓
Chromium 渲染引擎
引入方式
Gradle:
implementation "androidx.webkit:webkit:1.12.1"
检查设备是否支持:
if (WebViewFeature.isFeatureSupported(WebViewFeature.WEB_MESSAGE_LISTENER)) {
// 可以用 WebMessageListener API
}
它解决了什么
| 问题 | Jetpack Webkit 怎么解 |
|---|---|
| Android 10 和 Android 14 的 WebSettings 差异 | 统一的 API,自动适配 |
| WebView 方法在旧 Android 上不存在 | WebViewFeature.isFeatureSupported() 检查 |
| 远程调试 API 碎片化 | WebViewCompat 统一入口 |
| 文件上传兼容性 | WebResourceRequestCompat |
常用 API
// WebViewCompat —— WebView 的兼容层
WebViewCompat.evaluateJavascript(webView, jsValue, callback);
WebViewCompat.postWebMessage(webView, message, targetOrigin);
// WebSettingsCompat —— WebSettings 的兼容层
WebSettingsCompat.setSafeBrowsingEnabled(webView.getSettings(), true);
WebSettingsCompat.setForceDark(webView.getSettings(), FORCE_DARK_ON);
// WebViewAssetLoader —— 加载 assets/ 下的静态资源(解决 file:// 安全问题)
WebViewAssetLoader assetLoader = new WebViewAssetLoader.Builder().addPathHandler(
"/assets/",
new WebViewAssetLoader.AssetsPathHandler(context)
).build();
现状与推荐
- 版本:2026 年主流
androidx.webkit:1.12.x(10 月 2 日刚发了 1.12.1) - 维护活跃:Google 每 1~2 个月发布小版本
- 推荐:新项目、或需要复杂 WebView 功能的项目必须用 Jetpack Webkit,别再直接调
android.webkit
→ 继续 Jetpack 系列:Jetpack Webkit 与平台 API 差异