在安卓7系统里,一般内置的浏览器内核为很低版本,如52.0.2743.100。导致前端的新语法不支持,如ES6的语法最基本的 async,媲美老 IE 的环境。
在设置 - 应用 - 显示系统应用里面看到有 Android System WebView 程序,但版本很低。开发者选项 - WebView 实现中,一般只有一个 Android WebView,包名为 com.android.webview。
那我们能不能自己安装一个 WebView,然后在 WebView 实现里面设置?实测不行,就算安装成功,也不会新安装的 WebView 选项。
下面开始升级教程,前提:ROOT;推荐工具:MT管理器。
可以从在“酷安”里面搜索 WebView,之后在评论区找到老哥搬运的最新版本即可(向老哥致敬)。
或者在外网的镜像网站下载,如 Android System WebView APK Download (softpedia.com) 网站下载(龟速)。
我这里是直接使用 MT 文件管理器将 apk 稍微改一下文件名,之后放在 /system./app 目录下,改权限为 -rw-r–r–,之后重启。
重启之后,在 设置-应用-右上角“显示系统进程”,看有没有多出来新安装的 WebView 应用。
如果没有,可以尝试删除刚放在 /system./app 下的 WebView apk,之后按普通应用安装流程安装,之后用 钛备份 去转为系统应用。
可能直接安装为普通应用也行,我没试过,但是直觉告诉我应该行(狗头)。
附上我创建的仓库:Aken/Android-WebView (gitee.com),里面放了几个我搜刮来的新旧版本 WebView APK。
在 /system/framework 文件夹找到 framework-res.apk 文件
复制 framework-res.apk 文件到其他地方进行备份,以免翻车能替换回去。
点击 apk - 查看,进入 res/xml,找到 config_webview_packages.xml 打开,选择 反编译。

此时看到这个 xml 文件里,已经有一个 webviewprovider,里面包名就是系统内置的 webview,com.android.webview 是很旧的了,之后更新的 webview 已经改为 com.google.android.webview。
模仿现有的,增加以下代码:
description:自己定义一个名称,会显示在开发者选项 - WebView 实现里面。
packageName:为新安装的 WebView 程序的包名,现在新版本的都是 com.google.android.webview。
availableByDefault:直接设置新 WebView 为 true,默认使用。不过,实测设置了也没用,还是要到开发者选项设置后才行。所以这里 true / false 都行,但所有 webviewprovider 应该只存在一个 true。
<?xml version="1.0" encoding="utf-8"?>
<webviewproviders>
<webviewprovider
description="WebView103"
packageName="com.google.android.webview"
availableByDefault="true" />
<webviewprovider
description="Android WebView"
packageName="com.android.webview"
availableByDefault="false" />
</webviewproviders>
保存后,返回上一级,将提示文件已被修改,点击确定,不用勾选“自动签名”。
一层层返回到 /system/framework,会看到多出 framework-res.apk.bak(MT 管理器自己的备份) 和 已经修改好的 framework-res.apk。
重启设备。
一般在设置 - 关于,连续点击 系统版本号,就能触发隐藏的开发者选项。
在开发者选项中,在 WebView 实现里面可以看到刚刚新增的 WebView103,选中。
上面的网站都能看到当前的内核版本

在安卓9的系统中,自带的浏览器内核也不会太旧了,基本满足前端的语法。下面说说我升级的过程:
1、看到有朋友说可以在安装 WebView 后,直接用 ADB 去给 WebView 实现去增加新 WebView 的选择项,代码为:
adb shell settings put global webview_provider com.google.android.webview
但是我设置重启后,还是没效果。当然,这可能是我系统不行,你们可以先试一下这个方法。
可以用下面这个代码查看:
adb shell settings get global webview_provider
ps:我手动修改 framework-res.apk 之后,再 get 一下配置,得到的还是没有我新增的,但是在 WebView 实现里面已经有候选项了。
2、碰到安装失败的,可以用 MT管理器去 /system/app/webview 文件夹的 apk 文件看看自带的 WebView apk 包名,包名相同的,可能是签名问题,这个没 root 估计搞不了。
3、安卓开发的朋友,WebView 使用的时候一般不要设置软件加速,除非碰到一些显示的问题。软件加速在我测试的时候,web 页面的动画掉帧。。默认就是硬件加速的了,不用手动去设置就行了。
// 设置为软件加速
setLayerType(View.LAYER_TYPE_SOFTWARE, null)
4、WebView 104 版本貌似最低要安卓10才能安装了,所以要注意一下安卓版本兼容的问题。
5、其他安卓版本也可以参考一下,思路应该差不多。
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
我正在尝试在Ruby中制作一个cli应用程序,它接受一个给定的数组,然后将其显示为一个列表,我可以使用箭头键浏览它。我觉得我已经在Ruby中看到一个库已经这样做了,但我记不起它的名字了。我正在尝试对soundcloud2000中的代码进行逆向工程做类似的事情,但他的代码与SoundcloudAPI的使用紧密耦合。我知道cursesgem,我正在考虑更抽象的东西。广告有没有人见过可以做到这一点的库或一些概念证明的Ruby代码可以做到这一点? 最佳答案 我不知道这是否是您正在寻找的,但也许您可以使用我的想法。由于我没有关于您要完成的工作
我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我正在尝试为我的iOS应用程序设置cocoapods但是当我执行命令时:sudogemupdate--system我收到错误消息:当前已安装最新版本。中止。当我进入cocoapods的下一步时:sudogeminstallcocoapods我在MacOS10.8.5上遇到错误:ERROR:Errorinstallingcocoapods:cocoapods-trunkrequiresRubyversion>=2.0.0.我在MacOS10.9.4上尝试了同样的操作,但出现错误:ERROR:Couldnotfindavalidgem'cocoapods'(>=0),hereiswhy:U
这太简单了,太荒谬了,我在任何地方都找不到关于它的任何信息,包括API文档和Rails源代码:我有一个:belongs_to关联,我开始理解当您没有关联时您在Controller中调用的正常模型方法与您有关联时调用的方法略有不同。例如,我的关联在创建Controller操作时运行良好:@user=current_user@building=Building.new(params[:building])respond_todo|format|if@user.buildings.create(params[:building])#etcetera但我找不到关于更新如何工作的文档:@user
升级到OSXYosemite后,我现有的pow.cx安装不起作用。升级到最新的pow.cx无效。通过事件监视器重新启动它也没有成功。 最佳答案 卸载(!)并重新安装解决了这个问题。curlget.pow.cx/uninstall.sh|shcurlget.pow.cx|sh 关于ruby-on-rails-OSXYosemite更新破坏了pow.cx,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q
我们在Ubuntu14.04和Gitlab9.3.7上运行,运行良好。我们正在尝试更新到Gitlabv9.3.8的最新安全补丁,但它给我们这个错误:Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension.currentdirectory:/home/git/gitlab/vendor/bundle/ruby/2.3.0/gems/re2-1.0.0/ext/re2/usr/local/bin/ruby-r./siteconf20170720-19622-15i0edf.rbextconf.rbcheckingformain(
我要下载http://foobar.com/song.mp3作为song.mp3,而不是让Chrome在其native中打开它浏览器中的播放器。我怎样才能做到这一点? 最佳答案 您只需要确保发送这些header:Content-Disposition:attachment;filename=song.mp3;Content-Type:application/octet-streamContent-Transfer-Encoding:binarysend_file方法为您完成:get'/:file'do|file|file=File.