Wie kann ich die Linux-Befehle auf einem Android-Gerät?

Auf einige Android-Geräte, in der ADB shell, ich kann nur echo, cd, ls. Wenn ich laufen:

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

Oder den Befehl cp es gibt:

sh: tar: not found

Warum kann ich nicht diese Befehle ausführen? Einige Geräte unterstützen diese Befehle. Mein end-Ziel ist das kopieren einer Datei aus dem /Daten/Daten Ordner auf der SD-Karte. Ich habe su und ich habe den folgenden code:

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

Es hält immer in is.ready(), und wenn ich es geändert process.waitfor() es auch beendet. Warum?

  • Dir ist schon klar, dass die android-shell ist weit mehr eingeschränkt als bei einem standard-Linux-Betriebssystem, richtig?
InformationsquelleAutor Wendy Chen | 2012-04-23
Schreibe einen Kommentar