Я пытаюсь запустить некоторые LINUX-подобные команды из приложения для Android, я хочу, чтобы мое приложение запускало некоторые пользовательские команды, такие как pkg
, dpkg
и т. д. в основном мне нужно, чтобы мое приложение действовало как терминальное приложение, для этого я создал файловую структуру Linux с необходимыми библиотеками и бинарниками внутри пакета приложения, т.е. я разместил свои файлы в структуре каталогов /data/data/com.example.root.app/files/usr/bin
. Затем я выполняю их из своего кода:
Process process;
try {
process = Runtime.getRuntime().exec(new String[]{"pkg","search","apache2"}, env, new File(cwd));
} catch (IOException e) {
// TODO: Visible error message?
}
Я использую переменную env для установки переменных среды PATH, LD_LIBRARY_PATH, HOME и т. д., которые я передаю вышеописанному процессу. Кроме того, я запускаю процесс из каталога, содержащего команды, т.е.
String cwd = "/data/data/com.example.root.app/files/usr/bin"
Я могу запускать элементарные команды, такие как env
, ls -l
, pwd
, но не могу запускать специально созданные команды, такие как pkg
.
когда я пытаюсь выполнить команду pkg
, она выдает Ошибка IOException =13 разрешение запрещено
имейте в виду, что я рекурсивно установил права на исполняемый файл 777 для всего каталога, просто чтобы узнать, работает ли он, но это не так.
Также, когда я использую уже существующее терминальное приложение, я могу запустить команду pkg
pkg
команд, и это является причиной ошибки. - person Vladyslav Matviienko   schedule 20.03.2018