使用者登入

全站搜尋

最新回應

論壇最新主題

論壇最新回覆

會員排行榜

線上使用者

目前共有 0 位註冊使用者2 位訪客 在線上。

cygwin 開發平台(windows版 iPhone SDK)

babyfish0226
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
export 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 的資料夾並將 HelloInfo.plist上傳到您iPhone的Application目錄。

上傳後記得修改 hello.app 的檔案及資料夾權限,左下角的那個套用的勾一定要打開喔。

接下來將iPhone重新開機(或是利用SummberBoard內的Restart SpringBorard功能),您就能在桌面上看到您剛上傳的 hello 程式囉,因為我們並未指定軟體的圖示,所以您看到的暫時是一個問號,趕快給他點下去吧。

 

Perfect!雖然目前只能有上下點選的功能,不過這可是道道地地的iPhone原生程式喔,有沒有那麼一點感動的Feel呢?若真有心從事iPhone軟體的開發,那後面還有好長的一段路要走,對站長來說,同樣也仍在學習,就讓我們一起加油、努力吧!

 

 



Sdany
Sdany 的照片

版主您好, 我使用您

版主您好,

我使用您提供的檔案資料
未安裝 cygwin ,直接使用您的設定
進入後,指令都無法操作

後來自己安裝 cygwin
再把您提供的所有檔案複蓋到安裝好的資料夾中
也是發生上列問題

最後,使用自己安裝 Cygwin
然後把您提供的檔案 opt 整個資料夾複製進來
已經可以用了

依您的操作步驟,也正常產出程式

但最後,我的 iPhone iOS 是 4.2.1
執行hello都直接回到主畫面
是否版本不合的問題

請問,是否能提供新版本程式呢?


sevenilu
sevenilu 的照片

上傳hello 到iphone后找不到icon

己經上傳, 改了權限及restart iphone, 還是見不到新icon


dskit
dskit 的照片

cygwin 開發平台(windows版 iPhone SDK)

請問這篇還有續集嗎? 我迫不及待要看了!


hinoto
hinoto 的照片

無法執行所有指令耶~

環境變數也設定完畢~
執行 Cygwin.bat 之後~
無論打入 cd /、ls 等指令都完全沒有反應~
想請問一下是不是有板友郁到相似的情況呢?
是不是有解決方案或是我少了什麼步驟?
再麻煩指示小弟一下囉~


arthurp
arthurp 的照片

找不到

找不到 iphone-sdk-cygwin-3.0_iphonetw.rar 了耶, 這要去哪裡找啊?


xiu1977
xiu1977 的照片

YEAH太完美了

YEAH太完美了


nio127
nio127 的照片

幾個問題想請問站長

幾個問題想請問站長,最後有提到「我們先建立一個名為 hello.app 的資料夾並將 Hello及Info.plist上傳到您iPhone的Application目錄。」

  1. 這裡的建立是指在iPhone上面建立目錄嗎?
  2. 而下面hello.app權限設定的畫面,好像不是檔案總案的內容,可以說明一下嗎?
  3. 另外,如何上傳到iPhone呢? 是直接放到iPhone同步的Application目錄下嗎?

麻煩站長了,謝謝。


babyfish0226
babyfish0226 的照片

此篇的資料有點舊了

此篇的資料有點舊了,目前的開發建議還是以官方的iPhone SDK為佳,不管是在學習或是未來新功能的運用上。

權限設定畫面上看到的是WinSCP的設定畫面,上傳也是使用WinSCP來傳輸。


pu168888
pu168888 的照片

已經順利能產生hello源

已經順利能產生hello源生檔了!!
可是傳到iPhone上不能執行耶??
我是2.2版的已破解越獄!!
大大幫幫忙就差臨門一腳!!


pu168888
pu168888 的照片

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

哪裡的問題??就差這一步了
大大幫幫忙!!

以重別台電腦安裝完成!!


wess2000
wess2000 的照片

測試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

請問我該如何解決呢???


afmchan
afmchan 的照片

不知道要复制到那里?

请问要复制什么呢?/home里有一个administrator的文件啊,要复制到那里?谢。


babyfish0226
babyfish0226 的照片

我後來也發現到這個

我後來也發現到這個問題,因為壓縮包省略了安裝的過程,因此少了設定環境變數的指定動作,這部份我會再修正。目前您可以先安裝官方的cygwin之後,再把壓縮包的檔案覆蓋過去即可正常。


ciasom
ciasom 的照片

哈哈,我正是这样做的

 把/etc/passwd,/etc/group和/home下面的内容复制了过来,就好了。 Thanks a lot.


ciasom
ciasom 的照片

下载下来的压缩包有点问题

进入cygwin之后没有设置profile里面的环境变量,象ls这样的命令都执行不起来 


melck
melck 的照片

傳送後找不到App

大大, 我每個步驟都能順利進行, 但用WinSCP將檔案放到我的Ipod touch(2.2.1)後, 重新開機後卻找不到那App, 大大能指教一下嗎? 謝謝!!


perrywu
perrywu 的照片

新的ipod會catch...要重新force他catch一下

新的ipod會catch他的程式,請到Cydia裡面安裝一個叫做UIKit Tools ,裝好了就找的到了...
只是...這支hello word好像太舊了,我在Ipod touch(2.2.1)一run 就跑回spring board.