Führen Sie einen Standard-Unix-Prozess (keine App) auf dem iPhone über die OS X-Befehlszeile aus

Ich arbeite an der Verbesserung der iOS-Cross-Compilation-Unterstützung für ghc, das über eine Metaprogrammierungsfunktion verfügt, die zur Kompilierzeit die Ausführung von Code erfordert. Ein Mechanismus dafür besteht darin, einen Prozess auf dem Ziel auszuführen und vom Compiler über Pipes mit ihm zu kommunizieren. Dies ist ein Standard-Unix-Prozess (einer, der für iOS kompiliert wurde), keine iPhone-App. Wie kann ich diesen Prozess auf einem angeschlossenen iPhone von der OS X-Box aus starten, auf der der Compiler ausgeführt wird? Für den Simulator kann ich verwenden, simctl spawnaber ich kenne nichts Ähnliches für echte Geräte.

Antworten (1)

Du kannst nicht.

Inhaftierte iOS-Geräte haben keine Möglichkeit, ein bestimmtes Programm aus der Ferne auszuführen. Sie müssten Ihr Gerät jailbreaken, um Zugriff auf das Terminal zu erhalten.

Der iOS-Simulator ist etwas anders, da ihm viele der Sicherheitsfunktionen fehlen, die das vollständige iOS hat, und da er direkt auf Ihrem Mac als untergeordnete Prozesse ausgeführt wird (und nicht als Emulator, der einen ARM-Prozessor emuliert).

Es mag wahr sein, dass das, was ich versuche, unmöglich ist, aber diese Argumentation ergibt keinen Sinn. Sie können beliebigen nativen Code in eine App einbinden, alles, was unsicher/jailbreaked ist, was ich von einem normalen Prozess aus tun könnte, könnte ich auch von einer App aus tun. Oder, um es anders auszudrücken, jedes Prozess-Sandboxing, das mit einer App passiert, könnte genauso gut auf den traditionellen Prozess angewendet werden, den ich ausführen möchte.
@SheaLevy Die Argumentation macht absolut Sinn. Sicherheitsfunktionen in einem physischen iDevice verhindern, dass Code remote von einem verbundenen Computer ausgeführt wird. iOS auf dem Gerät kümmert sich auch um das vollständige Sandboxing jeder App. Selbst wenn Sie Ihren Prozess innerhalb einer App ausführen, können Sie nicht von einer anderen App oder einem anderen Prozess aus damit kommunizieren.
Außer ich kann eine App problemlos von meinem Computer aus ausführen. developer.apple.com/library/content/documentation/IDEs/…