Android-Installationen verfügen nicht immer über alle Tools, die man von einem Unix-ähnlichen System erwarten würde.
Zum Beispiel habe ich gerade ein problematisches Gerät, das kein find
CLI-Dienstprogramm hat. Ich meine, das bekomme ich in adb shell
:
$ find
/system/bin/sh: find: not found
Ebenfalls:
$ /system/bin/toolbox find
find: no such tool
Auf diesem speziellen Gerät wird Android 5.0 ausgeführt (plus einige proprietäre Ergänzungen von LG, denke ich), aber die Frage ist natürlich für alle Android-Versionen.
Gibt es ein Standardverfahren für die Installation von nativen / CLI-Tools (z. B. find
) unter Android? (Ein Paketmanager? ) Und wie geht das überhaupt am besten?
adb
shell
command-line
Anzeigename
quelle
quelle
Antworten:
Für gerootete Android-Geräte
Sie können die BusyBox- App von Stephen installieren . Pro Play Store ist die von der App unterstützte Mindestversion von Android Android 1.6 und eine gut aktualisierte App. Im Wesentlichen installiert es die Busybox- Binärdatei in
/system/xbin
und stellt Symlinks für alle Dienstprogramme in dasselbe Verzeichnis.Was ist BusyBox (nicht die App)?
Hier ist die offizielle Liste der angebotenen Dienstprogramme.
find
Tool finden Sie dort.Eine kompetente Alternative zu BusyBox ist Toybox, die Toolbox in der Marshmallow-Version ersetzt hat.
Was ist Toybox ?
Hier ist die offizielle Liste der Dienstprogramme, die Toybox unterstützt. BusyBox scheint derzeit mehr Tools als Toybox zu unterstützen.
Ich glaube nicht, dass eine App zum Installieren von Toybox Binary vorhanden ist. Daher können Sie meine Antwort hier zum Zweck der Installation verwenden. Beachten Sie, dass die Antwort für die Installation von Toybox und BusyBox verwendet werden kann. Einzige Voraussetzung ist das Herunterladen der Binärdatei aus offiziellen Quellen.
Offizielle Download-Links:
Für nicht gerootete Android-Geräte
Ich weiß nicht, ob es für alle Android-Versionen einen universellen Ansatz gibt. Das heißt, für Android 4.0 und höher behauptet BusyBox Install (No Root) zu funktionieren. Möglicherweise gibt es einige Terminal-Apps, die mit BusyBox-Binärdateien geliefert werden. Ich habe eine solche Terminal-App nicht persönlich getestet, aber es ist leicht zu verstehen, dass ihr größter Nachteil darin besteht, dass Sie sie mit adb nicht oder nur sehr gut nutzen können .
Es gibt jedoch einen Ansatz, der für jede Android-Version über 4.2 (basierend auf meinen Tests) zu funktionieren scheint.
/data/local/tmp
ist ein Verzeichnis, das vomshell
Benutzer bearbeitet werden kann.adb shell
gewährt Ihnen die Remote-Shell auf dem Gerät und meldet sich als derselbe Benutzer an.Sie müssen lediglich die BusyBox / Toybox-Binärdatei einfügen
/data/local/tmp
und Symlinks für die Dienstprogramme im selben Verzeichnis erstellen. Sie können dazu die folgenden Schritte ausführen.(Erfordert ein ADB- Setup im PC.)
Izzy hat den einfachsten Weg empfohlen , Symlinks für BusyBox-Binärdateien zu platzieren .
Auf alle diese Tools kann jetzt über den absoluten Pfad zugegriffen werden
/data/local/tmp/TOOL
. Ersetzen Sie TOOL durch den Dienstprogrammnamen. Beispiel für die Verwendung des Befehls find aufrufen:Für interaktive Shell-Sitzungen können Sie den Speicherort von FILE mit dem Befehl export in $ PATH einfügen:
Wenn Sie dies getan haben, können Sie jetzt find oder ein anderes BusyBox / Toybox-Dienstprogramm auf folgende Weise verwenden:
Es ist zu beachten, dass Änderungen in $ PATH nur für die aktuelle Shell-Sitzung gelten. Dies bedeutet, dass Sie jedes Mal, wenn Sie eine Shell mit adb starten, $ PATH exportieren müssen.
Es gibt jedoch keine reine Android-Lösung für nicht interaktive Shell-Sitzungen, außer einen Weg zu finden, um eine Variable zu erstellen, deren Existenz und Wert über die aktuelle Shell-Sitzung in Ihrem PC hinaus bestehen bleibt, nicht für Android . Beispiel:
quelle