As instalações do Android nem sempre têm todas as ferramentas que se esperaria ter em um sistema semelhante ao Unix.
Por exemplo, agora eu tenho um dispositivo problemático que não possui o find
utilitário CLI. Quero dizer, é isso que recebo enquanto adb shell
:
$ find
/system/bin/sh: find: not found
Além disso:
$ /system/bin/toolbox find
find: no such tool
Este dispositivo em particular está executando o Android 5.0 (mais algumas adições proprietárias da LG, eu acho), mas a pergunta é para todas as versões do Android, é claro.
Existe um procedimento padrão para instalar ferramentas nativas / CLI (como find
) no Android? (Um gerenciador de pacotes? ) E, de qualquer maneira, como fazê-lo da maneira mais correta?
adb
shell
command-line
Nome em Exibição
fonte
fonte
Respostas:
Para dispositivos Android enraizados
Você pode instalar o aplicativo BusyBox de Stephen. Por Play Store, a versão mínima do Android suportada pelo aplicativo é o Android 1.6 e é um aplicativo bem atualizado. Em essência, ele instala o binário do busybox
/system/xbin
e coloca links simbólicos no mesmo diretório para todos os utilitários que possui.O que é o BusyBox (não o aplicativo)?
Aqui está a lista oficial de utilitários que ele fornece.
find
ferramenta pode ser encontrada lá.Uma alternativa competente ao BusyBox é o Toybox, que substituiu o Toolbox na versão Marshmallow.
O que é o Toybox ?
Aqui está a lista oficial de utilitários compatíveis com toybox. No momento, o BusyBox parece oferecer suporte a mais ferramentas que o Toybox.
Não acho que exista um aplicativo para instalar o binário do Toybox, portanto, você pode usar minha resposta aqui para fins de instalação. Observe que a resposta pode ser usada para a instalação do Toybox e do BusyBox. O único pré-requisito é baixar o binário de fontes oficiais.
Links para download oficiais:
Para dispositivos Android sem raiz
Não sei se existe uma abordagem universal para todas as versões do Android. Dito isto, para o Android 4.0 ou superior, o BusyBox Install (No Root) afirma funcionar. Pode haver alguns aplicativos de terminal que acompanham o binário BusyBox. Eu não testei pessoalmente nenhum desses aplicativos de terminal, mas é fácil entender que a maior desvantagem deles é: você não pode fazer nenhum ou muito bom uso deles usando adb .
Existe uma abordagem no entanto, que parece funcionar para qualquer versão do Android acima da 4.2 (com base nos meus testes).
/data/local/tmp
é um diretório que pode ser editado peloshell
usuário.adb shell
concede a você o shell remoto no dispositivo e efetua login como o mesmo usuário.Tudo o que você precisa fazer é colocar o binário BusyBox / Toybox
/data/local/tmp
e criar links simbólicos para os utilitários no mesmo diretório. Você pode usar as seguintes etapas para isso.(Requer configuração adb no PC.)
Izzy recomendou a maneira mais direta de colocar links simbólicos para o binário do BusyBox .
Todas essas ferramentas agora podem ser acessadas usando o caminho absoluto
/data/local/tmp/TOOL
. Substitua TOOL pelo nome do utilitário. Exemplo de uso do comando find:Para sessões de shell interativas, você pode adicionar o local de FILE em $ PATH usando o comando export:
Feito isso, agora você pode usar o find ou outro utilitário BusyBox / Toybox desta maneira:
Deve- se notar que as alterações no $ PATH são aplicáveis apenas à sessão atual do shell. Isso significa que toda vez que você inicia um shell usando adb, é necessário exportar $ PATH.
Dito isso, não há solução apenas para Android para sessões de shell não interativas além de encontrar uma maneira de criar uma variável cuja existência e valor persistam além da atual sessão de shell no seu PC, não no Android . Exemplo:
fonte