测试平台
Platform: RK3399
OS: Android 7.1.1
现象
首先查看当前webview的版本,使用如下命令查询
adb shell am start -a android.intent.action.VIEW -d https://liulanmi.com/labs/core.html
可以得知当前的版本为52.0.2743.100
分析
查看系统后发现现在的webview已经被封装为单独的apk,放置在/system/app/webview/webview.apk路径下。而且系统提供了自主配置webview引擎的接口,如下可知默认的是系统内置的webview(包名为com.android.webview)
frameworks/base/core/res/res/xml/config_webview_packages.xml
<webviewprovider description="Android WebView" packageName="com.android.webview" availableByDefault="true"> </webviewprovider>
``
解决方案
知道系统如何配置默认webview引擎要解决就简单了
1.下载google最新发布的webview(webview_83.0.4103.106.apk),安装或内置到系统中,覆盖原/system/app/webview/webview.apk或者放到新的目录中也可(如/system/app/googlewebview/googlewebview.apk)
2.因为google发布的webview包名为com.google.android.webview和系统内置的不同,所以我们还需要修改默认的webview引擎
diff --git a/frameworks/base/core/res/res/xml/config_webview_packages.xml b/frameworks/base/core/res/res/xml/config_webview_packages.xml
index f062b59..9c4d65a 100644
--- a/frameworks/base/core/res/res/xml/config_webview_packages.xml
+++ b/frameworks/base/core/res/res/xml/config_webview_packages.xml
@@ -16,6 +16,6 @@
<webviewproviders>
<!-- The default WebView implementation -->
- <webviewprovider description="Android WebView" packageName="com.android.webview" availableByDefault="true">
+ <webviewprovider description="Android WebView" packageName="com.google.android.webview" availableByDefault="true">
</webviewprovider>
</webviewproviders>
注:我这里是直接替换了原来的webview包名,其实也可以添加多一个,应该也可以实现效果相同的效果
<webviewproviders>
<!-- The default WebView implementation -->
<webviewprovider description="Android WebView" packageName="com.android.webview" availableByDefault="false"/>
<webviewprovider description="Google Android WebView" packageName="com.google.android.webview" availableByDefault="true"/>
</webviewproviders>
3.编译并更新固件后再次运行命令查询当前webview版本号
adb shell am start -a android.intent.action.VIEW -d https://liulanmi.com/labs/core.html
发现版本号已经更新到83.0.4103.106,更新成功