魅族手机旧机型 WebView 版本较低且无法更新的解决方法

2021年6月10日

  魅族手机旧机型(指魅族16系列及之前的所有机型)的定制 WebView 无法更新一直是一个令人很头疼的问题。

  WebView 是一个基于 WebKit 的引擎,只要手机上 APP 展示了 html 页面,那大概率就是通过调用系统 WebView 来渲染的(微信内置的浏览器好像是调用它自身内置的)。所以说这是一个很关键的系统组件。

  如何查看自己手机的 WebView 版本:手机安装 via 浏览器(或别的体积小巧的浏览器,因为它们一般都是套壳,实际调用的是系统本身的 WebView),然后在 via 浏览器内搜索“浏览器内核检测”或者直接打开 这个网站,就能看到手机目前的 WebView 版本。

  截至 2021.6.10,WebView 最新正式版本为 91.0.4472.101。

  魅族手机旧机型内置的 WebView 基本都是 WebView 66、WebView 65 甚至更低,这些早已是三年前发布的版本,使用低版本的 WebView 可能导致部分软件无法正常显示和带来很大的安全风险。其他品牌的手机可以通过应用更新、OTA 升级的方式来保持较新版本的 WebView。而魅族因为是自己定制的 WebView 所以无法自行升级(以前看到帖子说有网友问过魅族客服,客服表示是为了能配合自带浏览器实现夜间模式而进行的定制,这个解释目前存疑)。

  本来如果手机不出问题,也就忍着凑合用了,但前段时间魅族手机部分机型因 WebView 的问题导致软件闪退(和另一个暂时不清楚真假的 BUG)给我敲响了警钟,魅族的做法是给一些机型的 WebView 进行升级(从 WebView 65 升级到 WebView 66),给另一些机型的 WebView 进行修复 (从 WebView 65 到 WebView 65),而且这些更新仅限于使用了高通 710 的魅族手机及后续的部分机型,安装这些更新后还可能出现一些莫名其妙的问题。所以要想彻底解决这个隐患,还是得想办法把 WebView 的版本更新上去。

  一开始使用魅蓝 S6 在 root 后尝试替换系统本身的 WebView,然而重启手机后浏览器提示 WebView 未安装。又尝试安装官方提供给魅族 16th 等机型的 WebView 安装包(虽然可以正常安装使用但是治标不治本),之后再进行已安装更新的替换,但重启手机后依然提示 WebView 未安装。

  一筹莫展之际,看到了官方论坛有人在讨论国际版 Flyme,于是尝试将手机固件刷到国际版的 Flyme,然后发现国际版竟然可以正常更新内置的 WebView(虽然最新国际版 Flyme 停留在 Flyme 7,但 Flyme 7 对一些旧机型来说反而更流畅)。

  这里提供刷入国际版的步骤(个人刷的几个机型的国际版固件都有简体中文):

  1.备份好手机上的所有数据。

  2.打开官方 Flyme 固件下载 网站,拉到底部,语言选择繁体中文进入 Flyme 国际版下载 页面,国际版页面机型名称可能不同,请注意辨别。

  3.下载对应自己机型的国际版固件。因为部分机型可以直接刷到国际版无需任何修改,所以先尝点击下载的更新包直接更新(记得勾选清除数据选项),如果无法更新,看下一条。

  4.获取系统 root 权限(设置-指纹、面部和安全-ROOT 权限),下载 ChangeIdMeizu.apk 并安装(该软件需要 root 权限,我也是从网上下载,不清楚具体支持哪些机型,是否使用请自行斟酌,不愿使用的话也可寻找其他手动修改 ID 并更新到国际版的教程),打开后授予软件 root 权限,点击软件里面的 OK 按钮,然后再尝试点击更新包进入更新。

  Flyme 国际版内置谷歌全家桶,WebView 需要在 Play 市场进行更新或使用有对应软件资源第三方应用市场进行更新。Flyme 国际版固件的一些自带 APP 很多余,建议使用 adb 命令禁用掉(使用adb命令禁用 APP 无需 root 权限,推荐,方法详见:还没写)

  魅蓝 S6 使用此方法更新到国际版成功。

  附1:ChangeIdMeizu.apk 下载地址