Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo puedo ejecutar comandos de Linux en un dispositivo Android?

En algunos dispositivos Android, en el shell ADB, sólo puedo ejecutar echo , cd , ls . Cuando corro:

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

O el comando cp , devuelve:

 sh: tar: not found 

¿Por qué no puedo ejecutar estos comandos? Algunos dispositivos admiten estos comandos. Mi objetivo final es copiar un archivo de la carpeta / data / data a la tarjeta SD. Tengo su y tengo el siguiente código:

 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(); } 

Siempre se detiene en is.ready() , y cuando lo cambié a process.waitfor() también se detuvo. ¿Por qué?

  • ¿Cómo ejecuto un binario compilado en Android?
  • Adb shell su funciona, pero la raíz adb no
  • Cómo empujar las carpetas de la computadora en sdcard usando adb shell
  • ¿Por qué obtengo un error "sqlite3: not found" en un Nexus One enraizado cuando intento abrir una base de datos usando el shell de adb?
  • Emulate Force Stop de los comandos de ADB / Shell
  • Generar android apk utilizando shell script de php?
  • Cómo leer las propiedades de Android con Java
  • ¿Cómo ejecutar la aplicación del sistema android sin autorización de la raíz?
  • 5 Solutions collect form web for “¿Cómo puedo ejecutar comandos de Linux en un dispositivo Android?”

    Puede ejecutar comandos de Linux en Android. Pero normalmente hay muy pocos pre-instalado. Si desea agregar más comandos, puede que desee root el dispositivo e instalarlo en él.

    Esto no es para uso productivo dentro de una aplicación, pero puede ayudarlo a trabajar con su dispositivo.

    Por lo que sé, la única manera de ejecutar comandos shell es:

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

    Si tiene los binarios para su sistema, puede ejecutar cualquier cosa en su sistema.

    Diciendo que tienes que entender que tienes que encontrar los binarios para el tar .

    Mira aquí http://forum.xda-developers.com/showthread.php?t=872438

    Y posiblemente otros lugares ..

    Instale busybox, luego escriba el comando en el formato siguiente:

    Busybox [comando linux]

    No puedes usar todos los comandos linux sin busybox, porque Android no tiene todos los binarios que están disponibles en un sistema operativo Linux estándar.

    FYI, un binario es sólo un archivo que contiene código compilado. Muchos binarios predeterminados se almacenan en el directorio / system / bin / sh. Todos estos comandos como 'cp' 'ls' 'get' etc, son en realidad binarios. Puede verlos a través de:

    Ls -a / system / bin / sh

    Espero que esto ayude.

    En respuesta a Igor Ganapolsky, tendría que tener una base de datos establecida para localizar.

    Probablemente 'encontrar' sería adecuado para sus necesidades.

    Ejemplo:

    Find -name * .apk

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.