Storage Isolation is an app which provides isolated storage feature for apps. It can prevent poor-designed apps making your storage messy and let you control files app can access.
This module enables Enhanced mode for Storage Isolation app which includes some important features related to user experience.
You can learn more about Storage Isolation from https://sr.rikka.app/.
- Fix insert files with Media Storage to "external_primary" is not handled
- "Export isolated files" rules is now apply to the old "insert with Media Storage" way
- File monitor can record if
mkdir
andcreat
operations are successful (Requires app v6.1.3 to display the records) - Apps will wait for service restart so that they can be isolated correctly
- "The Media Storage part" works correctly on Android 12
- "The Media Storage part" works correctly for 💩 apps using "group by" injection in query
- File monitor records if the operation is from an isolated app
- Apps can no longer use non-accessible folders through Media Storage (before it can't handle the new method added from Android 10)
- File monitor can record the event of apps use Media Storage
- Redo "the Media Storage part" from scratch, having much better performance and compatibility than before
- Fix "Fix app interaction issues" not works on some devices (requires update app to v5.3.2 as well)
- Fix "Fix app interaction issues" not works after upgrading to Riru 25
- Changes for Riru 25
- Explicitly check child zygote
Child zygote (webview_zygote
and app_zygote
) has no permission to use binder (this modules uses binder). Before only mount_external != 0
is used for check, and child zygote do have mount_external = 0
set, so there is no problem.
However, recently there are two modules, riru-unshare
and Riru-IsolatedMagiskHider
that changes mount_external
for app_zygote
. So if you are using one of these modules with the older version of this module, it will finally cause the crash.
- Works on devices which has remove 32-bit support (Android 12 emulator and maybe new real devices in the future)
- Reduce file size
- Reduce file size
- Fix an undefined behavior
- Fix "Fix rename" can cause wrong behavior in some cases
- Same from v23.3 but ensure it really works
-
Attempt to workaround the problem that the required changes are reverted by something else
If you have this problem, you will find Storage Isolation "stop working" at a random time (few minutes or few hours after booting).
All reports are from Huawei users. The new method works for Android 8+.
- Works on pre-Android-8.0
- Read files with "rirud" (added from Riru v22.x) first
- Use binder for all IPC involving
untrusted_app
domain, SELinux policy patch is not required anymore 🎉 (For the module itself, everything are completely rewritten) - Adapt Riru v22
- Revert changes of v22.7 (because this will cause problem on devices with external SD card or highly modified system like MIUI, OxygenOS)
- Change mount mode to
MOUNT_EXTERNAL_DEFAULT
for isolated apps
- Fix app-level toggle of "Fix app interaction" not work
- Upgrade to Riru API 6 (because Android 11 DP3 changes again)
- Add
untrusted_app_29
insepolicy.rule
- Upgrade to Riru API 5
-
Fix service not starting on some devices
On these devices (yeah, it's you, Xiaomi, again and again) symlinks in
/data/misc
breaks after reboot
- Fix service not starting in rare cases
- Fix service "not starting" on some devices
- Adapt changes for "Shared User ID" support
- Adapt changes for "fix isolate early started apps may cause system not starting"
- Add missing sepolicy rule for Samsung
- Use customize.sh
- Add custom sepolicy rule file for Magisk v20.2+ (20110+)
- Add "Block system remount" option
- Switch cgroup for starter
- Verify important files on install
- Don't hardcode
HIDDEN_API_ENFORCEMENT_POLICY_MASK
value - Fix log is printed in zygote process
- Fix the problem that redirection not work for apps installed in external storage card when using Adoptable Storage
- Change the implementation of "Fix app interaction", no longer be break by "Xposed Taich", it may also solve some other problems
- "Fix app interaction" can be switched individually for each app
- Handle special system apps (appId > 19999 or appId < 10000, appId = uid % 100000)