所在位置:首页 > 安卓应用 > 系统工具 > android system webview最新版本

android system webview最新版本

  • 安全
  • 人工检测
  • 官方版
  • 游戏类别:系统工具
  • 发布时间:2026-06-29 22:23:47
立即下载
应用评分
4

值得推荐

详细信息

Android System WebView的最新版本,也被称为WebView安装包APK,是一款浏览器内核插件,旨在为那些未内置浏览器内核的应用程序提供性能提升。当你需要展示网络内容时,使用它能够快速加载网页信息,并且与QQ、微博、微信等应用协同工作效果更佳,有兴趣的朋友欢迎前来下载!

Android System WebView官网介绍

Android System WebView是由Chrome提供的系统组件,使Android应用程序能够展示网页内容。该组件已预装在您的设备上,建议及时更新以确保获得最新的安全补丁和问题修复。Android System WebView的上线主要是因为Google对它的支持。

Android System WebView更新下载

Android System WebView官方版安装方式

在尝试在移动设备上安装软件之前,您需要了解,默认情况下,Android系统不允许这样做。这是一项安全机制,但并不隐藏,用户无需提升权限即可关闭此设置。该选项在Android系统中称为“未知来源”,只需简单切换即可启用。通常,用户会看到类似“允许从Play商店以外的来源安装应用”的提示。根据您的Android系统版本和设备制造商不同,该选项的位置可能有所不同,通常位于安全设置中。要开启它,只需将其打开即可。

WebView是什么

WebView是一个可视化组件,作为原生应用的一部分进行展示。它可以嵌入到移动端,实现前端的混合开发模式,大多数混合开发框架都是基于WebView进行二次开发的,例如:APIcloud、uni-app等。

一、WebView的用途

1、作为应用内部的浏览器,用于展示链接内容。

2、用于展示广告内容。

3、完全承载应用内的所有交互操作。从技术角度来看,这些仍然是原生应用,但它唯一的原生行为就是托管WebView,这种应用被称为混合应用。从部署和更新的角度来看,混合应用非常便捷。

4、作为原生应用的扩展模块。许多原生应用会提供插件或扩展功能来增强其能力,由于Web技术的简洁性和强大性,这些插件和扩展通常以HTML、CSS、JS等形式构建,而非C++、C#等语言。

二、WebView基础知识

1、我们通常使用浏览器浏览网页,清楚地知道正在使用的浏览器是PC端还是手机端的APP。而WebView是一个嵌入式的浏览器,被嵌入在原生应用中,你可能没有意识到自己正在使用浏览器。

2、传统浏览器分为两部分:UI(地址栏、导航栏)和浏览器引擎。WebView就是原生应用中的浏览器引擎。

3、WebView只是一个可视化的组件,是原生应用的界面部分。

4、通过WebView展示的内容不需要存储在本地,可以直接从服务器获取。

5、这种灵活性让Web应用和希望在原生应用中展示的Web应用代码可以相互复用。

6、运行在WebView中的JavaScript代码有能力调用原生系统的API,不受传统浏览器沙箱的限制。

7、沙箱的存在是因为,你永远不能完全信任加载的Web内容,因此不能让它调用原生系统的API。而在WebView中,开发者通常能完全控制加载的内容,恶意代码进入并造成混乱的可能性较低。

8、在WebView中,JavaScript代码可以与原生应用代码进行通信,并调用原生API,集成如传感器、存储、日历、联系人等功能。

三、WebView的核心价值

WebView其实只是在应用中设定好位置和大小的浏览器,不会包含任何额外的UI元素。

在大多数情况下,除非调用了原生API,否则不需要专门测试WebView中的Web应用。

WebView使用方法

Android的WebView组件功能十分强大,以下是项目中常用的一些功能总结:

一、背景设置

WebView使用教程

WebView.setBackgroundColor(0);//首先将背景色设为透明

WebView.setBackgroundResource(R.drawable.yourImage);//然后设置背景图片

二、获取WebView网页加载初始化和完成事件

步骤如下:

1、创建一个自定义的WebViewClient(继承自WebViewClient类),如MyWebViewClient。

2、重写其中的onPageFinished(WebView view, String url)方法,在WebView加载完成后调用这个方法,执行你想要的操作。

3、通过webView.setWebViewClient(new MyWebViewClient())将自定义的WebViewClient绑定到WebView上。

WebView使用教程

如果需要监控加载进度,还需创建一个自定义的WebChromeClient类,并重写onProgressChanged方法,再

WebView使用教程

布局文件如下:

WebView使用教程

需要注意的是,WebView的一系列用法,比如 webView.getSettings().setJavaScriptEnabled(true); 设置JavaScript可用;

WebView使用教程

具体参考API文档。

进度条的使用是在创建WebChromeClient后,在内部类中编写 onProgressChanged 事件。

总结:在WebView的设计中,并不是所有任务都要由WebView类单独处理,有些任务会分发给其他组件,这样WebView就能专注于解析和渲染网页。
WebViewClient帮助WebView处理各种通知和请求事件,包括:

onLoadResource

onPageStart

onPageFinish

onReceiveError

onProgressChanged

onReceivedIcon

onReceivedTitle

onReceivedHttpAuthRequest

WebChromeClient则协助WebView处理JavaScript弹窗、网站图标、标题、加载进度等。

onCloseWindow(关闭WebView)

onCreateWindow()

onJsAlert (WebView上的alert无法直接显示,需定制WebChromeClient处理)

onJsPrompt

onJsConfirm

Android WebView的具体实现与Chromium渲染引擎启动过程

以Android 8.0的源码为例,先找到WebView的真正构造函数:

WebView使用教程

该构造函数会调用另一个成员函数ensureProviderCreated()以确保Chromium动态库已经加载。在Chromium动态库已经加载的情况下,WebView类的成员函数ensureProviderCreated还会创建一个WebViewProvider对象,并保存在成员变量mProvider中。这个WebViewProvider实际上是真正实现WebView功能的关键角色。上述Android WebView的主要功能基本都通过mProvider实现,例如loadUrl(String url)等方法。

WebView使用教程

有了这个mProvider之后,WebView类的构造函数会继续调用mProvider.init(javaScriptInterfaces, privatepowsing)启动网页渲染引擎。对于基于Chromium实现的WebView来说,它使用的WebViewProvider是一个WebViewChromium对象。当这个WebViewChromium对象的成员函数init被调用时,就会启动Chromium的网页渲染引擎。

接下来我们看看ensureProviderCreated的实现:

WebView使用教程

WebView类的成员函数ensureProviderCreated首先调用checkThread确保它是在WebView的创建线程中调用的,接着判断成员变量mProvider是否为null。如果为null,说明尚未创建过WebViewProvider。此时,它会调用getFactory获得一个WebViewFactory,然后调用createWebView创建一个WebViewProvider。

接下来我们分析getFactory()方法及其实现:

WebView使用教程

getFactory返回的WebViewFactory是通过调用WebViewFactory类的静态方法getProvider获得的。getProvider首先检查静态成员变量sProviderInstance是否为null。如果是,说明当前App进程尚未加载过Chromium动态库。此时需要加载Chromium动态库,并创建一个WebViewFactory,保存在静态成员变量sProviderInstance中。接下来我们分析Chromium动态库的加载过程,以及WebViewFactory的创建过程。

加载Chromium动态库是通过调用WebViewFactory类的静态方法loadNativeLipary实现的:

WebView使用教程

loadNativeLipary首先调用getWebViewNativeLiparyPaths获得要加载的Chromium动态库路径,然后调用nativeLoadWithRelroFile对它进行加载。加载时,会指定一个Chromium GNURELRO Section文件。这个Chromium GNURELRO Section文件是在系统启动时通过临时进程生成的。静态方法nativeLoadWithRelroFile是一个JNI方法,由C++层的LoadWithRelroFile实现:

WebView使用教程

LoadWithRelroFile判断自己是32位还是64位,然后从lib32和lib64中选择对应的Chromium动态库进行加载。

这一加载过程是通过调用DoLoadWithRelroFile实现的:

WebView使用教程

DoLoadWithRelroFile的实现是通过Linker导出的androiddlopenext函数,在Zygote进程中保留的地址空间中加载Chromium动态库。注意,App进程是通过Zygote进程fork出来的,因此也会获得Zygote进程预留的地址空间。不过,DoLoadWithRelroFile会告诉androiddlopenext在加载Chromium动态库时,将relro描述的Chromium GNURELRO Section文件映射到内存,并代替已加载的Chromium动态库的GNURELRO Section。这是通过设置ANDROIDDLEXTUSERELRO标志实现的。之所以可以这样做,是因为relro描述的Chromium GNURELRO Section文件对应的Chromium动态库的加载地址与当前App进程加载的Chromium动态库的地址一致。只要两个相同的动态库在不同进程中的加载地址一致,它们的链接和重定位信息就完全相同,因此可以通过文件内存映射的方式进行共享。这样就能节省内存。

完成这一步后,App进程就加载了Chromium动态库。回到前面分析的WebViewFactory类的静态方法getProvider,它接下来继续创建一个WebViewFactory。这个WebViewFactory以后可以用来创建WebViewProvider。

WebViewFactory类的静态方法getFactoryClass首先确定要创建的WebViewFactory类型。这个类型是通过调用另一个静态方法getFactoryClass获得的:

WebView使用教程

可以看到,WebViewFactory类的静态方法getFactoryClass返回的WebViewFactory类型为com.android.webview.chromium.WebViewChromiumFactoryProviderForO。这个类由前面提到的WebView Package提供。这意味着WebViewFactory类的静态方法getProvider创建的WebViewFactory是一个WebViewChromiumFactoryProvider对象:

WebView使用教程

WebViewChromiumFactoryProvider类的构造函数会调用AwpowserProcess类的静态方法loadLipary对前面加载的Chromium动态库进行初始化:

WebView使用教程

AwpowserProcess类的静态方法loadLipary又调用LiparyLoader类的静态方法loadNow对前面加载的Chromium动态库进行初始化:

WebView使用教程

LiparyLoader类的静态方法loadNow又调用另一个重载版本的静态方法loadNow对前面加载的Chromium动态库进行初始化:

WebView使用教程

LiparyLoader类的重载版本静态方法loadAlreadyLocked又调用另一个静态方法loadAlreadyLocked对前面加载的Chromium动态库进行初始化:

WebView使用教程

并非所有系统都支持在加载动态库时,通过文件内存映射的方式替换其GNURELRO Section,因此Chromium提供了自己的Linker。通过这个Linker加载动态库时,能够以文件内存映射的方式替代要加载的动态库的GNURELRO Section,也就是实现前面提到的androiddlopenext的功能。在Android 5.0及以上版本中,由于系统已经提供了androiddlopenext函数,Chromium不再使用自己的Linker,而是使用系统提供的Linker来加载动态库。通过调用System类的静态方法loadLipary即可使用系统提供的Linker加载动态库。LiparyLoader类的静态方法loadAlreadyLocked要加载的动态库由NativeLiparies类的静态变量LIpARIES指定:

WebView使用教程

从这里可以看出,LiparyLoader类的静态方法loadAlreadyLocked要加载的动态库就是Chromium动态库。这个Chromium动态库已经被加载过了,因此再次调用System类的静态方法loadLipary加载时,只会触发其导出的JNIOnLoad函数被调用,而不会重新加载。当Chromium动态库的JNIOnLoad函数被调用时,Chromium动态库就会执行初始化工作:

WebView使用教程

其中一个初始化操作是为Chromium的Content层设置一个类型为AwMainDelegate的Main Delegate。这个AwMainDelegate实现在Chromium的androidwebview模块中。Android WebView通过Chromium的androidwebview模块加载和渲染网页。Chromium加载和渲染网页的功能由Content层实现,因此,Chromium的androidwebview模块需要通过Content层实现加载和渲染功能。这样,Chromium的androidwebview模块就可以设置一个Main Delegate给Content层,以便两者可以互相通信。设置Main Delegate是通过调用SetContentMainDelegate函数实现的:

WebView使用教程

从之前的分析可知,参数delegate指向的是一个AwMainDelegate对象,这个对象会被SetContentMainDelegate保存在全局变量gcontentmain_delegate中。这一步完成后,Chromium动态库就在App进程中加载完毕,并完成了初始化工作。与此同时,系统也为App进程创建了一个类型为WebViewChromiumFactoryProvider的WebViewFactory。回到前面分析的WebView类的成员函数ensureProviderCreated中,此时它会通过调用该类型为WebViewChromiumFactoryProvider的WebViewFactory的成员函数createWebView为当前创建的WebView创建一个WebView Provider:

WebView使用教程

WebViewChromiumFactoryProvider类的成员函数createWebView创建的是一个类型为WebViewChromium的WebView Provider。这个WebView Provider将会返回给WebView类的成员函数ensureProviderCreated。WebView类的成员函数ensureProviderCreated再将该WebView Provider保存在成员变量mProvider中。这样,正在创建的WebView就获得了一个类型为WebViewChromium的WebView Provider。之后,通过这个WebView Provider,就可以通过Chromium来加载和渲染网页了。

应用亮点

可快速展示网页内容的工具

持续更新该组件

Android生态系统的重要组成部分,但不能作为常规应用使用

用于在Android应用中打开网页

默认情况下已预装在多数Android系统中

关于我们

WebView全称Android System WebView,是Google LLC提供的一个预装系统组件,采用接入式操作体验,可及时优化网页数据,帮助用户快速访问浏览器的历史记录、书签、音乐等内容。此外,WebView的一大优势是具备智能导航语音功能,满足用户的多样化需求。它用于支持系统层面的页面插件工具,是安卓系统的重要组成部分,可用于展示网络请求后的数据,即手机App可通过它显示网页,而无需依赖独立的浏览器。

需要网络免费无需谷歌市场
展开

应用截图

  • android system webview最新版本
  • android system webview最新版本
  • android system webview最新版本
  • android system webview最新版本

相关应用

推荐专题

  • 手游排行榜
  • 手游新品榜