Las instalaciones de Android no siempre tienen todas las herramientas que uno esperaría tener en un sistema tipo Unix.
Por ejemplo, en este momento tengo un dispositivo problemático que no tiene la find
utilidad CLI. Quiero decir, esto es lo que obtengo mientras estoy en adb shell
:
$ find
/system/bin/sh: find: not found
También:
$ /system/bin/toolbox find
find: no such tool
Este dispositivo en particular ejecuta Android 5.0 (más algunas adiciones patentadas de LG, supongo), pero la pregunta es para todas las versiones de Android, por supuesto.
¿Existe un procedimiento estándar para instalar herramientas nativas / CLI (como find
) en Android? (¿Un administrador de paquetes? ) Y, de todos modos, ¿cómo hacerlo de la manera más correcta?
adb
shell
command-line
Nombre para mostrar
fuente
fuente
Respuestas:
Para dispositivos Android rooteados
Puede considerar instalar la aplicación BusyBox de Stephen. Por Play Store, la versión mínima de Android compatible con la aplicación es Android 1.6 y es una aplicación bien actualizada. En esencia, instala el binario busybox
/system/xbin
y coloca enlaces simbólicos en el mismo directorio para todas las utilidades que tiene.¿Qué es BusyBox (no la aplicación)?
Aquí está la lista oficial de utilidades que proporciona.
find
herramienta se puede encontrar allí.Una alternativa competente a BusyBox es Toybox, que ha reemplazado a Toolbox en la versión Marshmallow.
¿Qué es toybox ?
Aquí está la lista oficial de utilidades que toybox admite. BusyBox, en este momento, parece admitir más herramientas que Toybox.
No creo que exista una aplicación para instalar el binario de Toybox, por lo que puede usar mi respuesta aquí para su instalación. Tenga en cuenta que la respuesta se puede utilizar para la instalación de Toybox y BusyBox. El único requisito previo es descargar el binario de fuentes oficiales.
Enlaces oficiales de descarga:
Para dispositivos Android no rooteados
No sé si existe un enfoque universal para todas las versiones de Android. Dicho esto, para Android 4.0 y versiones posteriores, BusyBox Install (No Root) afirma funcionar. Puede haber algunas aplicaciones de terminal que vienen con BusyBox binary. No he probado personalmente ninguna aplicación de terminal de este tipo, pero es fácil entender que su mayor inconveniente es: no se puede hacer un buen uso de ellas con adb .
Sin embargo, existe un enfoque que parece funcionar para cualquier versión de Android anterior a 4.2 (según mis pruebas).
/data/local/tmp
es un directorio que puede ser editado por elshell
usuario.adb shell
le otorga el shell remoto en el dispositivo e inicia sesión como el mismo usuario.Todo lo que tiene que hacer es poner el binario BusyBox / Toybox
/data/local/tmp
y crear enlaces simbólicos para las utilidades en el mismo directorio. Puede usar los siguientes pasos para eso.(Requiere la configuración de adb en la PC).
Izzy ha recomendado la forma más sencilla de colocar enlaces simbólicos para el binario BusyBox .
Ahora se puede acceder a todas esas herramientas utilizando la ruta absoluta
/data/local/tmp/TOOL
. Reemplace TOOL con el nombre de la utilidad. Ejemplo de uso de llamar al comando find:Para sesiones de shell interactivas, puede agregar la ubicación de FILE en $ PATH usando el comando de exportación:
Hecho esto, ahora puede usar find u otra utilidad BusyBox / Toybox de esta manera:
Cabe señalar que los cambios en $ PATH son aplicables solo para la sesión de shell actual. Significa que cada vez que ejecutas un shell usando adb, deberías exportar $ PATH.
Dicho esto, no existe una solución solo para Android para sesiones de shell no interactivas que no sea encontrar una manera de crear una variable cuya existencia y valor persistirían más allá de la sesión de shell actual en su PC, no Android . Ejemplo:
fuente