一. 前言
1.1 安卓根目录的混乱现象
每一次打开文件管理去寻找你所想要的文件,或是在聊天软件给朋友发送文件,总会看到目录里有着大量莫名奇妙的文件夹。一是不方便找到目标文件所在,二是对于强迫症挺不舒服的。
优化前的根目录,充斥着各种文件夹
造成这种现象,主要是国内软件厂商不遵守开发规范导致。根据安卓规范,在 Android/data/包名
路径应该保存对应应用的数据文件,Android/obb/包名
路径应该保存对应应用的数据包文件。这两个文件夹是用户不应该去访问的,因此安卓11的新规范禁止系统(仅对于定制UI)的文件管理直接访问。如果介意(例如MIUI的默认文件管理)访问受限,可以安装相应的旧版本。
1.2 安卓11的新限制
如图所示,MIUI的文件管理在一次升级中已经不在允许访问,点击前往查看将会跳转安卓原生的文件管理。
应用应该将自身数据保存在Android文件夹内部,将用户数据按照分类保存在标准文件夹,但是国内应用大部分不会遵循开发规范,便造成了安卓根目录混乱的现状。
1.3 某些应用开发者的错误理解
很多应用开发者为了适配安卓11的要求,做出了很多令人迷惑的行为。这里以腾讯的令人迷惑的操作举例。在QQ 8.2.8版本之后,将用户的下载文件位置从根目录更改到了Android文件夹内部,同时也是自身的数据文件夹。这让用户去查看自己下载的文件时十分麻烦。而且QQ在根目录仍然有着许多未知用途的文件夹。
1.4 标准文件夹的示例(MIUI)
- DCIM 保存相机拍摄的照片和视频(MIUI在该文件夹还存储了截图和屏幕录制)
- Documents 保存文档
- Download 保存下载文件
- Fonts 保存字体文件(MIUI系统字体文件保存在主题文件夹中)
- Movie 保存视频文件
- Music 保存音频文件
- Pictures 保存图片文件
- 等等
对于不同的定制系统同时也有自己存放关键系统文件的文件夹,例如MIUI会在根目录建立一个MIUI文件夹,用来存放各种系统软件的缓存文件和数据。
1.5 解决方案
- 依靠安卓大版本更新更严格的文件访问策略,强制应用使用更高的targetAPI。
- 依靠定制系统完善文件访问限制功能,感觉最近Flyme和MIUI的沙盒已经有了雏形了。
- 依靠Rikka开发的存储空间隔离(原名存储重定向),这也是我写本文的目的。
二. 安装与配置
这款软件在酷安上即有下载,原名存储重定向,现名存储空间隔离。
在使用这款软件之前,你需要接受以下的要求
- 手机已经获取了root权限
- 愿意为这款软件支付一定的费用
- 有耐心
- 可以接受某些奇奇怪怪的问题
- 可以主动寻找问题的解决方法
2.1 本机的使用环境为
小米10 MIUI12.5 21.2.3 Simplicity官改
Magsik 21.4 App 22.0
2.2 模块介绍
在满足root的环境下,在Magsik模块安装页面,搜索riru关键字便可以看到riru系列模块
我们这里只安装两个模块
Riru V23.6
Riru - Enhanced mode for Storage Isolation V23.6
这里提醒一下,如果不安装Riru,而先去安装Riru - Enhanced mode for Storage Isolation,将会无法安装。所以请按照顺序安装模块。
2.3 下载软件
在酷安搜索存储空间隔离并下载
在Google Play搜索存储空间隔离并下载
这里我推荐从Google Play下载,在Play商店购买的该软件,使用同一个谷歌账号可以多设备使用。
目前软件的内购验证做的很完善,如果你是在Google Play下载,无需登录外网,直接点击恢复购买即可。
2.4 安装过程
下载完成后打开软件,便显示了软件的基本介绍
允许存储空间隔离获取Root权限,当出现提示成功时便可以进行下一步了。
如果出现问题,请按照以上步骤重新安装环境。
不过有的机型的确是有兼容问题。
到这一步,就已经安装完成了
2.5 备份文件
在这里,我会提供一份自己使用,基本没有错误的配置文件,你只需要在备份与还原里还原备份文件即可开始使用。
本配置文件的应用可能无法包含你所使用的应用,如果你想达到近乎完美的效果,请继续看下去。
本配置文件有的地方会有一些问题,你需要自行修改。
三. 原理解释以及详细配置
3.1 原理
在存储空间隔离的官网,我们可以找到一些我们所需要的内容
以下内容是对官网指南的部分摘录以及我自己的理解
公共文件夹
DCIM,Pictures,Download 等公共文件夹,用来保存用户的文件,允许应用在此根据需求新建文件夹来保存对应的文件。例如QQ应该将用户下载的文件保存在 Download/QQ
,而不是Android/data/包名
。
但是应用对于公共文件夹的访问应该是一次性的,有目的的。例如在QQ发送图片给好友,QQ在获取用户的允许后访问DCIM和Pictures文件夹,发送结束后系统应该收回访问权限。
数据文件夹
Android文件夹内部对于用户来说是不应该进行访问的,对于应用来说则是无需授权就能够访问,在此保存应用的数据和缓存。
遗憾的是,目前原生安卓对于存储权限的选项只有允许和拒绝,此外,国内存在的大量“坏应用”如果被拒绝授权将不会运行。
存储空间隔离便是为了解决这一乱象而开发,这里感谢Rikka大佬开发了这款应用,在一定程度上很好解决了以上问题。
一般来说,不规范的应用会在根目录创建各种各样的文件夹。在启用存储空间隔离之后,应用将会在Android/data/包名/sdcard
内保存文件。
优点如下
因为卸载应用时只会清理应用的数据文件夹,在对应用进行隔离后,卸载时下载文件和应用数据一并删除
系统统计应用占用空间大小仅会统计数据文件夹,在对应用进行隔离后,系统统计大小功能将会正常工作
3.2 使用教程
3.2.1 软件权限
对于MIUI用户,因为MIUI魔改了很多对于应用的控制权限,这里需要手动为存储空间隔离打开部分权限
在后台弹出界面
应用自启动以及省电策略
3.2.2 默认存储空间位置
在软件的设置 - 行为 - 默认隔离存储空间位置中,你有两种选择
- 保存在数据文件夹
- 保存在缓存文件夹
缓存文件夹有着和数据文件夹一样的特性,但是缓存文件夹可能被清理软件所清理。这里根据自己的需求吧。一般来说保存在数据文件夹即可。
3.2.3 可访问文件夹模板
然后回到上一级,在可访问文件夹模板中进行设置
在这里所设置的文件夹就是允许应用访问的公共文件夹
我在默认的基础上添加了对于Movie文件夹的访问
现在回到主页面,点击应用管理,就可以对应用进行单独设置
为了避免重定向系统应用带来各种各样的bug,我们先对第三方应用进行配置
3.3 根据需求配置
白描是一款特别好用的OCR识别和PDF导出应用,这里我们拿它来讲解如何对一款应用重定向。
3.3.1 需求考虑
我们应该考虑,这款应用会获取什么信息,因为我常常用它将图片转成PDF格式,所以DCIM(拍摄的图片)和Pictures(下载的图片)是可访问的文件夹。所以说我们对白描设置可访问文件夹为DCIM和Pictures。
3.3.2 模拟正常使用过程
使用白描正常导出一次PDF,在查看文件历史里可以看到PDF保存在Download/Baimiao中。因为我希望保存在Document/白描,所以我们打开白描的Download访问权限(刚才是白描试图访问Download,但是被定向到了数据文件夹内部的Download),重新保存一次PDF,这时白描就会创建此文件夹。
3.3.3 将隔离的文件同步到标准文件夹
在导出被隔离的文件中添加同步文件夹规则,来源路径选择Download(新版存储空间隔离导出时会将该应用在目录内的全部文件进行同步)
3.3.4 检查结果
可以看到PDF文件成功保存到指定位置
这里很多使用者都会有一个误区-既然我要把文件保存到Documents目录,那么为什么不把Documents设置为可访问的文件夹呢?其实很好解释,你把可访问的文件夹当做读取权限,把导出被隔离的文件当作写入权限,这样就明白了吧。
但是有些应用是很规范的,他们保存在标准文件夹,所以你应该允许该应用访问。
3.4 应用之间互相访问
用过存储重定向的老用户都应该遇到过哔哩哔哩的视频分享到QQ,会出现系统繁忙的提示,就算偶尔可能分享成功,视频的封面也不见了。
这是因为哔哩哔哩老版本在根目录的tv.danmuku.bili存放自己的图片缓存,而对哔哩哔哩和QQ进行隔离后,QQ是访问不到这个文件夹的,就造成了分享失败的问题。
目前这个问题貌似得到了解决,哔哩哔哩在某一个版本对缓存文件的位置做了更改,移动到了数据文件夹,这是一个可能的原因。此外还可能因为哔哩哔哩的分享在QQ上被改为了小程序分享,分享短链接包含了封面地址,所以分享成功进行。
因为目前我并没有遇到该问题,所以希望各位可以在评论区反馈你们的使用情况,我会抽时间测试一下对应的软件版本。
好了,最近遇到了这一问题。同时也讲一下解决方案。同类问题都可以按照此思路解决。
哔哩哔哩的视频想要分享到QQ(空间,联系人等),QQ需要读取哔哩哔哩的封面缓存信息,而因为存储重定向的缘故,QQ无法对你允许访问文件夹之外的内容进行读取和写入操作,这就导致了分享的失败。所以为了解决这一问题,首先通过文件历史找到正常情况下哔哩哔哩的缓存保存位置。最新版缓存保存位置在 Android/data/tv.danmaku.bili/files/Images
。然后在QQ可访问的文件夹,在其他应用的文件夹中创建新的规则。
如下图所示。
四. 最终的清理
按照以上的例子,对用户应用一一设置。设置完成之后,删除除了标准文件夹的所有冗余文件,正常使用一段时间,你会发现根目录仍然会有一些文件夹,这时候就需要精准定位。
如上图所示,比如说我们想知道com.miui.voiceassist
其实很明显,是小爱同学,但请假装不知道是由哪一个应用创建。
我们将文件夹名复制,在文件监视中粘贴。
然后就会显示有那些应用对该文件夹进行读取或者是写入。
不过我们要清楚读取和写入的区别,比如说这里显示了媒体存储设备对该文件夹的访问,而我们了解一点相关内容便可以知道个该软件是在扫描各个文件夹来查找媒体文件,并没有进行写入,所以文件夹不是由它创建。
向下拉便可以找到小爱同学的文件访问记录。
现在点击小爱同学,对其进行隔离。
五. 或许会更完美
5.1 解决下载文件被某些应用存储在Android目录的问题
QQ这类将用户下载的文件保存在数据文件夹的应用
我采用的是Rikka开发的另一款应用-保存副本
当你在QQ下载文件之后,只需要在打开方式里选择保存副本,软件就可以在Download目录复制一份相同的文件。
六. 效果展示
这里我自己把Malody的谱面文件存在了Map文件夹。
miad这一个空文件是为了防止MIUI的应用开屏广告产生(直接卸载掉智能服务com.miui.systemAdSolution
即可。可以使用搞机助手进行卸载。一直用官改,不知道MIUI将广告服务集成在此应用里,感谢酷安@水水水淼的建议)
mm是Magsik的MM管理器
如果和文章开头对比一下,可以说是强迫症狂喜。
七. 写在最后
个人情况
我在寒假里策划了很多内容,从这一篇文章开始,我会逐渐向给各位展示我策划的优质内容。
新的开始
这算是一个新坑,目的就是向各位推荐一些优质的应用,他们真的可以方便你的生活。目前我的更新频率(如果没有什么意外的话基本就是一个月更新两次,一次是安卓上的应用,一次是PC上的应用),毕竟我刚进入大学,自己安排了很多学习的内容,时间并不是很充裕,保证质量是第一位(还有要填坑)。
欢迎交流
这些应用对于各位来说有的可能没用过,有的可能早就熟练上手。我希望我写的图文可以帮助小白零基础上手优质应用,从而提高效率。同时期待和各路大佬交流使用心得,不断完善文章内容和呈现形式。
在这里我也会虚心听取意见,无论是对图文内容的建议,或是对某些优质应用的推荐等等。