Ausführen von Anwendungen von einem Terminalemulator [geschlossen]


8

Ich habe ein verwurzeltes Nexus 7 Jelly Bean-Tablet und wenn ich versuche, eine Anwendung über eine Terminalemulator-App auszuführen, nachdem ich sie mit chmod 777 ausgeführt und die Syntax ("./applicationName") verwendet habe, besteht sie darauf, dass ich keine Berechtigung zum Ausführen habe, obwohl ich gewährte mir selbst superUser privs using ("su"). Danach habe ich ein wenig recherchiert und festgestellt, dass Sie die Anwendung ausführen können sollten, wenn Sie die Datei in das Verzeichnis (/ data / local / temp /) kopieren. Als ich versuchte, dass die Datei nicht existiert, obwohl sie beim Auflisten des Verzeichnisinhalts mit ("ls") angezeigt wird.

Ich habe keine Ahnung, welche Schritte ich unternehmen soll, wenn es hilft, dass ich versucht werde, (scp) als Test auszuführen, aber ich möchte in der Lage sein, eine benutzerdefinierte kompilierte Version von dns2tcp auszuführen. Ich weiß, ich hätte bessere Anwendungen wie eine Hallo-Welt verwenden können, die nativ auf dem Gerät kompiliert wurde, aber ich konnte keinen C-Compiler für Android wie gcc in die Hände bekommen.

Vielen Dank für jeden Rat


2
Können Sie eine kleine Abschrift von dem hinzufügen, was Sie getan haben? / sdcard ist mit der Funktion 'noexec' ausgestattet, die übrigens verhindert, dass ausführbare Dateien ausgeführt werden. Haben Sie beim zweiten Versuch den vollständigen Pfad angegeben (/ data / local / tmp / yourprogram)?
Ce4

@ ce4 Ich habe versucht, was Sie im zweiten Teil Ihres Kommentars erwähnt haben. Hier ist das Transkript: pastebin.com/RkuMHuBj EDIT: Ja, ich habe vergessen, Shift + Enter zu drücken :) my bad hehe
Andrei0427

Haben Sie versucht, den vollständigen Pfad für die Ausführung anzugeben - z /data/local/tmp/scp. Und haben Sie sichergestellt, dass Ihre scpDatei keine Dateierweiterung hat, wenn sie ohne aufgerufen wird?
Izzy

@ Izzy habe ich ja. Kann hier jemand benutzerdefinierte C-Anwendungen vom Terminal selbst auf einem Android-Gerät ausführen?
Andrei0427

Wenn die App nicht für Android kompiliert ist, funktioniert sie nicht.
Matthew Read

Antworten:


3

Versuchen Sie, shvor Ihren Befehl zu stellen, z.

sh ./scp

oder

sh -c ./scp

Ich habe beim Ausführen der Anwendung einen Syntaxfehler erhalten. Ich vermute, dass dies passiert ist, weil es nicht für das Tablet selbst kompiliert wurde, weil ich es von meinem Telefon gerissen habe. Leider muss das bedeuten, dass es funktioniert hat ... richtig?
Andrei0427

Welchen Fehler haben Sie erhalten?
EsOsO

Der erste Befehl funktioniert definitiv nicht (./scp hat kein Format, das von der Shell interpretiert werden kann), der zweite ist übertrieben (er führt nur ./scp in einer Subshell aus). Beide beheben keine unangemessenen Ausführungsberechtigungen und / oder andere Inkompatibilitäten.
Ce4

2

Die Emulator-App sollte in der Lage sein, eine andere App aus ihrem eigenen Verzeichnis auszuführen. Dieses Verzeichnis heißt so etwas wie /data/data/com.super.emulator. Geben Sie den vollständigen Pfad zu der gewünschten App im Emulator an.

Wenn Sie einen Compiler für Android erhalten möchten, können Sie NDK verwenden . Einfach zu bekommen, kostenlos zu bedienen.

Können Sie Ihre Datei nicht auch /system/binüber adb weiterleiten ? Ich weiß nicht, ob Sie diese Berechtigung erhalten, wenn Sie Ihr Gerät rooten. Aber wenn das der Fall ist, sollte es Ihr Leben viel einfacher machen.


1

Höchstwahrscheinlich können Sie das Programm nicht ausführen, da Bibliotheken auf dem Gerät, auf das Sie es gerippt haben, auf dem Gerät fehlen, auf das Sie es kopiert haben.

Da Ihr Endziel darin besteht, ein Programm zu kompilieren und nativ auf dem Telefon auszuführen, kann ich Ihnen empfehlen, das Android NDK zu verwenden ? In der NDK-Dokumentation wird STANDALONE-TOOLCHAIN.HTMLerläutert, wie Sie ein natives Programm für die Ausführung auf Ihrem Android-Gerät kompilieren.


0

Wenn Sie verwurzelt sind (ich sehe, dass Sie verwurzelt sind), verwenden Sie den suBefehl und führen Sie dann Ihr ursprüngliches Skript aus. Wenn das Problem Berechtigungen sind, sollte dies das Problem beheben. Und wenn Sie ein Shell-Skript verwenden, können Sie diese Zeile einfach oben hinzufügen. Möglicherweise müssen Sie Ihre SuperSu-Einstellungen (oder die Superuser-App mit Root) überprüfen und sicherstellen, dass Ihr Terminalemulator über Root-Berechtigungen verfügt.

Wenn Sie nicht verwurzelt sind (oder aus irgendeinem Grund nicht als Root ausgeführt werden können), sollten Sie sich ansehen, wie XBMC dies tut, da ich glaube, dass es Apps im Benutzermodus ausführen kann.

Viel Glück.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.