我从android平板电脑上的应用程序商店下载并安装了最新版本的android系统WebView(运行5.0.2)。
但是,应用程序仍然使用旧的Webview版本(39.0.0.0)。
如何让他们切换?
有关信息,我尝试禁用旧版本,并在打开使用Webview的应用程序时将其重新启用。
我从android平板电脑上的应用程序商店下载并安装了最新版本的android系统WebView(运行5.0.2)。
但是,应用程序仍然使用旧的Webview版本(39.0.0.0)。
如何让他们切换?
有关信息,我尝试禁用旧版本,并在打开使用Webview的应用程序时将其重新启用。
Answers:
如果没有root用户,则无法更改此设置。
系统框架经过硬编码,可以为请求WebView组件的应用程序使用特定的程序包。默认情况下(在AOSP中),它使用value com.android.webview
,这是在AOSP构建过程中编译的版本。在制造商修改此组件的设备上,程序包名称可能有所不同。无论如何,为了替换设备随附的WebView,您必须将此值修改为com.google.android.webview
。
“手动”执行此操作的方法是从设备中提取framework-res.apk文件,对其进行反编译,然后更改config_webViewPackageName
资源变量的值。它应该位于/res/values/strings.xml
.apk中。完成此操作后,您将需要重新打包所有内容并将新的.apk推送到设备上,以替换旧的.apk。
您可以尝试的另一种方法是安装Xposed框架,然后使用WebViewGoogle模块。如果您使用自定义ROM,则还可以找到一个可以永久修改必要框架组件的程序包(或者默认情况下,可以使用Google的WebView构建该程序包)。
我的假设是存在此限制,部分原因是系统依赖于以某种形式存在的WebView实现,因此如果用户可以对其进行修改,则可能会以奇怪的方式破坏系统。允许应用覆盖系统WebView也会带来安全隐患,例如行为不当的人试图在用户不知情的情况下提供恶意的内容。
需要进一步说明的是:Play商店中首先提供System WebView的原因是Nexus设备(可能还有其他设备)已预先安装并配置为可以使用。实际上,这些设备就是系统WebView。因此,Google能够通过Play商店为这些设备提供WebView更新,这样就不必为了更新浏览器/ WebView而需要完整的系统OTA。Google还以类似的方式将其他组件迁移到Play商店更新,其理由实质上是它更快。电话和通讯录是最近的两种,链接的文章提供了有关Google为什么采用这种方法的更多详细信息。