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


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

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

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

|安卓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的重要原因 。