分享

android 升级webview版本,包括6.0系统

 创始元灵6666 2022-08-01 发布于河北

在做系统修改的过程中,android自带的webview版本不能满足OEM客户的要求,此种现象在android低版本中尤为更甚;因此我们需要自己对webview的版本进行升级。在Android 4.4版本以前,google采用的是webkit内核,也没有把webview作为一个apk独立出来,所以我们升级webview只能再Android 5.0以后;

webview 内核版本查看方法

目前通用的方法就是在浏览器中输入 liulanmi.com/labs/core.html进行查看,我的理解,应该有其他方式,但一直未找到,还望指教。
下图是我升级过的版本:

1637893915(1).jpg

webview.apk下载地址

https://www./uploads/?q=android-system-webview
该网址需要特殊访问,诸君自己努力吧!

修改系统源码,编译

目前我修改过6.0 和10系统,二者存在一定差异,但大同小异,猜测其他版本应该也差异不大

android 6.0
  1. 替换 external\chromium-webview\prebuilt\arm 目录下的webview.apk 我们下载的名称并不是webview.apk;这里要重命名为webview.apk
  2. 编译
  3. 修改 \frameworks\base\core\res\res\values\config.xml 文件,将其中的 com.android.webview 修改为 com.google.android.webview
...
 <!-- Package name providing WebView implementation. -->
    <string name="config_webViewPackageName" translatable="false">com.google.android.webview</string> //此处修改
...

4.编译

  1. 将系统中的/system/app/webview/webview.apk 替换成编译出的webview.apk
  2. /system/framework/framework-res.apk 替换成编译出的 framework-res.apk
    (注:理论上只替换framework-res.apk即可,但我使用的是3288方案,只替换此项apk,导致系统异常,无法开机;故我把framework下的所有文件都替换为编译出,可正常使用)
android 10
  1. 替换 external\chromium-webview\prebuilt\arm64 目录下的webview.apk ,注意这里是 arm64
  2. 编译
  3. 修改 \frameworks\base\core\res\res\xml\config_webview_packages.xml 文件,注意这里修改的文件路径不同
...
<webviewproviders>
    <!-- The default WebView implementation -->
    <webviewprovider description="Android WebView" packageName="com.google.android.webview" availableByDefault="true"> 
    </webviewprovider>
</webviewproviders>
...

4.编译

  1. 将系统中的/system/app/webview/webview.apk 替换成编译出的webview.apk
  2. /system/framework/framework-res.apk 替换成编译出的 framework-res.apk
    (注:在android 10 系统上只替换该项即可使用)

调试心得

在调试6.0的时候,网上大部分博客修改的webview.apk都是修改arm64目录下的,导致我一直不能编译出正常的apk文件,最后我发现,在 prebuild统计目录的 Android,mk 文件中有这个配置

LOCAL_MODULE_TARGET_ARCH := arm arm64 mips x86 x86_64
my_src_arch := $(call get-prebuilt-src-arch,$(LOCAL_MODULE_TARGET_ARCH))
LOCAL_SRC_FILES := prebuilt/$(my_src_arch)/webview.apk

最后一行指定了使用的webview.apk在哪个目录下,但是 my_src_arch 这个变量值未找到定义的地方;那就开启盲猜模式,既然arm64目录不行,那就只能是arm目录;实践证明,猜测正确。后来思考一下,我们可以通过打印的方式,来看这个变量值到底是什么!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多