谁污染了我的存储根目录!对Android存储规范最细致的解释。

从Android M开始,就在不断完善的权限管理机制,意在限制应用权限,以及让应用依照规范合理运行。然而有些应用在无权限时相安无事,一旦授予了权限就蹬着鼻子上脸,全然不在乎什么规范。本篇图文就挑选一些典例与反例进行详细分析。

开篇放一张(@Anm718)的存储根目录截图

规范根目录

首先来了解安卓的存储根目录的使用规范。一个存储根目录分为几个系统自动生成文件夹:Android,DCIM,Documents,Download,Music,Pictures。这些文件夹作用如图

存储规范解释

还有一些不是由系统建立,但因某些功能可以合理使用的文件夹,如backups,TWRP等,存放重要数据,为防止意外删除也需要放在存储根目录。

以上目录除Android文件夹以外,都属于公开存储,需要授予存储空间权限才可以访问(关于公开存储的相关内容,可以看我上一篇图文)。

通常来说,应用拿到存储权限,就拥有了读取和写入双权限。这两个权限都存在滥用行为:

-读取权限可以让应用在前、后台,扫描用户存储空间的所有变动(注意所有!)这个无法避免,完全看开发者人品。

-写入权限则可以让应用在公开存储中,建立自己的文件或文件夹,存放自己的数据,或对设备打标识

作恶应用

这些文件会在应用运行时自动生成,且无法随应用的卸载而删除,成为卸载残留,许多清理软件的残留清理,其实就是针对这些文件而设计了规则。

不规范存储的重灾区:SDK

说起存储的不规范,随意污染存储根目录,真的只是应用开发者故意损用户的体验吗?我想正常开发者应该不会这么做。冤有头债有主,到底是谁的不规范呢?

曾经有开发者在论坛上吐槽开发问题:“辛苦开发应用,为追求极致,将应用的权限一项项筛选,能不用的绝不申请,这项工作费时费力。等到所有权限都挑拣了一遍,终于完工了,却发现不停的崩溃,是SDK的问题。原来是接入的SDK必须要权限,而且有很多,没有权限自然会崩溃。” 以上这段话是我总结过的。当时看着原话,我隔着屏幕都能感受到这位开发者的怨气

这是一个很现实的问题,不规范的SDK可以让你在应用开发上的努力白费。可以仔细观察一下,常用的那些应用,他们在根目录下生成的不规范文件夹,翻来覆去总是那几个,因为他们接入了相同的SDK。下图是我收集的一些数据:

应用释放文件夹(部分

从图中能看出,他们不是实现同一功能,甚至不是同一开发公司,但释放的文件却如此相似。这几个文件夹,有80%+智能手机用户都见过吧,因为这几个SDK的普及度实在太高了,随便一个下载量过100w,且由商业公司开发的应用都接入了至少一个。

-----------

抓典例,细分析

以 【搜狗浏览器】 为例,这个应用会在根目录中留下十三个文件夹/文件

搜狗浏览器释放文件

第一个.cc文件夹,我没查到是什么SDK生成的。酷安也会生成,开发者能解答一下吗?

.DataStorage和.UTSystemConfig,是支付宝的SDK,算作阿里的。

.um和.uxx,友盟广告联盟的,给用户的设备打标识。

data和Image,均为不规范的缓存目录,无意义。

mipush和Xiaomi,小米推送服务的SDK,算小米的。

SogouExplorer,应用自己的开放小窝,放缓存、下载的文件。

SogouReader,不明所以的文件夹,无意义。

Tencent,拉起QQ、微信账号登录的SDK,算腾讯的。

--

这仅仅一个应用,就接入了多个不规范SDK,在根目录释放了十余个文件夹。虽说SDK生成文件夹难以避免,但应用自己在根目录造了个窝(SogouExplorer)是什么情况?这个总是很好解决的吧?

-----------

整理的一些SDK

对SDK大致分下类,可分为功能类、推送类、授权类。

-功能类,比如酷安接入的地图SDK,用来获取用户的位置,会生成amap文件夹。

-推送类,如小米推送服务,这是国内目前最完善的系统级推送服务,会生成mipush和Xiaomi文件夹。

-授权类,如腾讯授权SDK,搜狗浏览器支持QQ账号登录,生成Tencent文件夹。

搜狗浏览器登录界面

阿里的支付宝SDK,调用支付宝付款的应用都会生成.UTSystemConfig文件夹,调用外部服务,属授权类。

友盟广告联盟的SDK,这个接入的应用非常多,用作打标识收集用户信息并共享,便于推送广告,生成.um和.uxx文件夹。代表应用如今日头条。收集数据,属功能类。

-----------

如何解决问题

关于SDK的问题,出在开发者身上。首先要审核自己接入的SDK是否合格,如果有问题,能否找到替代品。

不要把有用没用的东西都接一遍。点名今日头条 【今日头条】 ,一个资讯类应用,为什么会产生阿里的文件夹?在应用中找了一圈,发现了这个界面:

头条钱包界面

。。。这是一个资讯应用该干的事🐴? 不要什么功能都往应用里塞啊喂!

这里不得不提及一个应用,纯纯写作 【纯纯写作 - 绝不丢失文本编辑器 & Markdown】 。这个软件有内购服务,会调用支付宝付款,生成两个不规范文件夹。有用户发现了这个问题,并在评论区向开发者反馈。开发者也及时响应,极短的时间内,就精准定位问题并解决掉了。原理是应用自身建立了一个重定向,将这两个文件夹重定向到了自己在Android下的私有目录。什么叫顶级开发者啊(战术后仰

纯纯重定向

开发者停止活跃,但号还没删,可以看他在3月10日的动态,介绍了这个问题与解决思路。这种解决问题的效率与开发技术强大的开发者,是鉴,值得每个开发者/开发团队学习。
尤其是疼讯,联系到人工客服比去西天见一面佛祖都难,即便能联系上也没实际解决过问题

---

如果是用户方面,我们虽然没有权利决定软件接入哪个SDK,但使用哪款软件是我们用户的自由。应用商店里,你不装我不下,五星分期,迟早倒闭

当然不给存储权限也是一个很好的方法。比如资讯类应用,浏览器应用,地图应用,一律禁止存储权限。如果你要说“存储重定向”这种工具也行,不过还是治标不治本,只是把文件放在你看不见的地方。

---

应用自身的不规范行为

虽SDK是存储重灾区,但绝不是问题根源,很多应用的不规范文件夹不仅限于SDK。有些应用在必要sdk 之外,还会为自己的需求建立额外的文件夹,比如前面提到的搜狗浏览器,它还建立了SogouExplorer存放缓存与下载的文件。这类文件夹没有共同特征,而且不是隐藏文件夹,这才是最不规范的存在。

-----------

当前重点应用举例

在根目录为所欲为的应用里面,浏览器类应用一狗当先的冲在前面。时下所有中国开发的商业化浏览器,或多或少都有建立自己文件夹在根目录下的情况,此现象称为造狗窝。

以夸克浏览器 【夸克-更好的搜索免广告】 举例,它会生成com.quark.browser和Quark,均为非隐藏文件夹,前一个意义不明,后一个会存放下载的文件。这纯粹就是找存在感,生成这东西有个🔨用?

-360浏览器 【360浏览器】 ,生成360,360Browser两个文件夹。

-360极速浏览器 【极速浏览器】 ,生成360 , 360LiteBrowser两个文件夹。

-QQ浏览器 【QQ浏览器-便捷管理手机文件】 ,生成Catfish,com.tencent.mtt,QQBrowser,tencent四个文件夹。

-UC浏览器 【UC浏览器】 ,生成UCDownload一个文件夹。

-百度浏览器 【百度浏览器】 ,生成backups,baidu,bdmsa_gr三个文件夹。

以上举例均为非隐藏文件夹,打开文件管理可直接看到的。这种行为是很过分的,毕竟隐藏文件夹可以屏蔽掉,但这种就真的很无奈。屏蔽了,就影响查找文件;不屏蔽又很混乱。

-----------

不规范保存的日志

应用运行时,总会将一些日志存储下来,以便上传分析。但日志存放的位置却是个问题。有些开发者在根目录下随意建个文件夹,将日志生成在里面。或许是开发者为了防止日志丢失,但不曾想过用户清理垃圾的时候,看见不认识的文件夹会直接删除吗?
还有一些神奇的操作,比如生成一个名为data、system之类的文件夹,让用户不敢乱删,其实里面就放了一些日志 这种玩法我挺服气的。

当下最常见的日志,是x5内核的调试日志。x5是一个浏览器内核,由腾讯开发,主要也用在腾讯应用上。调用x5内核的应用,会在根目录生成.tbs和tencent文件夹,例如

-Bmap 【Bmap 白马地图】 ,生成.tbs,backups,baidu,msc,QQBrowser,tencent六个文件夹。

我还真没想到,一个地图软件居然加了个x5内核。类似的软件还有如王者荣耀,是腾讯出的网络游戏,里面也自带一个x5内核。真的是要吐了,让本就不富裕的存储空间更加雪上加霜(划去) 又卡又难用,还会生成一些垃圾。如果有机会,我想写一篇测试这个内核的图文(但不是近期

---

关于360文件夹,据反馈说应用加固会产生文件。但经我测试了多个由360加固的应用,均无360的日志产生。若根目录有生成360的文件夹,请检查系统是否预装了手机管家一类应用,杀毒引擎使用了360的技术。

-----------

真正的恶臭应用!

我的键盘有点累,不想让我打字了。接下来,你们应该都知道我要说什么了吧

-QQ 【QQ】 ,生成隐藏文件夹.tbs,.turingdebug两个,生成非隐藏文件夹backup(注意结尾没有s),Catfish,com.tencent.mobileqq,mfcache,QQBrowser,tbs,tencent共七个。

我从07年注册的QQ号,这十几年来见证了疼讯的发展,十几年过去,时日境迁。它却是一如既往,初心未变。泪目,黑转黑了。

---

总结

总结一下,应用不规范存储分为:SDK需要、快乐小窝、日志存储。

当不良行为形成风气,便成为作恶者口中的理所当然,成为众人不规范的借口。单靠这些商业公司自觉是没用的,给他们的反馈也只是随口应付,然后石沉大海;若语气强硬的要求,便摆出一副“我系你哥哥”的态度,表示爱用不用。不过巧了,我还真不用

曾经Android Q上拥有过存储沙盒的特性,但在正式版上因应用适配严重问题,以及大量开发者的意见,而取消该特性。但如今看到Android R测试版的强制存储隔离机制,👴青回。虽然文件管理难度将巨幅增大,不过万事开头难,混乱的存储权限,或许会因这次Google的要求,而飞速完善吧。不愧是咕鸽,做到了那么多人做不到的事。

顺便多说几句,一些应用没有适配Android的规范,而是有自己的存储调用方案,导致这些应用运行在Android R上时,有关存储的功能彻底失效,无法修复,除非将目标API提升至R。我没别的意思,看这些厂商不爽我就很舒服。普天同庆,大快人心。

近期看到QQ、微信评论区,说对存储路径进行了修改,就去了解一下。结论就是:“疼讯你是来捣乱的吧?”这改了不如不改,感觉它是故意的。

---

从收集整理数据到写出图文均为我一人完成,文中列出的应用我都没使用过!!仅凭下载量或用户的评论判断是否值得测试。若出现数据误差,或有热门应用没测试到的,还望理解。

以上是本篇图文的全部内容。觉得我的图文对你有帮助,点赞、评论、收藏、转发素质四连,科普类文章需要你们的热度,才能让更多的人看到。

我还准备了亿点素材,会发布几篇图文,大家可以期待一下(你看我这严肃的表情,肯定不会鸽你的对吧🕊️

-----本图文禁止今日头条等任何营销媒体搬运。如要引用文中的句段,请注明原作者Anm718

本文全文转载自酷安@Anm718,仅做部分排版调整和必要修改

原文地址:https://www.coolapk.com/feed/18193335 (需使用酷安APP查看)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注