安卓11的新策略,却打了手游行业一个措手不及

不知不觉间,如今距离谷歌推出Android 11正式版已经过去了两个月的时间,而各大手机厂商也在紧锣密鼓地向自家用户推送这一全新版本的Android系统,包括一加的氢OS 11、OPPO的ColorOS 11、小米的MIUI 12稳定版等等一众基于Android 11的定制系统也纷至沓来。但随着越来越多用户开始用上Android 11,大家也发现了一些的问题。
且不提此前Android 11出现BUG,导致在全屏模式下遇到状态栏与某些应用程序窗口上部出现重叠的情况。最近,有的用户在更新到Android 11后发现,某些需要解压才能安装的软件会莫名其妙的出现解压失败的提示,比如说LOL手游、《NBA2K20》、《使命召唤》等,就会出现“解析程序包时出现问题”的弹窗。
并且有开发者向用户发布通知称,“暂时不要升级Android 11系统,因为Android 11对内存卡下的Android/obb与data文件夹实行封闭模式,一旦升级你的手机将无法下载解压带有数据包游戏,因为我们APP将无法获得权限访问这个目录,请大家知晓,暂时没有解决办法。”
那么,究竟是什么原因导致了这一问题的产生呢?这其实并不是类似此前Android 11导致APP全屏模式与导航栏冲突的BUG,而是Android 11改变了此前Android系统对于文件管理的规则后所导致的结果,并且这属于Android 11的一项升级更新。
事实上,Android的文件系统分为内部存储(internal storage)与外部存储(external storage),在Android 10这一版本前,Android端的应用在安装后,系统会自动在内部与外部存储区域分别建立这个应用的私有存储区域,即data/user/0/packageName和storage/emulated/0/android/data/packageName。当该应用被卸载时,这一区域的文件就会被删除。
显而易见,这种情况是开发者所不希望看到的,毕竟谁也不乐意见到自己的应用能够被轻易删除。因此绝大多数Android应用都会在外部存储的根目录创建自己的文件夹,这样做的好处就是当不断向该目录中存储文件时,应用本身的容量不会发生变化。同时当应用被卸载时,该目录下文件也不会被删除,有助于下次重新安装应用时的用户体验。
然而这样的做法虽然开发者很开心,但用户显然是不太舒服的,因此这也就是谷歌在Android 10上推出分区存储(scoped storage)功能的原因。根据谷歌方面的说法,在分区存储推出后,“系统知道哪些文件属于哪些应用,这可以让用户更方便地管理他们的文件。当应用被卸载后,除非用户需要,否则应用之前所创建的文件也不应该保留在设备上”,以及“当一个应用将它所属的文件写入外部存储时,这些文件是不应该被其他应用所访问的。”
这也就意味着在分区存储的策略下,将仅为应用提供其所需的文件访问权限。应用只能在外部存储中访问自己的数据文件夹(位于/data/media/{user}/android),要访问音乐或照片等共享媒体文件,应用就必须通过MediaStore API向公共存储目录DCIM与Music等进行获取。而当应用需要获取其他非媒体文件,比如doc或pdf文件时,则需要使用系统的文件选择器SAF来进行访问。
简而言之,有了分区存储后,应用通过普通方式创建的文件会被收纳到对应的应用沙盒中,并无法写入真正的存储目录。应用也只能在外部存储中访问自己的数据文件夹(位于/data/media/{user}/android),要访问音乐或图像照片等共享媒体文件,应用必须请求用户给予特定于这些用途的权限。这其实就意味着分区存储能够让应用从此失去完全读写的权限,从而让“流氓APP”看不到不属于自己的文件。
但可惜的是,分区存储功能最终在Android 10上被谷歌去掉,直至Android 11才被重新拿了出来。其实个中的原因并不难猜,虽然分区存储对用户来说是件好事,可以让原本混乱的Android文件系统变得更整洁,但这种收紧应用权限的做法,也让开发者绝了偷窥其他应用资源的小九九,所以遭到开发者的反对也在情理之中。而这也正是开发者提示用户,不要升级Android 11的重要原因。
至于说类似手游升级包无法解压缩,其实就是分区存储的一个负外部性,其导致了类似《使命召唤》手游与LOL手游这样一些海外Android游戏,无法继续使用数据包(obb文件)的方式来完成升级。而这也是因为不同于国内市场已经非常成熟的数据包动态下载模式,海外市场的Android游戏当下啊通常还在沿用“古老”的obb模式。
obb其实是Android系统早期就标配的扩展资源文件分包格式,由于早期Android机型的内存较小,系统的性能表现也比较平庸,所以如果直接安装一个大型的APK,安装失败是大概率事件。同时Google Play为了确保社区的稳定性,当时也限制了APK包体需要小于50MB,并且直到2015年才将这一标准放宽到100MB。而obb文件就是FAT32格式,Android系统使用mount/unmount方式,将这个文件挂载/卸载成一个分区,当成一块小磁盘来对待,这样就确保了挂载能够被识别。
再加上谷歌的GMS服务提供了download service与后台静默下载功能,因此许多海外市场的大型手游往往会做成小安装包+大数据包的模式。但反观国内市场,由于缺少GMS服务,国内开发者很早就开始应用增量更新(差分升级),即通过某种算法找出新版本与旧版本不一样的地方,然后将不一样的地方抽取出来形成所谓的更新补丁(patch),而客户端在检测到需要更新的时候,会直接从服务器下载对应的补丁,然后将补丁合并至本地的安装包,形成新版本的安装包,在文件校验通过后执行安装即可,因此这就让国内的大型手游往往会有动辄以GB论的安装包。
如今谷歌在Android 11上限制应用对于外部存储的随意使用,就导致这些游戏不能将obb文件解压到共享的外部存储,也就是/android/obb之下。当然,根据谷歌方面的说法,这种情况其实并不是无解的,其在Android 11上还新增了一个针对文件管理应用的特殊权限“MANAGE_EXTERNAL_STORAGE”,该权限将授权读写所有共享存储内容,这也将同时包含非媒体类型的文件。
但由于此次疫情的影响,谷歌方面暗示自己的人力资源紧张,使得其对于“MANAGE_EXTERNAL_STORAGE”权限的审判要放到明年初来进行。换句话说,也就是其已经在暗示开发者放弃小APK+大数据包的模式。毕竟在如今5G网络已经全面铺开,以及WiFi网络几乎随处可见的情况下,效仿苹果App Store直接下载完整安装包已经被证实是可行的。如果未来开发者不能将自己的APP定义为文件管理类应用,数据包模式就将成为历史,因此也就使得Android游戏领域将被迫做出改变。
只是不知道这一回,海外开发者会不会向谷歌提出抗议了。
【本文图片来自网络】
推荐阅读:

公共场合静音成趋势,手机外放技术迎灭顶之灾?

尽管公共场合陆续开始禁止外放,但这一功能显然还有着不小的用途。

从免费到付费,360或试图从浏览器领域入手

互联网服务如今正处于免费到付费时代转变之时,360却在在浏览器上推出了付费服务。

(0)

相关推荐