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

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

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

Цель, которую я пытаюсь достичь, - создать фальшивую FS, которая фактически установлена ​​в файл.

Ответ 1

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

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

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

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

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

Ответ 2

У Люмингера есть правильная идея. Вот что я нашел на своей Галактике S3 (на Verizon):

Соответствующий материал предохранителя существует в /proc/filesystems. Поэтому что-то должно его использовать, вполне возможно, система. Однако, когда я пытаюсь выполнить "fusermount", я получаю "Can not execute - Permission denied".

Итак, похоже, что все материалы FUSE есть, но я понятия не имею, могу ли я на самом деле использовать его напрямую (dropbox? sshfs?) без укорачивания устройства.

Ответ 3

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

Тем не менее, если вы хотите, чтобы указанная файловая система была доступна из других приложений, которые вы не контролируете, вам понадобится root, так как ваше приложение будет работать в песочнице Android в противном случае.