Android WebView 升级
一、项目背景
1.1 需求
项目需要使用WebView加载合作方公司的Url(里面功能比较多):
-
使用了ES6(ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了(所以也被叫作ES2015))
-
JavaScript 使用的函数,要求 chrome 最低版本是85。
一系列原因导致WebView加载该链接报错,合作方那边因为某些原因,不想改变现有的代码实现等。需要我们自行解决,那就开整呗。
1.2 设备
-
Android 8.1, WebView 版本 60.xxxx.xxxx.xx(好吧,忘记版本了,页面打不开))
-
Android 8.1, WebView 版本 61.0.3163.98(页面打不开)
-
Android 11, WebView 版本 83.0.4103.120(视频无法播放,厂商给的答复是不支持,具体原因没说)
查看版本号:
-
可以进入设置-开发者模式-Webview实现可以看到 Webview 内核版本号。
-
adb 命令: adb shell pm dump com.android.webview|grep version
1.3 解决方案
1.腾讯X5内核,还是加载失败,以为是集成错误。特意使用微信打开该链接,也是加载失败。
2.更新安装包,因为内嵌WebView的是com.android.webview。
-
2.1 下载了包名为 95.0.4638.50-463805003_minAPI21版本的包,进行覆盖安装->报错,提示签名文件不一致。
-
2.2 下载com.android.google.weview_95.0.4638.74_APKPure,安装成功了,加载还是报错。而且在WebView实现->不可选择com.android.google.webview。
3.修改framework-res.apk中配置,允许WebView实现选择com.android.google.webview。这种操作不太合适2C,需要root权限,修改系统文件,一不留神就可能产生其他问题。
4.使用
,这个还是比较强大的,对WebView内核进行升级。已解决低版本无法加载url、视频无法播放的问题。二、WebViewUpgrade 接入
WebViewUpgrade的创建者遇到的问题:华为机上因为WebView内核的Chromium版本低于107无法播放H265视频的情况,为了解决上述问题可以用JS实现H265播放,但是会比较卡,就想不能让WebView用应用内的APK作为内核。
2.1 支持版本
-
com.google.android.webview:122.0.6261.64
-
com.android.webview:113.0.5672.136
-
com.huawei.webview:14.0.0.331
-
com.android.chrome:122.0.6261.43
-
com.amazon.webview.chromium:118-5993-tv.5993.155.51
当然,你也可以找到其他版本下载安装即可。例如 com.android.webview,我觉得113版本太高,那么你可以下载一个95版本的。或者你不想使用com.android.webview 改用com.google.android.webview也是可以的。
2.2 接入
2.2.1 导入项目(我使用的是这个)
将Demo的core和download-source模块直接导入到自己项目,修改core中 implementation 'androidx.appcompat:appcompat:1.6.1'的版本。
2.2.2 implementation
如果是低版本,可能会报错。core中 implementation 'androidx.appcompat:appcompat:1.6.1'的版本比较高,需要兼容的SDK版本也比较高。
解决方案:
-
1.提高项目 SDK 版本。
-
2.使用exclude。
以上两种方式都可以。
2.3 使用
设置
这里我使用的是网络下载:
-
包名:com.android.webview;
-
版本号:113.0.5672.136
-
下载内核地址:https://mirror.ghproxy.com/https://raw.githubusercontent.com/JonaNorman/ShareFile/main/com.android.webview_113.0.5672.13_armeabi-v7a.zip
注意:这个代码尽量前置,如果无法前置,需要保证,其他地方先不要对WebView进行操作。如果操作了,会导致初始化失败。
可以先试用Demo尝试功能是否可用,再集成到自己的项目中。
2.4 WebView
执行完上面的操作后,你就正常操作WebView即可。上面我只是列举了网上下载的例子(第一次下载,只要文件存在,无需重复下载),还支持内置/安装包的形式,我这是应用包体太大,不适合内置。
这种方式是可行的,但是也有一些小的前置条件需要注意,如果无法前置会导致使用失败。怎么前置才能做到万无一失,就需要根据实际情况来判断了。
- 点赞
- 收藏
- 关注作者
评论(0)