babyfish0226 ![]() |
iPhone開發的介紹之前就想寫了,只是最近站長又跑回去玩機器人,所以iPhone文章的撰寫就有一點小偷懶,不過今天還是找了個時間把他完成。 若您夠細心且對iPhone上開發程式有興趣的朋友可能都已經發現到,在本站的檔案下載區早就已提供了iPhone的完整開發環境cygwin,若您一直沒注意到也沒關係,現在我就帶您認識一下cygwin及在cygwin的環境下如何編譯及開發iPhone的原生程式。 對一般人來說想開發iPhone的程式首先得克服的第一關就是 iPhone ToolChain的編譯,甚麼是iPhone的ToolChain?簡單的來說就是讓您在Linux或osx的系統下擁有編譯及開發iPhone原生程式的環境,詳細的資訊您可以參iPhone-dev的官方資訊。 目前iPhone ToolChain支援的環境有Linux及osx,若要在Windows下開發則必須透過我們今天的主角cygwin來模擬Windows的環境了(當然您也可以選擇在Windows上安裝vmware或virtualbox來架設Linux的系統),為何要選擇 cygwin做為我們開發iPhone的平台呢?除了站長本身習慣使用Windows之外,最重要的是cygwin簡單而且不需要設定與安裝,這點可以讓所有人都能在一個相同的環境之下來學習iPhone的開發,工欲善其事必先利其器,若大家的使用環境都可能因安裝或設定的不同而有所差異,我想相對的遇上的狀況與困難也會增加不少,甚至有可能在還沒接觸到iPhone程式的撰寫之前就直接陣亡,這樣就太可惜了,因為iPhone程式的開發並非想像中那樣的困難。 早期站長為了嘗試編譯出正確的iPhone ToolChain吃了不少苦頭,無論是安裝Linux系統,或是使用cygwin測試,甚至是差點買了一台iMac,都是希望能趕快進入iPhone開發的世界,可惜,所有的努力仍告失敗,所幸,在某一個因緣際會下站長取得了成功編譯iPhone ToolChain的cygwin版本,這是一個相當重要的開始,這也是我能寫這篇文章的主要原因。 好了,現在讓我們趕快進入主題吧,首先您必須從本站的軟體區下載專用的cygwin版本
然後進入ShareMe的檔案下載區下載iphone-sdk-cygwin-3.0_iphonetw.rar檔案(您必須先註冊為ShareMe的會員)。
檔案不小,有159MB,請耐心下載,下載完成後請直接將檔案進行解壓縮即可,建議預設路徑為 d:\ ,若您要放在任何地方也沒關係。 解壓後您會在d:的根目下找到 cygwin的資料夾,而在進入cygwin之前,首先我們先要設定一下環境變數,請用文書處理軟體打開d:\cygwin\etc\ 下的profile檔案並尋找 PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/opt/iphone/bin:$PATH 並加入紅色字的字串,然後直接執行 d:\cygwin資料夾下面的Cygwin.bat 檔案就可以進入cygwin的開發環境。 接下來我們會使用到一些簡單的Linux指令,若有不熟悉的請利用Google查詢,這裡我就不多加說明。 若您在cygwin的畫面中看到hello的資料夾,那恭喜您,歡迎進入iPhone創作的世界,對於任何的程式語言來說,不能免俗的我們也來寫我們在iPhone上的第一支程式 helloworld!
我們趕快切換到 hello 的目錄,此時您會發現在hello的資料夾有目前一共有八支檔案,關於這八支檔案的功能及用途我陸續會在後面的專欄文章內介紹,而這裡看到的檔案清單對照到您在Windows檔案總管內看到的目錄及檔案是相同的,如 /opt/iphone/hello 則等於 D:\cygwin\opt\iphone\hello 另外由於iPhone的程式是屬於描述式的語言,因此我們直接以文字處理器(記事本notepad或是NotePad++)來進行程式碼的撰寫即可,現在我們打開 HelloApplication.m 這支檔案如下圖:
您可以將上述的文字修改為任何您想要的,這裡將Hello world 改為 My First iPhone Apps,然後存檔後再回到cygwin的操作畫面。 首先先清除之前產生的暫存檔,請在指令列下 make clean 然後我們開始進行編譯並產生iPhone可使用的原生軟體的格式 make
若編譯正確則會不會產生任何的錯誤訊息,而過程的畫面會同上圖。 恭喜您,您完成了您iPhone上的第一支原生程式囉,現在只要將您的程式上傳至iPhone就可以了。 剛剛提到hello的資料夾下有八支檔案,這其中有的是原始碼,有的是編譯後產生的連結與執行檔,若您不希望將您的原始碼給人家看到,那麼您就必須挑出程式『必要』的檔案即可。 我們先建立一個名為 hello.app 的資料夾並將 Hello及Info.plist上傳到您iPhone的Application目錄。
上傳後記得修改 hello.app 的檔案及資料夾權限,左下角的那個套用的勾一定要打開喔。
接下來將iPhone重新開機(或是利用SummberBoard內的Restart SpringBorard功能),您就能在桌面上看到您剛上傳的 hello 程式囉,因為我們並未指定軟體的圖示,所以您看到的暫時是一個問號,趕快給他點下去吧。
Perfect!雖然目前只能有上下點選的功能,不過這可是道道地地的iPhone原生程式喔,有沒有那麼一點感動的Feel呢?若真有心從事iPhone軟體的開發,那後面還有好長的一段路要走,對站長來說,同樣也仍在學習,就讓我們一起加油、努力吧!
|
上傳hello 到iphone后找不到icon
己經上傳, 改了權限及restart iphone, 還是見不到新icon
無法執行所有指令耶~
環境變數也設定完畢~
執行 Cygwin.bat 之後~
無論打入 cd /、ls 等指令都完全沒有反應~
想請問一下是不是有板友郁到相似的情況呢?
是不是有解決方案或是我少了什麼步驟?
再麻煩指示小弟一下囉~
找不到
找不到 iphone-sdk-cygwin-3.0_iphonetw.rar 了耶, 這要去哪裡找啊?
YEAH太完美了
YEAH太完美了
幾個問題想請問站長
幾個問題想請問站長,最後有提到「我們先建立一個名為 hello.app 的資料夾並將 Hello及Info.plist上傳到您iPhone的Application目錄。」
麻煩站長了,謝謝。
此篇的資料有點舊了
此篇的資料有點舊了,目前的開發建議還是以官方的iPhone SDK為佳,不管是在學習或是未來新功能的運用上。
權限設定畫面上看到的是WinSCP的設定畫面,上傳也是使用WinSCP來傳輸。
已經順利能產生hello源
已經順利能產生hello源生檔了!!
可是傳到iPhone上不能執行耶??
我是2.2版的已破解越獄!!
大大幫幫忙就差臨門一腳!!
make發生已下錯誤??
/opt/iphone/bin/arm-apple-darwin-id:Hello.o cmdsize field of load command 0 is inconsistant for a segment commend with the
number of sections it has
/opt/iphone/bin/arm-apple-darwin-id:HelloApplication.o align (768) of section 5 (_OBJC,_symbols) in load command 0 greaqter
than maximum section alignment (15)
collect2:Id return 1 exit status
哪裡的問題??就差這一步了
大大幫幫忙!!
以重別台電腦安裝完成!!
測試hello world發生錯誤
請問一下
我在測試hello world的時候卻出現下面的文字
/opt/iphone/bin/arm-apple-darwin-id:Hello.o cmdsize field of load command 0 is inconsistant for a segment commend with the
number of sections it has
/opt/iphone/bin/arm-apple-darwin-id:HelloApplication.o align (768) of section 5 (_OBJC,_symbols) in load command 0 greaqter
than maximum section alignment (15)
collect2:Id return 1 exit status
請問我該如何解決呢???
不知道要复制到那里?
请问要复制什么呢?/home里有一个administrator的文件啊,要复制到那里?谢。
我後來也發現到這個
我後來也發現到這個問題,因為壓縮包省略了安裝的過程,因此少了設定環境變數的指定動作,這部份我會再修正。目前您可以先安裝官方的cygwin之後,再把壓縮包的檔案覆蓋過去即可正常。
哈哈,我正是这样做的
把/etc/passwd,/etc/group和/home下面的内容复制了过来,就好了。 Thanks a lot.
下载下来的压缩包有点问题
进入cygwin之后没有设置profile里面的环境变量,象ls这样的命令都执行不起来
傳送後找不到App
大大, 我每個步驟都能順利進行, 但用WinSCP將檔案放到我的Ipod touch(2.2.1)後, 重新開機後卻找不到那App, 大大能指教一下嗎? 謝謝!!
新的ipod會catch...要重新force他catch一下
新的ipod會catch他的程式,請到Cydia裡面安裝一個叫做UIKit Tools ,裝好了就找的到了...
只是...這支hello word好像太舊了,我在Ipod touch(2.2.1)一run 就跑回spring board.