2009-10-08 116 views
5

我有一個開源項目(gdal),我想編譯並作爲iOS應用程序的一部分運行。我一直期待使用NSTask,但我現在看到它已在iOS 3.0中刪除。我也看到其他地方運行外部應用程序,雖然這將是我的應用程序包中的資源,但不允許。NSTask或iPhone的等價物

是否有其他人找到了在其iOS應用程序中運行命令行工具的方法?

+0

我目前正在嘗試類似的事情,你有沒有最終得到這個工作? – 2011-03-31 23:23:13

+0

我知道這是一個古老的線程,但它的第一個問題出現在谷歌iPhone上的''nstask我搞砸了jailbroken iphones:http://stackoverflow.com/questions/9983430/trying-to-use-cydia -libraries-nstask-on-jailbroken-iphone-crashes-with-segmenta/10019390 – apple16 2012-04-04 21:20:55

回答

7

它在3.0中沒有被刪除,它從來沒有在那裏。沒有辦法在iPhone上運行單獨的進程。 GDAL似乎是麻省理工學院風格的許可證,並有一個圖書館界面,所以直接鏈接到iPhone應用程序不應該有任何法律或技術問題。

+1

感謝Louis, 與連接到Apple提供的框架的過程是否一樣? libgdal.a大約是40MB,比我的其他項目大得多,所以我希望只使用可執行的gdalinfo(大約5mb),但看起來不像我可以直接鏈接的東西。 我知道有很多開源的iPhone應用程序,但如果你碰巧知道任何與蘋果框架以外的代碼鏈接,我真的很感興趣,看看它是如何完成的。 – Craig 2009-10-08 18:45:06

+0

那麼,顯然你想要的功能所需的代碼量必須小於40兆字節。是否可以有效地將其分開是一個單獨的問題。另外,我會認爲40 megs意味着它沒有被去掉,並且具有所有調試符號(可能非常大)。剝下它會縮小多少? – 2009-10-09 02:44:03

+0

我想我將不得不在本網站上提出更多問題。我不知道如何去除調試符號。它是使用由Christopher Stawarz編寫的腳本「build_for_iphoneos」編譯的,也許有一些關於我需要設置的標誌的說明。 在此期間,我會嘗試像框架一樣導入它,並看到我可以在完整的40mb版本上運行哪些功能。 – Craig 2009-10-09 05:06:35

1

NSTask可在ios 4,ios 3以及其他所有版本中使用。要使用NStask,我必須將NStask頭文件從我的mac複製到我的項目文件夾。此外,Apple很可能不會允許在appstore中使用NStask的應用程序。 Cydia可能是分發你的應用程序的最佳地點

+0

你在設備上測試過嗎?如果您剛剛在模擬器中進行測試,則會使用Mac OS X源代碼,因爲NSTask.m(最必要的文件)將會丟失。 – jrtc27 2010-09-04 17:34:55

+0

我相信我在一個設備上測試過它,但我不記得 – romejoe 2010-09-04 21:35:54

+0

NSTask在iOS上,你需要它的頭來編譯這一切。 – 2012-06-10 18:16:40

0

只是提醒:
NSTask不會在沙箱環境下工作(你會得到「拒絕過程叉」)。所以把你的應用程序進入/應用程序

+0

呃?我認爲你無法選擇iPhone應用程序的部署位置。 – Craig 2012-08-10 03:42:43

+1

您可能需要越獄.. – hewigovens 2012-08-10 15:13:09

+0

問:如何複製它?到我正常的項目文件夾,而不是#import它? --------- 什麼是越獄評論?如果在iOS上使用NSTask,蘋果是否會拒絕該應用程序? ----------我想這樣做:http://stackoverflow.com/questions/16626577/ios-and-calling-terminal-commandos-with-ibaction?noredirect=1#comment23907909_16626577 – webschnecke 2013-05-19 11:43:00