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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ausführen, Linux-Befehle auf Android. Aber es gibt in der Regel nur sehr wenige pre-installiert.
Wenn Sie möchten, fügen Sie weitere Befehle, die Sie wollen könnte root Ihr Gerät und installieren busybox drauf.
Dies ist nicht für den produktiven Einsatz in einer Anwendung, sondern können Ihnen helfen die Arbeit mit Ihrem Gerät.
locate
Befehl auf Android bei der Suche nach Dateien? Es scheint, dies ist nicht ein applet in BusyBox.Soweit ich weiß, der einzige Weg, um shell-Befehle ausführen ist:
Wenn Sie die Binärdateien für Ihr system, führen Sie alles auf Ihrem system.
Sagen, dass Sie haben, um zu verstehen, dass Sie die Binärdateien für
tar
.Schauen Sie hier http://forum.xda-developers.com/showthread.php?t=872438
Und möglicherweise andere Orte.
Installieren, busybox, dann geben Sie den Befehl im folgenden format ein:
busybox [linux Befehl]
Nicht alle linux Befehle ohne busybox, weil Android nicht auf alle Binärdateien, die verfügbar sind in einer standard-linux-Betriebssystem.
FYI, eine Binärdatei ist eine Datei, die enthält kompilierten code. Viele der Standard-Binärdateien gespeichert sind in /system/bin/sh Verzeichnis. Alle diese Befehle wie 'cp' 'ls' 'bekommen' usw., sind eigentlich binaries. Sie können Sie durch:
ls -a /system/bin/sh
Hoffe, das hilft.
In der Antwort auf Igor Ganapolsky, Sie haben eine Datenbank eingerichtet, die für Sie suchen.
Wahrscheinlich 'finden', wäre ausreichend für Ihre Bedürfnisse.
exmample:
find-name *.apk