Как запустить команды Linux на устройстве Android?

На некоторых устройствах Android, в оболочке ADB, я могу запускать только echo , cd , ls . Когда я запускаю:

 tar -cvf //mnt/sdcard/BackUp1669/apk/test.tar /mnt/sdcard/test.apk 

Или команда cp , она возвращает:

 sh: tar: not found 

Почему я не могу запускать эти команды? Некоторые устройства поддерживают эти команды. Моя конечная цель – скопировать файл из папки / data / data на SD-карту. Я получил su и получил следующий код:

 int timeout = 1000; String command = "tar -cvf /" + Environment.getExternalStorageDirectory() + "/cp/" + packageName + ".tar" + " " + path; DataOutputStream os = new DataOutputStream(process.getOutputStream()); BufferedReader is = new BufferedReader(new InputStreamReader(new DataInputStream( process.getInputStream())), 64); String inLine; try { StringBuilder sbCommand = new StringBuilder(); sbCommand.append(command).append(" "); sbCommand.append("\n"); os.writeBytes(command.toString()); if (is != null) { for (int i = 0; i < timeout; i++) { if (is.ready()) break; try { Thread.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } } if (is.ready()) { inLine = is.readLine(); } else { } } } catch (IOException e) { e.printStackTrace(); } 

Он всегда останавливается в is.ready() , и когда я изменил его на process.waitfor() он также остановился. Зачем?

Solutions Collecting From Web of "Как запустить команды Linux на устройстве Android?"

Вы можете запускать команды Linux на Android. Но, как правило, очень мало предустановленных. Если вы хотите добавить дополнительные команды, вы можете захотеть укоротить свое устройство и установить на нем busybox .

Это не для продуктивного использования в приложении, но может помочь вам работать с вашим устройством.

Насколько я знаю, единственный способ запуска команд оболочки:

 Process proc = Runtime.getRuntime().exec("your command"); 

Если у вас есть двоичные файлы для вашей системы, вы можете запускать что-либо в своей системе.

Говоря, что вы должны понимать, что вам нужно найти двоичные файлы для tar .

Посмотрите здесь http://forum.xda-developers.com/showthread.php?t=872438

И, возможно, в других местах ..

Установите busybox, затем введите команду в следующем формате:

Busybox [команда linux]

Вы не можете использовать все команды linux без busybox, потому что Android не имеет всех двоичных файлов, доступных в стандартной операционной системе Linux.

FYI, двоичный файл – это просто файл, содержащий скомпилированный код. Многие двоичные файлы по умолчанию хранятся в каталоге / system / bin / sh. Все эти команды, такие как 'cp' 'ls' 'get' и т. Д., На самом деле являются бинарниками. Вы можете просмотреть их через:

Ls -a / system / bin / sh

Надеюсь это поможет.

В ответ Игорю Ганапольскому вам нужно будет создать базу данных для поиска.

Вероятно, «найти» будет достаточно для ваших нужд.

exmample:

Find -name * .apk