博主维护一个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)
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐