我可以通过标准的可用实用程序编写可在非根工厂设备上运行的自定义用户空间文件系统吗?
我知道fuse-android的存在,但据我所知,它需要一个有根设备。如果不是这样,请纠正我。
我想要实现的目标是创建一个实际挂载到文件的“虚假”FS。
答案 0 :(得分:13)
前段时间我有同样的需要,并且我不得不承认根本不可能(大多数情况下)。为android构建libfuse应该不是问题,Java包装器也没问题。
真正的问题是,我所看到的大多数系统都没有使用保险丝支持构建,也没有提供可能加载的模块(这需要root,但无论如何)。
您可以通过读取/ proc / filesystems轻松找出是否启用了保险丝。它应该列出保险丝,否则你将需要root。但很可能大多数Android设备都是在没有保险丝支持的情况下构建的。
我的其他想法是使用另一个文件系统“伪造”像保险丝这样的东西。这可以通过nfs或其他一些网络文件系统实现,您可以自己实现服务器。这可以让你写一个假的保险丝,但我不认为这是值得的。
编辑: 即使许多设备具有保险丝支持,构建机会很高,也不会让你以用户身份安装它,你需要root访问权限,因为你的应用程序没有安装保险丝文件系统的权限。
答案 1 :(得分:2)
Luminger几乎有正确的想法。这是我在Galaxy S3上发现的(在Verizon上):
/ proc / filesystems中存在 的相应保险丝。所以某些东西必须使用它,很可能是系统。但是,当我尝试执行'fusermount'时,我得到“无法执行 - 权限被拒绝。”
所以看起来所有FUSE的东西都在那里,但是我不知道我是否可以直接使用它(dropbox?sshfs?)而不需要生根设备。
答案 2 :(得分:1)
这取决于您的实施。听起来对我来说,你想拥有一个代表完整用户空间文件系统的物理文件。也许类似于挂载的.iso。如果是这种情况,我想不出任何需要root的原因:你只需在某个地方创建/安装文件,例如/ sdcard /,并将文件系统“挂载”在它上面。
也就是说,如果您希望从您无法控制的其他应用程序访问所述文件系统,则需要root,因为您的应用程序将在Android沙箱中运行。