Драйвер файловой системы Android-пользователя на некорневом устройстве? - PullRequest
11 голосов
/ 11 февраля 2012

Могу ли я написать пользовательскую файловую систему пользовательского пространства , которая может быть запущена на заводских устройствах без рутов с помощью стандартных доступных утилит?-android , однако, насколько я понял, для этого требуется рутованное устройство.Если это не так, пожалуйста, исправьте меня.

Цель, которую я пытаюсь достичь, - создать «поддельную» ФС, которая фактически монтируется в файл.

Ответы [ 3 ]

13 голосов
/ 15 февраля 2012

Некоторое время назад у меня была такая же потребность, и я пришел к тому, что должен был признать, что это вообще невозможно (в основном). Сборка libfuse для android не должна быть проблемой, также не проблема Java-оболочка.

Реальная проблема заключается в том, что большинство систем, которые я видел, не построены с поддержкой fuse support и не предоставляют модули, которые могут быть загружены (для которых требуется root, но в любом случае).

Вы можете легко узнать, включен ли fuse, прочитав / proc / filesystems. В нем должен быть указан fuse, иначе вам понадобится root. Но вполне вероятно, что большинство устройств Android построены без поддержки предохранителей.

Другие мои идеи заключались в том, чтобы использовать другую файловую систему для «подделки» чего-то вроде предохранителя. Это может быть возможно с nfs или другой сетевой файловой системой, где вы можете реализовать сервер самостоятельно. Это позволит вам написать фальшивый предохранитель, но я не думаю, что оно того стоит.

Edit: И даже если бы у многих устройств была высокая вероятность встроенной поддержки fuse, они бы не позволили вам смонтировать его как пользователь, вам понадобится root-доступ, поскольку у вашего приложения не будет привилегий для монтирования файловых систем fuse.

2 голосов
/ 29 августа 2012

У Luminger почти правильная идея. Вот что я нашел на своей Galaxy S3 (на Verizon):

Соответствующие элементы предохранителей существуют в / proc / filesystems. Так что что-то должно использовать это, вполне возможно, системное. Однако, когда я пытаюсь выполнить 'fusermount', я получаю «Невозможно выполнить - В доступе отказано».

Похоже, что все вещи FUSE есть, но я понятия не имею, могу ли я использовать их напрямую (dropbox? Sshfs?) Без рутирования устройства.

1 голос
/ 14 февраля 2012

Это зависит от вашей реализации.Для меня это звучит так: вы хотите иметь физические файлы, которые представляют файловую систему полного пространства пользователя.Возможно, похож на монтированный .iso.Если это так, я не могу придумать причину, по которой нужен root: вы просто создаете / устанавливаете файл где-нибудь, например / sdcard /, и «монтируете» свою файловую систему поверх него.если вы хотите, чтобы указанная файловая система была доступна из других приложений, которые вы не контролируете, вам потребуется root, так как в противном случае ваше приложение будет работать в изолированной программной среде Android.

...