上周,谷歌针对安卓版 Chrome 浏览器 79.0 版本中的一个错误问题而发布了修复补丁,该问题将导致某些安卓应用的用户数据丢失或被重置。
这个已知的错误问题,目前只会影响那些构建并运行于 WebView 之上的安卓应用,那些依赖于 WebView 组件的安卓应用可能将无法正常运行。 WebView 相当于是一个微缩版的 Chrome 浏览器。在安卓平台上,WebView 会被嵌入到其他的应用中,用于呈现 web 内容而无需显示完整的 Chrome 浏览器界面,并且还经常被当做一个容器,用来将 web 应用如同独立移动应用一样安装在安卓设备上。
![](https://oss.jqhtml.com/wp-content/uploads/2020/7/JRfiiq.jpeg)
Chrome 浏览器于本月中旬发布了全新的 79.0 版本,而出现上述问题的原因在于 Chrome 79.0.3945.79 版本更改了用户档案文件夹目录的位置。当用户将 Chrome 浏览器从 78 升级为 79 版本之后,由 AppCache、fileSystem、localStorage、IndexedDB、Service Workers、WebSQL 等 API 接口生成的用户数据,却仍被留在了之前的位置而不会被正确地移动到新目录中。
在最初的问题报告中,只提到来自 localStorage 和 WebSQL 的数据会受到影响,但实际上其他的 API 也受到了这一问题的困扰。而其他的存储区域,比如 cookies 和 sessionStorage 等并没有受到影响。
在这次更新之后,一些安卓平台的用户发现很多应用突然出现了不明原因的被重置、数据丢失以及无法登陆账号的问题。这些用户大都不知道这些出现问题的应用是运行于 Chrome/WebView 之上的,也并不清楚出现问题的真正原因是什么。许多受影响的用户在谷歌应用商店的评价中给了这些应用一星差评,而无辜躺枪的应用开发者们又跑去向谷歌官方抱怨,认为这次更新出现问题的责任并不在他们这一边,他们不应该为此承担这样的结果。
实际上这些应用的数据并没有丢失,只是放错了位置。Chrome 开发团队利用周末加班的时间针对这一问题进行了干预,并关闭了 79.0 版本的升级入口,以防止更多安卓用户及应用中枪。
由于 Chrome 浏览器是分阶段对更新进行推送的,因此这项有问题的更新相对来说并未对太多的安卓用户造成影响。首轮更新原计划准备推送给大约 50% 的用户,而当更新入口关闭时,大约有不到 15% 的安卓用户进行了更新,这一数字实际比最初问题报告中提到的要小得多。
当这次更新的问题刚刚被爆出来时,Chrome 开发团队的工程师们实际上并不能确定他们忘记转移的旧版本用户数据是否还存在于用户的设备上,他们非常担心用户数据在更新的过程中被彻底、永久地删除了。但在进一步的调查之后,开发团队发现用户数据仍然是完整的,于是紧急开发了修复补丁以便在一周时间内帮助所有受影响的用户恢复数据。
谷歌从上周开始向用户推送最新的安卓版 Chrome 79.0.3945.93 版本,这一版修复更新将会修正上一版本中出现的数据错误问题。此外,安卓设备上的 WebView 组件也将与这一修正版 Chrome 同步进行更新,以便修复那些受影响的应用,并彻底消除所有的隐患。
谷歌官方表示,最新的修复补丁将帮助安卓用户重新获取此前丢失的应用数据,所有受此问题困扰的网站站长及应用开发者不需要进行任何额外的操作,只需要等待官方的推送并进行更新即可解决所有问题。
原文地址:https://segmentfault.com/a/1190000021425448