源码更新android系统自带webview版本
博主维护一个android9系统的车机平台项目,目前遇到一些关于webview得问题。如系统自带webview版本过老,有很多CVE漏洞问题无法解决。还有最近集成tiktok,发现会有爆破音问题,排查下来也是因为webview版本过老导致。所以需要更新新版本webview。在原生的 Android 7+ 系统中,WebView 的版本能够独立于 Android 系统更新(通过 Google 应用商
博主维护一个android9系统的车机平台项目,目前遇到一些关于webview得问题。如系统自带webview版本过老,有很多CVE漏洞问题无法解决。还有最近集成tiktok,发现会有爆破音问题,排查下来也是因为webview版本过老导致。所以需要更新新版本webview。
在原生的 Android 7+ 系统中,WebView 的版本能够独立于 Android 系统更新(通过 Google 应用商店更新)。但国内的手机平板等设备上基本使用的是各厂商的定制 Android 系统,除了不能直接访问 Google 应用商店,甚至内置的 WebView 也有改动。那是否也能独立于系统,单独升级内置的 WebView 版本呢?答案当然时肯定得,升级方法如下。
现在网上能找到两种包名得webview.apk,分别为com.android.webview和com.google.android.webview,系统默认得为com.android.webview。在更换webview时,使用任意一种都可以。
更新方法:
1,确认当前版本,如下系统里查询结果,可以看到版本号,包名等信息;
msmnile_gvmq:/ # dumpsys webviewupdate
Current WebView Update Service state
Fallback logic enabled: false
Multiprocess enabled: true
Current WebView package (name, version): (com.android.webview, 83.0.4103.120)
Minimum targetSdkVersion: 30
Minimum WebView version code: 410412053
Number of relros started: 2
Number of relros finished: 2
WebView package dirty: false
Any WebView package installed: true
Preferred WebView package (name, version): (com.android.webview, 83.0.4103.120)
WebView packages:
Valid package com.android.webview (versionName: 83.0.4103.120, versionCode: 410412053, targetSdkVersion: 30) is installed/enabled for all users
msmnile_gvmq:/ #
2,自己网上查找自己想要得webview版本;
网上找了多个版本,最终试下来项目上试下来选择了版本124.0.6367.219。
3,源码环境更换apk
找到源码目录Android/external/chromium-webview/prebuilt
更换arm和arm64目录下得webview.apk
uluxy181@ubuntu16-010:~/workspace3/MTK_CPAA/external/chromium-webview/prebuilt$ git status
Not currently on any branch.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: arm/webview.apk
modified: arm64/webview.apk
no changes added to commit (use "git add" and/or "git commit -a")
uluxy181@ubuntu16-010:~/workspace3/MTK_CPAA/external/chromium-webview/prebuilt$
4,修改包名声明
配置文件路径Android/frameworks/core/res/res/xml/config_webview_packages.xml
修改其内容得包名为com.google.android.webview或者com.android.webview
<webviewproviders>
<!-- The default WebView implementation -->
<webviewprovider description="Android WebView" packageName="com.android.webview" availableByDefault="true">
</webviewprovider>
</webviewproviders>
5,整编后烧录到设备,查询最新webview信息
mt2712_saic_mis3e:/ # dumpsys webviewupdate
Current WebView Update Service state
Fallback logic enabled: true
Multiprocess enabled: true
Current WebView package (name, version): (com.android.webview, 124.0.6367.219)
Minimum WebView version code: 636771901
Number of relros started: 2
Number of relros finished: 2
WebView package dirty: false
Any WebView package installed: true
Preferred WebView package (name, version): (com.android.webview, 124.0.6367.219)
WebView packages:
Valid package com.android.webview (versionName: 124.0.6367.219, versionCode: 636771901, targetSdkVersion: 34) is installed/enabled for all users
mt2712_saic_mis3e:/ #
PS C:\Users\uluxy181>
注意:
不是说任意vebview版本都是可以更新的,还是需要android系统版本的支持。比如找到了个126.0.6478.50版本,在更新到android9上时报错如下,最低支持sdk版本是29,也就是android10:
PackageManager: Failed to parse /system/app/webview: /system/app/webview/webview.apk (at Binary XML file line #3): Requires newer sdk version #29 (current version is #28)
更多推荐


所有评论(0)