2009-10-08 8 views
5

Ich habe ein Open-Source-Projekt (gdal), das ich kompilieren und als Teil einer iOS-App ausführen möchte. Ich hatte erwartet, NSTask zu verwenden, aber ich sehe jetzt, dass es in iOS 3.0 entfernt wurde. Ich habe auch an anderer Stelle gesehen, dass das Ausführen von externen Anwendungen nicht zulässig ist, obwohl dies eine Ressource im Bundle meiner App wäre.NSTask oder gleichwertig für iPhone

Hat jemand anderes eine Möglichkeit gefunden, Befehlszeilen-Tools in ihren iOS-Anwendungen auszuführen?

+0

Ich versuche derzeit für eine ähnliche Sache, hast du jemals am Ende damit zu arbeiten? –

+0

Ich weiß, das ist ein alter Thread, aber es ist die erste Sache, die für google 'nstask auf iphone kommt 'Ich habe es für jailbroken iPhones: http: //stackoverflow.com/questions/9983430/trying-to-use-cydia -libraries-nstask-on-jailbroken-iphone-crashes-with-segmenta/10019390 – apple16

Antwort

7

Es wurde nicht in 3.0 entfernt, es war nie da. Es gibt keine Möglichkeit, separate Prozesse auf dem iPhone auszuführen. GDAL scheint unter einer MIT-Stil-Lizenz zu stehen und hat eine Bibliotheksschnittstelle, daher sollte die direkte Verknüpfung mit einer iPhone-App keine rechtlichen oder technischen Probleme haben.

+1

Danke Louis, Ist es der gleiche Prozess wie die Verknüpfung in einem der Apple-Frameworks? libgdal.a ist ungefähr 40MB, wesentlich größer als der Rest meines Projekts, also hoffte ich, einfach die ausführbare Datei gdalinfo (etwa 5 MB) zu verwenden, aber das sieht nicht so aus, als ob ich direkt verlinken könnte. Ich weiß, es gibt nicht viele Opensource-iPhone-Apps, aber wenn Sie irgendwelche wissen, die im Code anders als Apples Frameworks verlinken, wäre ich wirklich interessiert zu sehen, wie es gemacht wird. – Craig

+0

Nun, offensichtlich muss die Menge an Code, die für die gewünschte Funktionalität benötigt wird, weniger als 40 Megabyte betragen. Ob Sie es effektiv ausarbeiten können, ist ein separates Thema. Außerdem würde ich denken, dass 40 MB bedeutet, dass es unausgelöst ist und alle Debug-Symbole hat (die ziemlich groß sein können). Wie viel schrumpft es, wenn du es ausziehst? –

+0

Ich denke, ich werde auf dieser Seite noch viel mehr Fragen stellen müssen. Ich bin mir nicht sicher, wie ich die Debug-Symbole entfernen soll. Es wurde kompiliert mit "build_for_iphoneos" ein Skript von Christopher Stawarz, vielleicht gibt es einige Hinweise, welche Flags ich setzen muss. In der Zwischenzeit werde ich versuchen, es wie ein Framework zu importieren und zu sehen, welche Funktionen ich auf der vollen 40mb Version ausführen kann. – Craig

1

NSTask ist in ios 4, ios 3 und möglicherweise allen verfügbar. Um NStask verwenden zu können, musste ich die NStask-Header-Datei von meinem Mac in meinen Projektordner kopieren. Auch Apple wird höchstwahrscheinlich keine App zulassen, die NStask im Appstore verwendet. Cydia wäre wahrscheinlich der beste Ort, um Ihre App zu verteilen

+0

Haben Sie das auf einem Gerät getestet? Wenn Sie nur im Simulator getestet haben, hätte es die Mac OS X-Quelle verwendet, da NSTask.m, die notwendigste Datei, fehlt. – jrtc27

+0

Ich glaube, ich habe es auf einem Gerät getestet, aber ich kann mich nicht erinnern – romejoe

+0

NSTask ist auf iOS Sie brauchen den Header für die Kompilierung das ist alles. –

0

Nur Erinnerung:
NSTask wird nicht unter Sandbox-Umgebung arbeiten (Sie erhalten "den Prozess-Abzweigung"). Also setze deine Anwendung in/Anwendungen

+0

uh? Ich glaube nicht, dass Sie viel Auswahl haben, wo iPhone-Apps bereitgestellt werden. – Craig

+1

Sie müssen möglicherweise jailbreak .. – hewigovens

+0

Frage: Wie kopiere ich es? Zu meinem normalen Projektordner und dann zu #import? --------- Was ist mit dem Jailbreak-Kommentar? Stimmt es, dass Apple die App aus dem Store ablehnt, wenn NSTask auf iOS verwendet wird? ---------- Ich möchte dies tun: http://stackoverflow.com/questions/16626577/ios-and-calling-terminal-commandos-with-ibaction?noredirect=1#comment23907909_16626577 – webschnecke