最近,QQ偷偷删图片一事闹得沸沸扬扬。有网友观察到,在EMUI手机ROM当中,会提示QQ试图删除图片。

QQ删除图片引争议?谈谈安卓存储目录的乱象-冯金伟博客园

QQ会偷偷删图片?只是一场误会

但真相真的如此吗?当然不是。腾讯和华为很快就进行了回应,表明QQ删除的是缓存文件,并非是用户手动保存的图片,QQ并不会对特定图片采取删除措施。而这个误会,是由于QQ未遵循安卓规范、导致缓存图片被误判为普通图片引起的。

QQ删除图片引争议?谈谈安卓存储目录的乱象-冯金伟博客园

QQ官方回应,删除的只是缓存图片

实际上,除了QQ外,安卓APP不规范使用安卓存储已经司空见惯。我们经常可以观察到安卓相册中满布莫名其妙的图片,或者安卓存储目录到处是乱七八糟的文件夹。为什么会变成这样子呢?今天就来说说安卓目录的乱象吧。

安卓相册为何乱糟糟?QQ被误会的根本原因

正如QQ删除图片引起的误会一样,安卓存储目录的乱象也是由于APP的不规范行为引起的。先来说说安卓对图片存储方面的规范吧。

安卓相册之中,之所以会出现各类杂乱图片,是因为安卓会对存储目录进行扫描,并将扫描到的图片们都在相册当中显示。很多用户认为,这个机制不尽合理,因为扫描全盘图片会令APP的缓存例如杂七杂八的、头像广告图,都被扫描到相册中显示。然而,安卓其实早已经想到了这点,相册混乱的锅安卓还真不该背。

QQ删除图片引争议?谈谈安卓存储目录的乱象-冯金伟博客园

安卓相册为什么经常有乱七八糟的图?

在安卓的规范当中,如果某个目录的图片不想被相册扫描到,可以在目录当中生成一个.nomedia文件,标明这个目录中不存在媒体文件,图片就不会在相册中被显示出来。然而,很多APP都没有去做这一步,这就导致安卓相册被加了很多料。

本次QQ被提示试图删除图片,也是因为如此。QQ并没有在缓存图片的文件夹中添加.nomedia,这导致EMUI将QQ缓存图片识别为普通图片,QQ自动清理缓存时,自然也会被EMUI提示有删除图片的行为。

换言之,只要QQ按照安卓规范,在缓存目录中添加.nomedia文件,就不会产生这个问题。

乱七八糟的安卓存储目录有救吗?

安卓混乱是不只有相册,文件目录也是一团糟。

和iOS相比,安卓的一大便利之处在于更为开放的文件系统,用户可以在安卓机的存储目录下随意读写文件。但是,这也带来了问题,不少人发现,安卓机用久了以后,存储目录下就会多出很多奇奇怪怪的文件夹,这到底是哪来的呢?

QQ删除图片引争议?谈谈安卓存储目录的乱象-冯金伟博客园

安卓存储目录各种杂乱的文件夹哪来的呢?

这些文件夹其实是由各类APP创建的,不少APP会在安卓存储目录下生成自己要用到的目录。百花齐放下,安卓的存储目录变得越来越令人眼花缭乱。

然而,安卓并非对此坐视不理。实际上,安卓也有APP建立存储目录的规范,例如安卓系统规定APP如果要在内部存储空间建立文件夹,需要建立到/data/data/目录下,在外部存储空间则需要建立在/sdcard/Android/data/目录下。APP在这些目录创建文件夹有个好处,那就是当APP卸载的时候,相应的文件夹也会被删除,而不会像现在那样,APP卸载了,它创建的乱七八糟的文件夹依然存在,让人烦不胜烦。

为什么安卓APP会不遵循规范呢?这里面存在历史遗留问题。安卓机的内部存储目录一度非常小,例如经典的Milestone的ROM只有512M,需要用SD卡扩展存储空间,因此安卓APP往往会将文件保存在外部存储目录下(也就是sdcard目录)。而安卓在4.3版本前并没有提供外部存储目录的规范,APP习惯在sdcard目录中随意建立自己的文件夹,这个习惯一直保留到如今。

现在,尽管安卓建立了sdcard目录的存储规范,然而这一规范并非是强制性的。很多APP由于使用第三方SDK等各种各样的原因,视安卓的存储目录规范不见,依然在sdcard目录下自建文件夹,安卓存储目录的混乱由此而来。

不过,在新版的安卓系统中,这个现象有望得到改观。在安卓9和安卓10中,安卓开始限制APP创建的文件夹;到了安卓11,系统将不再允许APP在sdcard建目录和文件,APP只能够往特定目录的私人文件夹写入数据。目前某些APP已经开始为此做准备,例如新版QQ将存储目录从/sdcard/tencent/变更到了/sdcard/Android/data/com.tencent.mobileqq/Tencent/,就是为了适应安卓的存储新机制。

总结

总的来说,当前安卓的存储目录依然是比较混乱的,但随着安卓11的发布,这个现象有望得到改善。并不是所有的安卓机都能够用上安卓11,也希望各类APP尽快抛弃历史包裹,规范自己的存储目录,带来更少的垃圾文件,也避免“偷删图片”这类误会发生。