使用者登入

全站搜尋

最新回應

論壇最新主題

論壇最新回覆

會員排行榜

線上使用者

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

在OS X上建立非官方Toolchain經驗分享

babyfish0226
babyfish0226 的照片

硬體型號:MAC MINI
OS版本:OS X 10.5.2
處理器:1.8G Intel Core 2 Duo
記憶體:3G
系統環境:僅線上更新後的全新 OS X
iPhone韌體版本:1.3
1.安裝Xcode 3.0
Xcode檔案請至 http://developer.apple.com/tools/xcode/ 下載,安裝完成後請開啟終端機並輸入下列指令以確認部份工具是否已正確的安裝

#bison --version
#flex --version
#gcc --version
#svn --version

若安裝正確的話則上述工具的版本將分別顯示為2.3、2.5.33、4.0.1及1.1.4 (Xcode 3.0)

2.建立並取得iPhone的檔案系統
若您登入的帳號並非admin權限的話請輸入下列的指令,若是則請跳過
#su [您的登入帳號]
輸入您的密碼

讓登入的系統管理員帳號取得root的權限
#sudo -s
輸入您的密碼

透過Wi-Fi直接由您的iPhone下載檔案系統,此方式省去了早期下載韌體再解密的複雜動作。
(以下的方式節錄自iPhone Open Application Development一書)

bash-3.2# mkdir -p /usr/local/share/iphone-filesystem
bash-3.2# cd /usr/local/share/iphone-filesystem
bash-3.2# mkdir -p ./System/Library ./usr
bash-3.2# scp -r root@[您iPhone的網路IP]:/System/Library/Frameworks/ .

若您是第一次以SCP的方式連上iPhone則會出現下列訊息
The authenticity of host '192.168.0.101 (192.168.0.101)' can't be established.
RSA key fingerprint is 39:cb:ea:83:4e:98:c8:5a:12:55:0c:6a:50:a4:25:8b.
Are you sure you want to continue connecting (yes/no)? yes <--請輸入yes
Warning: Permanently added '192.168.0.101' (RSA) to the list of known hosts.
root@192.168.0.101's password: <--輸入您iPhone的ssh連線密碼,預設為alpine

等待下載完成後繼續下面的動作

bash-3.2# mv Frameworks ./System/Library
bash-3.2# scp -r root@iphone:/usr/lib .
bash-3.2# mv lib ./usr

上面的動作主是是將iPhone上的兩個重要檔案系統的資料夾下載下來,對應位置如下:

iphone上的/System/Library/Frameworks/ 複製到/usr/local/share/iphone-filesystem/System/Library/Frameworks

iphone上的/usr/lib 複製到 /usr/local/share/iphone-filesystem/usr/lib

當您完成filesystem的下載之後就可以開始建立ToolChain了。

3.建立iPhone ToolChain
這裡利用Kevin Chiu所提供一鍵編譯法(幫您寫成script了),請先下載 leopard_toolchain.sh (附件1)並在終端模式下切換到該檔案的位置並輸入:
bash-3.2#sudo bash ./leopard_toolchain.sh (請確認此時您電腦的對外網路連線是正常的)

接下來您可以先去泡泡茶或看看電視,這個過程會花上比較多的時間

... ... .. .

完成後趕快找個範例來試試吧,不能免俗的我們還是選則了helloWorld來做為我們的第一程式
(採用由David Supuran所撰寫的helloWorld範例)

4.測試helloWorld範例程式

請下載此版本專用的hellworld範例(見附件2)

在helloWorld的位置下直接輸入

#make
arm-apple-darwin-gcc -c -Wall -pipe -ansi -O3 -mmacosx-version-min=10.1 MyExample.m -o MyExample.o
arm-apple-darwin-gcc -lobjc -framework CoreFoundation -framework Foundation -framework UIKit -framework LayerKit -framework CoreGraphics MyExample.o -o MyExample
/usr/local/bin/arm-apple-darwin-ld: warning unknown -macosx_version_min parameter value: 10.5.2 ignored (using 10.1)

唉呀,看起來程式是順利建立了,但卻有個奇怪的錯誤訊息,這個訊息站長試了很多方式仍無法解決,似乎是leopard上才有的討厭提示,不過經測試,程式是正常的,所以就暫時不予理會。

最後直接將helloWorld.app上傳至您iPhone的Applications資料夾並重新啟動SpringBoard之後就可以在iPhone的畫面上看到您編譯成功後所得到的iPhone原生程式喔,是不是相當的簡單呢。

註:重啟SpringBoard的方式
1.利用SummerBoard設定中的Restart SpingBoard
2.利用ssh連上iPhone並下killall SpringBoard
範例:#ssh root@[您iPhone的IP]
#killall SpringBoard
此時您會發現您的iPhone就會回到Lock的畫面了。

其 實網路上對build iPhone Toolchain的文章不少,但每個人測試的系統或平台不同也因此造成了許多不同的狀況,而就算成功建立了ToolChain卻也缺少了第一支合適的範 例程式能夠順利的編譯並正常的在iPhone上執行(找一個helloWorld有那個困難嗎?),而常常也因某個參數的不同,就可能造成在學習過程中的 中斷,而其實只要過了ToolChain這關,就算踏出iPhone開發的第一步,好的開始是成功的一半,希望藉由此篇文章能讓更多的朋友順利的加入 iPhone開發的行列。

參考連結:
Kevin Chiu - iPhone Toolchain for Leopard - Version 0.30
helloWorld - iPhone basic "hello world" application

 

附件1 leopard_toolchain.sh.zip

附件2 helloWorld.zip

參與此文章的討論



liumin
liumin 的照片

求问

现在这个方法还可行吗


babyfish0226
babyfish0226 的照片

這份教學僅在當初的iP

這份教學僅在當初的iPhone1.1.3上實機測試過,而iPhone3G的2.0韌體改版幅度過大,也許大部分的資料均已無法相容,我找一天重新試試好了!不過,也可以考慮使用官方的SDK,畢竟資源較多而開發工具也比較完整。


mitsui
mitsui 的照片

謝謝你的解答~

其實我都試過在官方SDK開發, 但始終有些東西好像缺少了,
好像UIKit裡的UIKeyboard等header file都沒有,
那麼如果想做一個新的輸入法, 應該如何入手呢?
謝謝!


mitsui
mitsui 的照片

請問...

如果我是用 xcode 3.1 , final sdk for iphone 3G,
這個toolchain我可以用嗎?
因為按照上述步驟安裝了, 也不能成功complie 到 helloworld.
謝謝