我能否编写一个自定义用户空间文件系统,并通过标准可用的实用程序在非root出厂设备上运行?
我知道fuse-android的存在,但据我所了解,它需要root设备。如果不是这样,请纠正我。
我尝试实现的目标是创建一个“假”文件系统,实际上它被挂载到一个文件上。
我能否编写一个自定义用户空间文件系统,并通过标准可用的实用程序在非root出厂设备上运行?
我知道fuse-android的存在,但据我所了解,它需要root设备。如果不是这样,请纠正我。
我尝试实现的目标是创建一个“假”文件系统,实际上它被挂载到一个文件上。
我曾经有同样的需求,但最终不得不承认这几乎是不可能的。在 Android 上构建 libfuse 库应该不是问题,Java 封装也没问题。
真正的问题是,大多数系统都没有内置 fuse 支持或提供可加载的模块(需要 root 权限)。您可以通过读取 /proc/filesystems 来检查是否启用了 fuse。它应该列出 fuse,否则您将需要 root 权限。但很可能大多数 Android 设备都没有构建完整的 fuse 支持。
我的其他想法是使用另一个文件系统来“伪装”类似于 fuse 的东西。这可能与 nfs 或一些其他网络文件系统一起使用,在其中可以自己实现服务器。这将使您编写虚拟 fuse 成为可能,但我认为这并不值得。
编辑: 即使许多设备内置了 fuse 支持,它们也很可能不允许用户挂载,因为您的应用程序没有挂载 fuse 文件系统所需的特权,您需要 root 访问权限。
这取决于你的实现方式。我理解的是,你想要有一个物理文件(或多个)来代表完整的用户空间文件系统。可能类似于挂载.iso文件。如果是这种情况,我想不出需要root权限的任何原因:你只需在某个位置创建/安装该文件,例如/sdcard/,然后在其上“挂载”你的文件系统即可。
话虽如此,如果你希望其他应用程序可以访问该文件系统,而这些应用程序并非由你控制,那么你将需要root权限,否则你的应用程序将在Android沙盒中运行。