Установки Android не всегда имеют все инструменты, которые можно ожидать от Unix-подобных систем.
Например, сейчас у меня проблемное устройство, которое не имеет find
утилиты CLI. Я имею в виду, это то, что я получаю в то время как в adb shell
:
$ find
/system/bin/sh: find: not found
Также:
$ /system/bin/toolbox find
find: no such tool
Это конкретное устройство работает под управлением Android 5.0 (я полагаю, плюс некоторые проприетарные дополнения от LG), но вопрос, конечно, для всех версий Android.
Существует ли стандартная процедура для установки нативных инструментов / инструментов CLI (таких как find
) на Android? ( Менеджер пакетов? ) И вообще, как это сделать наиболее правильно?
adb
shell
command-line
Показать имя
источник
источник
Ответы:
Для рутованных устройств Android
Вы можете рассмотреть возможность установки приложения BusyBox от Стивена. Для Play Store минимальная версия Android, поддерживаемая приложением, - это Android 1.6, и это хорошо обновленное приложение. По сути, он устанавливает двоичный файл busybox
/system/xbin
и помещает символические ссылки в один и тот же каталог для всех имеющихся в нем утилит.Что такое BusyBox (не приложение)?
Вот официальный список утилит, которые он предоставляет.
find
инструмент можно найти там.Грамотная альтернатива для BusyBox является Toybox, который заменил Toolbox в выпуске Зефира.
Что такое Toybox ?
Вот официальный список утилит, которые поддерживает toybox. В настоящий момент BusyBox поддерживает больше инструментов, чем Toybox.
Я не думаю, что существует приложение для установки бинарного файла Toybox, поэтому вы можете использовать мой ответ здесь для целей его установки. Обратите внимание, что ответ может быть использован для установки как Toybox, так и BusyBox. Единственным условием является загрузка бинарного файла из официальных источников.
Официальные ссылки для скачивания:
Для некорневых устройств Android
Я не знаю, существует ли универсальный подход для всех версий Android. Тем не менее, для Android 4.0 и выше BusyBox Install (No Root) претендует на работу. Там могут быть некоторые терминальные приложения, которые поставляются с двоичным BusyBox. Я лично не тестировал ни одного такого терминального приложения, но легко понять, что их самый большой недостаток: вы не можете использовать их или использовать их с помощью adb .
Однако есть подход, который работает для любой версии Android выше 4.2 (на основе моих тестов).
/data/local/tmp
каталог, который может быть отредактированshell
пользователемadb shell
предоставляет вам удаленную оболочку на устройстве и авторизуется под тем же пользователем.Все, что вам нужно сделать, это поместить двоичный файл BusyBox / Toybox
/data/local/tmp
и создать символические ссылки для утилит в том же каталоге. Вы можете использовать следующие шаги для этого.(Требуется настройка ADB на ПК.)
Иззи порекомендовал самый простой способ размещения символических ссылок для двоичного файла BusyBox .
Все эти инструменты теперь могут быть доступны по абсолютному пути
/data/local/tmp/TOOL
. Замените TOOL на имя утилиты. Пример использования вызова команды find:Для сеансов интерактивной оболочки вы можете добавить местоположение FILE в $ PATH, используя команду export:
Для этого теперь вы можете использовать find или другую утилиту BusyBox / Toybox следующим образом:
Следует отметить, что изменения в $ PATH применимы только для текущего сеанса оболочки. Это означает, что каждый раз, когда вы запускаете оболочку с помощью adb, вам придется экспортировать $ PATH.
Тем не менее, не существует единственного решения для Android для неинтерактивных сеансов оболочки, кроме как найти способ создания переменной, существование и значение которой сохранятся за пределами текущего сеанса оболочки на вашем ПК, а не Android . Пример:
источник