用Xcode3將程式放上iPhone的程序

用Xcode3將程式放上iPhone的程序:2009年11月03日星期二

由"No provisioned iPhone OS device is connected!"一文可知,在歷經千辛苦後,終於經由Xcode將程式放上iPhone了,這一個程序的不確定性,值得為文記之。

首先,依照Erica的iPhone SDK開發範例大全所述,共有三種方式可以讓程式放上iPhone,如下:

  1. 自己開發的程式,經由Xcode load上iPhone(iPhone SDK開發範例大全1-11-8, p47到48,在iPhone上測試應用程式)。
  2. 自己開發的程式,經由Ad Hoc方式讓99位試用者使用(iPhone SDK開發範例大全1-13, p51到52,Ad Hoc散佈方式)。
  3. 開發程式放到Apple Store上,供大家經由iTune下載(iPhone SDK開發範例大全1-13, p48到50,散佈版本的編譯作業)。

以上三階段,逐步困難,終極目標當然是--->3.開發程式放到Apple Store上,要到達Apple Store,阿羯以為另有以下兩階段:

0. 用Xocde在Mac上開發程式後,在Mac上用iPhone Simulator測試。

1.5. 自己開發的程式,將souce code給另一位已加入iPhone開發者計劃(交了$99美金)的人,而且此人有自己的iPhone及Mac,他可以用其Mac上的Xcode將收到的程式 load上他自己的iPhone。

所以,總結,真正的開發過程有五段:

0. 用iPhone simulator。

1. 用Xcode load自己的程式上iPhone。

1.5 用Xcode load別人的程式上iPhone。

2. 程式經由Ad Hoc 方式上99支iPhone。

3. 程式上Apple Store上任何iPhone。

本文要講的是上述的1及1.5的程序。

先講----1. 自己開發的程式,經由Xcode load上iPhone:

第一步是要上iPhone Developer Program參加Apple的iPhone開發者計劃(iPhone SDK開發範例大全1-10, p40有簡略說明)。

參加開發者計劃有兩步驟,一是登記,二是繳費(個人是美金$99元)。自身的經驗好像不是一登記就好了,Apple會要求一些有的沒的,與幾位參加了開發者計劃的人交換意見,似乎大家都有各自不同卻類似的情形。

第二步是到iPhone Dvelopement Portal去取得provision profile。

  1. 要取得provision profile,需設定好Certificates、Devices、App IDs,才能Provisioning。見下圖一, 阿羯是點左邊星號處的Certificates、Devices、App IDs,Provisioning完成的。後來發現Launch Assistant(圖一中下星號處)可一步一步完成Certificates、Devices、App IDs,Provisioning。圖一右方星號的video也可參考。
  2. 特別注意,需回答資訊時,若不確定,先看一下自己的profile,見圖三。
  3. 總之,目的是取得provision profile。整個過程還會有些動作需download至MAC上,並放入Keychain(鑰匙圈存取)、見圖四,對不熟悉MAC的人,有些挑戰。要打開鑰匙圈存取,打開MAC桌面上的Macitosh HD,再順著"應用程式/工具程式/鑰匙圈存取"即可。或用ctrl-space打開MAC的Spotlight,再鍵入"鑰匙圈存取"就會找到鑰匙圈存取。
  4. 這一步驟的終極目標是拿到provision profile並將其下載到MAC上。本例的provision file名是20091029.mobileprovision,下載後在Macitosh HD/admin/下載項目內。見圖二。

圖一:iPhone Program Portal

圖二:provision file 20091029.mobileprovision在Macitosh HD/admin/下載項目內。見下圖中的20091029.mobileprovision。

圖三:Personal Profile 。

圖四:Keychain、鑰匙圈存取。對不熟悉MAC的人,有些挑戰。要打開鑰匙圈存取,打開MAC桌面上的Macitosh HD,再順著"應用程式/工具程式/鑰匙圈存取"即可。或用ctrl-space打開MAC的Spotlight,再鍵入"鑰匙圈存取"就會找到鑰匙圈存取。

第三步,將iPhone連上MAC,一連上,iPhoto、iTunes都會自動打開,這時最重要的是--千萬別upgrade OS,維持OS3.0,iPhoto、iTunes會一陣同步,等到這一切做完,將iPhoto、iTunes都關掉,再將Xcode打開。

  1. 一打開Xcode,圖五就出現了,記住按Ignore、千萬按下"Continue Using for Development"鍵(依Erica的iPhone SDK開發範例大全所言)。
  2. 接著,到Window/Organizer打開Organizer,出現圖六,出現iPhone已經連上的畫面,按下Use for Development畫面後,會出現圖七。
  3. 接著將provision file拉入provisioning,本例的provision file name是20091029.mobileprovision(見圖二)。Provision file 20091029成功地拉入organizer/provisioning後, 圖七provisoning右方的框內,DEVICES下jesselue右的燈號會轉為綠色,如圖七。
  4. 接著,double click Target下的Camera(左下星號處、本程式是Camera),出現右半邊Target "Camera" Info,選Build,往下看Code Signing/Code Signing Identity/Any iPhone OS Device,按 Any iPhone OS Device,選20091029(記得provision file是20091029.mobileprovision?)下的iPhone Developer(其後有名字及號碼)。 見圖八。
  5. 接著,Double click Camera-Info.pist,將Bundle identifier改為一串自己的identifier,這串identifie在第二步是到iPhone Dvelopement Portal去取得provision profile時需鍵入,我在那兒鍵入com.jesselue.*,依iPhone規定,我在這裡必需鍵入com.jesselue.隨便什麼,*表示隨便什麼,所以此處我鍵入com.jesselue.camera。圖九。
  6. 最後,將Xcode左上的Device-3.0|Debug改成iPhone Device 3.0(Base SDK),如下圖上方。 再check Project/Set Active SDK時,會發現自動改成iPhone Device 3.0(Base SDK)了,如下圖中段。再Build/ Build and Go(Run),這時,程式就會load上iPhone了。別太高興,若這時急著在iPhone跑程式,會不成功,因為Xcode仍連著iPhone,需停止Xcode上這程式即可。一切大功告成。如圖十。

圖五:將iPhone連上MAC,第一次開Xcode,這張圖取自Erica的iPhone SDK開發範例大全p41,阿羯的iPhone第一次連上MAC、開Xcode忘了留下來,所以只好用書上的,可能不完全一樣。重點是按下"Continue Using for Development"鍵。按Ignore。

圖六:出現iPhone已經連上的畫面,按下Use for Development畫面後,會出現圖七。

 

圖七:再將provision file拉入provisioning,本例的provision file name是20091029.mobileprovision(見圖二)。Provision file 20091029成功地拉入organizer/provisioning後, 圖六provisoning右方的框內時,DEVICES下jesselue右的燈號會轉為綠色,如下圖。

圖八:double click Target下的Camera(左下星號處、本程式是Camera),出現右半邊Target "Camera" Info,選Build,往下看Code Signing/Code Signing Identity/Any iPhone OS Device,按 Any iPhone OS Device,選20091029(記得provision file是20091029.mobileprovision?)下的iPhone Developer(其後有名字及號碼)。

圖九:Double click Camera-Info.pist,將Bundle identifier改為一串自己的identifier,這串identifie在第二步是到iPhone Dvelopement Portal去取得provision profile時需鍵入,我在那兒鍵入com.jesselue.*,依iPhone規定,我在這裡必需鍵入com.jesselue.隨便什麼,*表示隨便什麼,所以此處我鍵入com.jesselue.camera。

圖十:將Xcode左上的Device-3.0|Debug改成iPhone Device 3.0(Base SDK),如下圖上方。 再check Project/Set Active SDK時,會發現自動改成iPhone Device 3.0(Base SDK)了,如下圖中段。再Build/ Build and Go(Run),這時,程式就會load上iPhone了。別太高興,若這時急著在iPhone跑程式,會不成功,因為Xcode仍連著iPhone,需停止Xcode上這程式即可。一切大功告成。

再講:1.5 用Xcode load別人的程式上iPhone。

假設你已有provision file, 取得別人的程式source code後,執行以上圖八、圖九、圖十即可將別人的程式load上自己的iPhone玩樂了。