能否在Android 9系统中集成Android 4.4 KitKat版本的Chromium webview
能否在Android 9系统中使用Android KitKat版本的
webview (chromium)? 问题背景
- 需加载的网页采用
appCache、application Manifest等老旧技术开发,托管在低配置硬件定制控制系统上,服务器不支持https,无法迁移到service workers等新技术栈。 - 目标网页在搭载Android 4.4 KitKat的平板上运行完全正常,因此需要找到在Android 9中集成
kitkat webview (chromium)的可行方案。 - 已尝试
crosswalk webview:在旧版sdk version 23环境下编译可正常运行,但crosswalk无法适配sdk 29、30等最新安卓SDK版本编译。
可行解决方案
方案1:编译定制版Chromium WebView内核
基于KitKat对应的Chromium 33分支源码,针对Android 9(API 28)的ABI接口做适配修改:
- 调整源码中的系统API调用逻辑,替换Android 9中已废弃/变更的接口,重新编译为可嵌入App的独立
WebView组件,不需要依赖系统内置WebView版本 - 编译时关闭Chromium中对HTTP资源加载的限制开关,同时保留
appCache、application Manifest的支持逻辑,无需移植新的Web标准特性
方案2:适配Crosswalk兼容高版本SDK
降低App的targetSdkVersion到23,同时在AndroidManifest.xml中配置android:usesCleartextTraffic="true"放行HTTP流量,再针对性修改Crosswalk的依赖冲突:
- 屏蔽Crosswalk中调用的高版本SDK不存在的API,通过反射兼容的方式替换对应逻辑,可实现Crosswalk在API 29/30环境下的正常编译运行
- 该方案改造成本远低于重新编译Chromium内核,适合快速验证功能可行性
方案3:Root后替换系统全局WebView
如果是封闭定制设备场景,不需要上架应用商店的前提下:
- 获取Android 9设备的Root权限,将系统内置的WebView APK直接替换为KitKat版本的WebView安装包,全局生效所有App的WebView加载逻辑,不需要修改应用代码
- 该方案仅适合固定硬件的定制场景,普通消费级设备不适用
内容的提问来源于stack exchange,提问作者asad.qazi
相关产品推荐
相关产品推荐

