本文最后更新于 555 天前,其中的信息可能已经有所发展或是发生改变。
TargetSDK 28以上的APP,即使拥有Root权限,也无法访问/data/data下其他APP的文件。
这是因为进程处于继承挂载命名空间中,继承了APP的挂载命名空间。
挂载命名空间是Linux内核用来隔离系统资源的一个机制,当zygote启动一个子进程时,子进程将会创建一个新的命名空间,并卸载一些挂载点。这样一来,由此进程负责运行的APP则无法发现被卸载的挂载点。
在Root Manager中将APP的命名空间改为全局,或者在提升权限时使用-M or –mount-master手动挂载到全局命名空间即可解决问题。
如果使用的su命令无法做到这一点,也可以手动切换,由/proc/1中取得init的挂载命名空间的符号链接,将自己切换到其中即可。