存储重定向——给患有强迫症的完美主义者
本文最近更新于 2019 年 6 月 10 日「 星期一 」
你的存储空间是什么样子的?
Android 应用的数据主要储存在两个地方,应用“私有文件夹”和“内置存储空间”。日常生活中,通常我们不会去使用前者,后者往往则是我们打开文件管理器的默认目录,而且任何拥有存储权限的应用都可以在此读写文件。
理想情况下,所有 App,尤其是第三方 App, 只要分门别类地把文件存放在相应的文件夹,例如 Music
,Pictures
,Documents
,Download
等,内部存储空间就会井井有条。
实际情况是,不少应用借助用户授予的存储权限,肆意在内部存储空间建立自己的文件夹,我们的存储空间可能是这样的:
截图出自酷安网友:木已呈舟
解决方法
由 Xingchen & Rikka 开发的「存储重定向」正是为解决以上问题。尽管在 Google Play 上面该应用仍为测试版,但稳定性已相当可靠,结合大量网友共享的规则,上手也非常容易。
经过一番设置和整理后的存储空间是这样:
截图出自酷安网友:木已呈舟
清晰工整的目录结构便于查看检索,有助于使用效率。对小编而言,借助 FolderSync 定期同步指定的几个目录(例如 Download
,Documents
等)就完成了手机的整机重要数据备份,实在是方便极了。
设计
(以下介绍大量引用开发者 RikkaW 的原文——技术细节)
应用只会建立 /data/misc/storage_redirect
文件夹用于存放可执行文件及配置文件。
启动时,会运行两个进程,storage_redirect 和 storage_redirect_server。storage_redirect 负责核心功能;storage_redirect_server 会添加一个服务到 ServiceManager,负责与存储重定向应用通信。
采用存储空间隔离的方式实现重定向。在应用进程建立后,进入应用进程的挂载命名空间进行一系列的绑定挂载。
比如会挂载 /mnt/runtime/write/emulated/0/Android/data/com.example/sdcard
至 /storage/emulated/0
,那么对于应用进程,/storage/emulated/0
实际就是 /storage/emulated/0/Android/data/com.example/sdcard
。
对“可访问文件夹”中设置的各种规则,本质就是追加了更多绑定挂载。另外,无论怎么设置,默认会至少会挂载 Android/data/com.example
,Android/media/com.example
,Android/obb/com.example
到 Android/data/com.example/sdcard
中。
借助 inotify 与硬链接实现“同步文件夹”。另外,inotify 似乎并不能正确监控到文件被移走/移入,所以只有建立和删除可以被正确处理。
简单来说:应用本身没有多余的权限;除了核心重定向功能之外,另有“可访问文件夹”以支持被隔离应用的正常运行和使用,例如导入(input)图片等,“同步文件夹”则可以帮助我们存储和“传送”应用输出(output)。
使用过程中,可以在相关设置处直接查看“使用帮助”,方便上手。
另外应用还很贴心的加入了在线规则,支持集纳网友的使用经验供其他用户参考。
安装
下载应用安装后为试用版本,可以重定向 3 个应用。
下载地址:
推荐使用「增强模式」(需要 Magisk 和 Riru - Core)实现最为完整的重定向体验,如「修复应用间交互问题」「提前生效」「保证抢先生效」和「文件监控」等等。
使用
首先以微信为例,点击“启用存储空间隔离(重定向)”右侧开关开启微信重定向。
在“可访问的文件夹”中选择“来自共享存储空间的文件夹”。
如果使用了「微X模块」1,可以通过“自定义”选择它在共享存储空间生成的 WechatXposed
和其他需要的文件夹(根据个人情况)。
使用微信过程中,我们会保存照片、视频、文件等,“应用保存文件行为”设置可以帮助我们把保存的内容重定向到指定的共享存储空间。
设置好以后,开启微信即生效。
注意:截至本文发布时的 1.6.12 版本 如果已经在存储空间生成了 Tencent
文件夹,则说明在开启重定向之前运行过微信,这样在开启重定向以后需要手动删除存储空间的 Tencent
文件夹。
对于 Blocker2 类的应用设计,其“应用保存文件行为”包含子文件夹,所以在定义规则时,不要忘记勾选“包含子文件夹”选项。
对于 INKredible 类的应用设计,以 INKredible PRO 1.1.1 版本 为例,应用会在共享存储空间生成 /INKredible PRO/Documents
作为工作目录,在应用启动和使用时读取和修改该目录。应用本身并没有自定义工作目录的设置,类似的应用不建议开启存储重定向。
注意事项
相关链接
扩展阅读
麦子(Jason),没做过英语老师的印象大使不是合格的通信工程师。
戳「这里」约。
最近更新
留言互动