14

我可以通过标准的可用实用程序编写一个可以在无根工厂设备上运行的自定义用户空间文件系统吗?

我知道fuse-android的存在,但是据我所知,它需要一个有根设备。如果不是这样,请纠正我。

我试图实现的目标是创建一个实际安装到文件的“假”FS。

4

3 回答 3

15

前段时间我有同样的需求,到了不得不承认这根本不可能的地步(大多数情况下)。为 android 构建 libfuse 应该没有问题,Java 包装器也没有问题。

真正的问题是,我见过的大多数系统都没有使用 fuse support buildin 构建,也没有提供可以加载的模块(这需要 root,但无论如何)。

您可以通过阅读 /proc/filesystems 轻松了解是否启用了 fuse。它应该列出保险丝,否则您将需要root。但很可能大多数 android 设备都是在没有 fuse 支持的情况下构建的。

我的其他想法是使用另一个文件系统来“伪造”诸如 fuse 之类的东西。这可以通过 nfs 或其他一些您可以自己实现服务器的网络文件系统来实现。这将使您能够编写假保险丝,但我认为这不值得。

编辑:即使许多设备具有 fuse 支持内置的机会很高,它们也不会让您以用户身份安装它,您将需要 root 访问权限,因为您的应用程序没有安装 fuse 文件系统的权限。

于 2012-02-15T11:59:59.040 回答
2

Luminger 的想法几乎是正确的。这是我在 Galaxy S3(Verizon 上)上发现的:

/proc/filesystems 中确实存在适当的熔断器。所以一定有什么东西在使用它,很可能是系统。但是,当我尝试执行“fusermount”时,我得到“无法执行——权限被拒绝”。

所以看起来所有的 FUSE 东西都在那里,但我不知道我是否可以直接使用它(dropbox?sshfs?)而不用 root 设备。

于 2012-08-29T05:29:24.463 回答
1

这取决于您的实施。在我看来,您想要一个代表完整用户空间文件系统的物理文件。可能类似于已安装的 .iso。如果是这种情况,我想不出任何需要 root 的理由:您只需在 /sdcard/ 之类的某个位置创建/安装文件,然后在其上“挂载”您的文件系统。

也就是说,如果您希望可以从您无法控制的其他应用程序访问所述文件系统,那么您将需要 root,否则您的应用程序将在 Android 沙箱中运行。

于 2012-02-14T17:42:15.060 回答