医院订阅哦!
AndroidM开始,就在不断完善的权限管理机制,意在限制应用权限,以及让应用依照规范合理运行。然而有些应用在无权限时相安无事,一旦授予了权限就蹬着鼻子上脸,全然不在乎什么规范。
本篇图文就挑选一些典例与反例进行详细分析。
开篇放一张我的存储根目录截图
存储规范解释
01
安卓的存储根目录
一个存储根目录分为几个系统自动生成文件夹:Android,DCIM,Documents,Download,Music,Pictures。这些文件夹作用如图:
存储规范解释
还有一些不是由系统建立,但因某些功能可以合理使用的文件夹,如backups,TWRP等,存放重要数据,为防止意外删除也需要放在存储根目录。
以上目录除Android文件夹以外,都属于公开存储,需要授予存储空间权限才可以访问(关于公开存储的相关内容,可以看xxxxxx)。通常来说,应用拿到存储权限,就拥有了读取和写入双权限。这两个权限都存在滥用行为:-读取权限可以让应用在前、后台,扫描用户存储空间的所有变动(注意所有!)这个无法避免,完全看开发者人品。-写入权限则可以让应用在公开存储中,建立自己的文件或文件夹,存放自己的数据,或对设备打标识。
作恶应用
这些文件会在应用运行时自动生成,且无法随应用的卸载而删除,成为卸载残留,许多清理软件的残留清理,其实就是针对这些文件而设计了规则。
02
不规范存储的重灾区:SDK
说起存储的不规范,随意污染存储根目录,真的只是应用开发者故意损用户的体验吗?我想正常开发者应该不会这么做。冤有头债有主,到底是谁的不规范呢?曾经有开发者在论坛上吐槽开发问题:“辛苦开发应用,为追求极致,将应用的权限一项项筛选,能不用的绝不申请,这项工作费时费力。等到所有权限都挑拣了一遍,终于完工了,却发现不停的崩溃,是SDK的问题。原来是接入的SDK必须要权限,而且有很多,没有权限自然会崩溃。”以上这段话是我总结过的。
当时看着原话,我隔着屏幕都能感受到这位开发者的怨气。这是一个很现实的问题,不规范的SDK可以让你在应用开发上的努力白费。可以仔细观察一下,常用的那些应用,他们在根目录下生成的不规范文件夹,翻来覆去总是那几个,因为他们接入了相同的SDK。
下图是我收集的一些数据:
应用释放文件夹(部分)
从图中能看出,他们不是实现同一功能,甚至不是同一开发公司,但释放的文件却如此相似。这几个文件夹,有80%+智能手机用户都见过吧,因为这几个SDK的普及度实在太高了,随便一个下载量过w,且由商业公司开发的应用都接入了至少一个。
抓典例,细分析
以为例,这个应用会在根目录中留下十三个文件夹/文件
搜狗浏览器释放文件
第一个.cc文件夹,我没查到是什么SDK生成的。.DataStorage和.UTSystemConfig,是支付宝的SDK,算作阿里的。.um和.uxx,友盟广告联盟的,给用户的设备打标识。data和Image,均为不规范的缓存目录,无意义。mipush和Xiaomi,小米推送服务的SDK,算小米的。SogouExplorer,应用自己的开放小窝,放缓存、下载的文件。SogouReader,不明所以的文件夹,无意义。Tencent,拉起QQ、