Android 限制访问 data 目录 Shizuku 版的解决路径
问题的根源
Android 的 Android/data/ 目录是每个应用专属的数据存储区,其他应用无权访问。从 Android 11 开始,Google 通过以下措施收紧了访问限制:
- 分区存储(Scoped Storage) — 每个应用只能访问自己专属的存储区域
- SAF(Storage Access Framework) — 访问其他应用的 data 目录必须通过系统的文件选择器 UI,用户手动授权
- API 限制 —
FileAPI 无法直接跨应用访问 data 目录下的文件
这对 PUBG Tool 这类需要写入游戏配置文件的工具来说是致命的——它需要访问和平精英/PUBG MOBILE 的 data 目录下的配置文件,但系统不让它进。
为什么普通版不工作
PUBG Tool 基础版(免 Root 版)直接用 File API 访问游戏的配置文件路径。Android 10 及更早版本的系统还允许这种跨应用访问,所以基础版能工作。但 Android 11+ 的分区存储限制让基础版的 File API 请求被系统静默拒绝——文件操作不报错但也不生效。
用户的表现就是:用 PUBG Tool 设置好参数并保存,进游戏后什么都没变。
Shizuku 怎么绕过限制
Shizuku 的核心思路是:让 PUBG Tool 以 Shell 用户的身份运行。
在 Linux 系统里(Android 基于 Linux),Shell 用户具有访问绝大多数系统目录的权限——包括其他应用的 data 目录。问题在于,普通应用无法直接以 Shell 身份运行。Shizuku 通过以下方式获得 Shell 权限:
- 用户在电脑上通过 ADB 向手机发送一条命令
- 这条命令以 Shell 用户的身份在手机上执行
- 它启动一个本地服务(Shizuku 服务),授权指定应用(如 PUBG Tool)获得 Shell 级权限
- 之后 PUBG Tool 所有文件操作都通过这个 Shell 服务执行,绕过分区存储限制
整个过程不需要 Root——ADB 是 Android 官方提供的调试接口,任何开发者模式开启的设备都可以使用。
为什么手机重启后需要重新激活
通过 ADB 授予的 Shell 权限是临时的,只在当前系统运行周期内有效。手机重启后所有进程被清理,Shizuku 服务需要重新通过 ADB 启动才能恢复权限。
这是 Shizuku 方案的最大不便——每次开机玩游戏前要先连电脑激活一下。部分新用户会忘记这一步,然后发现 PUBG Tool 又不工作了。
无线调试方案
Android 11+ 提供了无线调试功能——在开发者选项里配对电脑和手机后,可以通过 Wi-Fi 执行 ADB 命令,不需要插 USB 线。这让 Shizuku 的激活门槛降低了一些,但仍然需要电脑参与(至少第一次配对需要)。
有没有更好的方案
目前社区里有类似 Shizuku 的替代方案:
- Bugjaeger — 功能更全,但同样需要 ADB 配对
- 无线 ADB 配对的快捷方式 — 部分自定义 ROM 或工具可以简化激活流程
但就"稳定性 + 无 Root + 兼容性"来说,Shizuku 是目前最成熟的方案。
PUBG Tool 为什么不做更简单的方案
PUBG Tool 基础版和 Shizuku 版是两个独立的 APK。为什么不做一个自动检测系统版本、自动选择路径的统一包?可能的原因:
- 两个版本的内部实现不同(Shell 服务调用和普通文件 API),强行合体会增加代码复杂度
- Shizuku 本身是外部依赖,用户如果没装 Shizuku 就用不了 Shizuku 版,不如基础版直接报错
- 保持两个独立包让用户清楚自己在走哪条路,减少混淆
总结
Google 的分区存储限制是 Android 生态的大方向,未来版本只会更严格不会更宽松。对画质工具来说,Shizuku(或类似的 Shell 权限方案)是绕不过去的基础依赖——接受这个前提,按 Shizuku 的激活流程配置好,PUBG Tool 才能正常工作。
相关阅读:Shizuku 激活完整流程