В последних версиях андроидов rootfs и система монтируются только для чтения после того, как init настроил каталоги и файлы.
Чтобы создать файл в системном разделе, вы должны перемонтировать их с возможностью записи. Таким образом, вам нужно будет вызвать/system/bin/mount как пользователь root.
Команда для установки системы RW отличается в зависимости от того, если/системы/бен/смонтировать Toybox или панели инструментов симлинк
Если вы не в состоянии получить су в с Runtime.getRuntime(). Exec ("су »), используете ли вы su-файл, созданный aosp в сборках userdebug? Если это так, я верю, что вам придется быть пользователем оболочки, чтобы использовать его. Возможно, переключитесь на более распространенный su-файл или обновите aosp.
EDIT: для монтажа системы RW, в первую очередь необходимо определить, если/система/бен/монтирования является символической ссылкой на Toybox или панели инструментов, так как команда они используют для монтажа системы RW будет отличаться
Ls - l, или readlink, должны иметь возможность легко ответить на это.
для инструментов,
(работает как UID (0))
крепление -О перемонтируйте, RW/Система
для Toybox,
(работает как UID (0))
монтирования -o RW, перемонтировать -t авто/система
В Java subpr ocess должен сначала запросить su, так как только пользователь root может выполнить команду mount
Итак, вы выполнили 'su root' или что-то подобное из вашего кода, прежде чем пытаться создать файл? – Michael
@Michael I try Process su = Runtime.getRuntime(). Exec ("su"); Эта команда, но она не сообщила об отказе в разрешении root. Я могу получить супер пользователя через оболочку adb. – Arjun
Права доступа не меняются, если вы перемещаете операции открытия файла на Java. –