Android: как смонтировать файловую систему в RW из моего APK? (укоренился, конечно) - PullRequest
5 голосов
/ 30 марта 2011

Я пытаюсь написать приложение, которое копирует что-то в раздел / system во время выполнения.Я уже реализовал возможность запуска терминальных команд от имени пользователя root, запрашивая разрешения SU.Я могу успешно выполнить много команд (после предоставления запроса на разрешение с помощью SuperUser).Однако, когда я пытаюсь перемонтировать / system как чтение / запись, ничего не происходит.Я не получаю сообщение об ошибке или сбой, и команда, кажется, проходит хорошо, но раздел остается только для чтения.Вот команда, которую я запускаю (Droid X): mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system, и она прекрасно работает, если я запускаю ту же команду из Терминала.А вот мой код для выполнения команд root из моего приложения:

String cmd = "mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system";
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
os.writeBytes(cmd + "\n");          
os.writeBytes("exit\n");  
os.flush();

А затем у меня есть некоторый код, который проверяет поток stdout и stderr, чтобы увидеть, что произошло.Кто-нибудь может дать мне представление, почему это не работает?

1 Ответ

6 голосов
/ 01 апреля 2011

Я понял - команда действительно была успешной, но, похоже, статус RW относится только к сеансу, в котором она была применена.Таким образом, после того, как один набор команд был выполнен под SU, следующий набор команд переводит / system в состояние RO.Все, что мне нужно было сделать, это добавить команду для копирования файлов перед выходом из сеанса SU.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...