飘在云端

东西南北,海角天涯

· 未定义 · · 1696次浏览

华为鸿蒙系统不能更换 WebView

更新 2023-3-2 root 解决方案,使用 Magisk 模块 、LSPosed 框架,随意切着玩

请输入图片描述
请输入图片描述
请输入图片描述
请输入图片描述

对于华为未root的童鞋,再提供几个命令,自行测试要不要root权限,可能有奇迹

先安装好 Google webview

在 shell 里面执行

获取 webview 列表

settings get global webview_provider

设置谷歌 webview 作为提供者

settings put global webview_provider

重启系统,看看 webview 实现里面,有没有奇迹


更新: 2022-7-19 23:29

忽然有个猜想,各位童鞋或许可以试试,自己主动去安装了 Google System webview(可以魔法上网安装了 Google play store 然后下载,也可以参照文末的办法复制其他系统的webview安装),然后 adb 停用 Huawei webview,此时会不会回退到尝试调用系统默认的 webview (Google System webview),有刚需的小伙伴可以帮我证实下,我已经没动力测试了

替代方案(傻等):
a>等哪天官方终于想明白了加回开关,或者更新了 Huawei webview ,解决了兼容问题,通过华为应用市场升级 Huawei webview 尝试解决问题
b>之前某一版正常,随后更新时异常,可以应用管理里面卸载 Huawei webview 增量更新(清除应用数据)回退到出厂版本(前提是系统不是全量包 OTA 更新,否则无法回滚)

c>激进方案:回退降级系统版本到无异常的 huawei webview 版本,如果某个魔改版本有幸能正常实现网页渲染排版效果,但全系列魔改 webview 中招的除外,采用其他方案。

第三方方案(我的实际场景中没有涉及服务端认证及数据交互,采用了此类办法):
相关异常页面调用第三方浏览器打开(且是自己实现的 webview),如 Google chrome 安卓端 自带了最新原生的 Chrome webview 实现,它始终使用的是浏览器版本的 webview ,要更新 webview 仅需切换 谷歌浏览器版本即可,或者使用 火狐浏览器安卓端,自带 Gecko 内核实现的 webview,再或者腾讯基于 chrome 魔改的 X5 内核(可以下载 X 浏览器 X5 内核版)。

此类方案限制如下:如果是涉及到了用户登录等数据交互,通过微信右上角的更多,浏览器打开,选择第三方浏览器,会卡在认证界面,因为需要微信登录,如果服务端只是 简单的 UA 认证,可以通过大把第三方插件修改为 微信内置浏览器 UA,但是还有可能是 涉及到了 微信内置浏览器的 自己实现的原生、增强第三方接口功能,导致浏览时异常(我好难)。


导火索:

之前给家里老人买了个华为 P30 Pro(我自己是不待见华为的,一生黑),仅是因为华为默认策略的安全管控比较毒瘤,老人不会被国产毒瘤app误导,包括推送后台驻留,就是为了让大流氓(华为/鸿蒙系统/手机管家)管小流氓(国内各类毒瘤应用)。

有一说一,效果挺好的,在日常使用不知不觉装了一些垃圾清理和大量新闻资讯类app情况下,各种推送消息刷屏也能保持相当流畅度(买来后后全部是系统默认设置,未改动过),我要谢谢你哦,huawei。

老人需要使用微信,他喜欢看公众号一些内容,主要是各类课程视频教学等,因为手机默认设置的情况下使用(没有花精力给老人修改一些系统默认设置),其中系统更新和夜间自动安装都是开的(我真没注意到......,事后找我抱怨才发现给自己挖了个大坑,不然绝对是出厂版本用到手机报废)。

老人最近常看的公众号有些视频目录,使用了懒加载、滚动加载方式,比如当前页面显示了10条内容,往下滑动动态加载数据显示后续目录列表,这周开始除了初始加载出来的目录,后续内容全部显示 正在加载中。

经过排查:仅华为 P30 复现,PC 端最新版微信内置浏览器几率复现,复制公众号具体内容链接至 Google WebView (v98.x) 加载 100% 正常 (使用安卓谷歌浏览器)。

初步定为是 浏览器内核问题,即 Android WebView 实现,检索开发者选项,有且只有 HUAWEI WebView 选项,在 PC Chrome v98.x 谷歌浏览器内核也能正常加载,微信依旧无法加载。

又想骂一句,看不起这种行为,直接一刀切,有部分网页排版样式错乱和无法加载,魔改的什么玩意,没本事鸿蒙2.0 继续基于 Android AOSP 跑兼容层兼容安卓应用,这里就重拳出击,不提供双 WebView 用户自己切换,自己魔改乱实现渲染,这不是恶心人,一堆兼容问题

查资料,微信并没有使用自身的 X5 内核作为微信内置 WebView 实现(一种说法,也有说调用的是X5内核),而是调用系统提供的,看到这里我直接一句 “MMP”

检查系统版本:鸿蒙 2.0(基于安卓10),最近某个时间段夜间自动更新了一次系统,并且动了 webview 相关内容,此时真相大白,而华为早就关闭了解锁 BL 申请,不然还能挣扎一下,刷机解锁 BL,然后 Magisk WebView Switch 模块 走起

尝试抢救一下:

把自己的 Google webview 更新至最新稳定版 v98.x,apk 导出后大小只有61.x MiB,明显 Google Play 下载的 WebView 还不是全量包,尝试安装,P30 安装提示缺少xxx共享库,醉了

继续垂死挣扎,到这里 https://androidappsapk.co/apkdownloader/ 下载对应架构和安卓版本的 apk 全量包
Arm64_v8a(AARCH64), 安卓 10,下载完,显示大小为 94.6 MiB 的 apk 后缀格式安装包,鸿蒙 2.0 上顺利安装成功,但开发者选项仍然只有华为 WebView选项(原来是摆设一个 UI 开关?玩呢?)

弃疗,改为教老人通过微信页面右上角的在浏览器打开,选择谷歌浏览器打开解决该问题(或者激进方案给老人刷机降级旧版系统,但要数据备份和转移,好麻烦的,偷懒摸鱼)。

评论 (6条) 取消回复
  1. 风铃

    我p30没有这个问题,可以直接安装内webview独立app,并且开发者模式-webview实现里没有锁死,有选项可以选。mate60 pro+就是锁死,安装了也不会显示

    回复
  2. 大胖

    我的通过adb卸载了,但是在此之前我安装了安卓web,不过开发人里面同样是华为,所以我现在的web到底是哪一个,另一方面,我也不知道这个主要是用来干嘛的?只用来能够看浏览器吗?我只觉得不像要鸿蒙这些然后换个,日常捣鼓

    回复
    1. 量子涨落 博主
      @大胖

      开发者选项里面的那个只是个界面UI,并不具备切换功能,假的,只要不卸载,一定是使用华为自己的webview,我的意思是如果你装了谷歌的webview,卸载了huawei 的webview,理论上应该会调用系统自带的谷歌webview(但是华为默认没装默认预置的谷歌webview)

      回复
  3. Rime

    一样的问题

    回复
    1. 量子涨落 博主
      @Rime

      解决方案就是只能装个第三方浏览器了,比如 Google Chrome浏览器,内置浏览器内核或者 X 浏览器 X5内核(腾讯),或者火狐(自带Gecko内核实现),限制是如果浏览的网页涉及到交互和需要用户登录信息,就彻底无解了

      回复
  4. 量子涨落 博主

    正常安装成功,就是开发者选项还是只有HUAWEI WebView

    回复