/data/user/0/wwk.read.it/和/data/data/wwk.read.it/在 Android 系统中指向的是同一个物理位置。你在 Device Explorer 中看到data/data/...而代码返回data/user/0/...,是因为 Android 的文件系统机制和显示策略造成的。
以下是详细解释:
1. 为什么路径看起来不一样?
符号链接(Symbolic Link)机制:
从 Android 4.2(API 17)引入多用户支持开始,Android 引入了/data/user/<userId>/目录结构来区分不同用户的数据(主用户 ID 为 0)。
为了保持对旧版本应用和工具的兼容性,系统保留了一个符号链接:/data/data -> /data/user/0这意味着
/data/data/wwk.read.it/实际上是指向/data/user/0/wwk.read.it/的快捷方式。它们完全等价。Device Explorer 的显示习惯:
Android Studio 的 Device File Explorer 工具通常倾向于显示传统的、更简短的路径/data/data/<package_name>/,因为这是开发者更熟悉的路径格式,且在该视图下它直接映射到根目录下的data文件夹结构。API 返回的现代路径:
context.getFilesDir()是 Android API,它会返回当前运行环境下的“规范路径”或“绝对路径”。在现代 Android 版本中,系统内部更倾向于使用/data/user/0/这种明确指定用户 ID 的路径格式,因此 API 返回的是这个更“底层”的真实路径。
2. 如何验证它们是同一个地方?
如果你有 Root 权限或使用模拟器,可以通过 ADB 命令验证:
adb shell ls -l /data/data # 输出通常会显示: /data/data -> /data/user/0