Les installations Android ne disposent pas toujours de tous les outils que l'on s'attendrait à avoir sur un système de type Unix.
Par exemple, en ce moment, j'ai un périphérique problématique qui n'a pas d' find
utilitaire CLI. Je veux dire, c'est ce que je reçois en adb shell
:
$ find
/system/bin/sh: find: not found
Aussi:
$ /system/bin/toolbox find
find: no such tool
Cet appareil particulier fonctionne sous Android 5.0 (plus quelques ajouts propriétaires de LG, je suppose), mais la question concerne bien sûr toutes les versions d'Android.
Existe-t-il une procédure standard pour installer des outils natifs / CLI (tels que find
) sur Android? (Un gestionnaire de paquets? ) Et, de toute façon, comment le faire de la manière la plus correcte?
adb
shell
command-line
Afficher un nom
la source
la source
Réponses:
Pour les appareils Android rootés
Vous pouvez envisager d'installer l' application BusyBox par Stephen. Par Play Store, la version minimale d'Android prise en charge par l'application est Android 1.6 et c'est une application bien mise à jour. En substance, il installe le binaire busybox dans
/system/xbin
et place les liens symboliques dans le même répertoire pour tous les utilitaires dont il dispose.Qu'est-ce que BusyBox (pas l'application)?
Voici la liste officielle des utilitaires qu'il fournit.
find
outil peut être trouvé là-bas.Une alternative compétente à BusyBox est Toybox, qui a remplacé Toolbox dans la version Marshmallow.
Qu'est-ce que Toybox ?
Voici la liste officielle des utilitaires que Toybox prend en charge. BusyBox, pour le moment, semble prendre en charge plus d'outils que Toybox.
Je ne pense pas qu'il existe une application pour installer le binaire Toybox, vous pouvez donc utiliser ma réponse ici pour son installation. Notez que la réponse peut être utilisée pour l'installation de Toybox et BusyBox. La seule condition préalable est de télécharger le binaire à partir de sources officielles.
Liens de téléchargement officiels:
Pour les appareils Android non rootés
Je ne sais pas s'il existe une approche universelle pour toutes les versions d'Android. Cela dit, pour Android 4.0 et supérieur, BusyBox Install (No Root) prétend fonctionner. Certaines applications de terminal peuvent être fournies avec le binaire BusyBox. Je n'ai personnellement testé aucune de ces applications de terminal, mais il est facile de comprendre que leur plus gros inconvénient est: vous ne pouvez pas en faire bon usage ou beaucoup en utilisant adb .
Il existe cependant une approche qui semble fonctionner pour toute version Android supérieure à 4.2 (sur la base de mes tests).
/data/local/tmp
est un répertoire qui peut être édité par l'shell
utilisateur.adb shell
vous accorde le shell distant sur l'appareil et vous connecte en tant que même utilisateur.Tout ce que vous avez à faire est de mettre le binaire BusyBox / Toybox dans
/data/local/tmp
et de créer des liens symboliques pour les utilitaires dans le même répertoire. Vous pouvez utiliser les étapes suivantes pour cela.(Nécessite une configuration adb sur PC.)
Izzy a recommandé la manière la plus simple de placer des liens symboliques pour le binaire BusyBox .
Tous ces outils sont désormais accessibles via le chemin absolu
/data/local/tmp/TOOL
. Remplacez TOOL par le nom de l'utilitaire. Exemple d'utilisation de l'appel de la commande find:Pour les sessions shell interactives, vous pouvez ajouter l'emplacement de FILE dans $ PATH à l'aide de la commande d'exportation:
Cela fait, vous pouvez maintenant utiliser find ou un autre utilitaire BusyBox / Toybox de cette manière:
Il est à noter que les modifications de $ PATH ne s'appliquent qu'à la session shell actuelle. Cela signifie que chaque fois que vous lancez un shell en utilisant adb, vous devez exporter $ PATH.
Cela dit, il n'y a pas de solution Android uniquement pour les sessions shell non interactives autre que de trouver un moyen de créer une variable dont l'existence et la valeur persisteraient au-delà de la session shell actuelle sur votre PC, pas Android . Exemple:
la source