XCode 4.2(4.1)真機調試及產生IPA全攻略

來源:互聯網
上載者:User

網上有不少關於xocde3.x真機調試的文章,但鮮有xcode4.2相關的資料。參考了一些文章,終於可以在xcode4.2上進行真機調試了,在此記錄下。

眾所周知,在Xcode上開發的程式只能在模擬器中運行,如果要放到真機上則要花費99美金購買開發人員認證iDP。這嚴重阻礙了我等草根開發人員探索的腳步。寫個小程式,同學間分享一下這個小小的願望都不能滿足,自然不能善罷甘休。

在沒有iDP的情況下,要想將程式放到iPhone上調試,並最終發布IPA用於分享,需要以下幾個步驟:

1.自己為自己頒發一個認證用於為產生的程式簽名

2.修改工程配置以及Xcode的設定檔和二進位檔案以阻止其驗證和使用這個偽造的認證

3.使用自訂的步驟為應用程式簽名

4.使用一點小trick來產生IPA檔案

1.建立認證

我會分幾步來說明。值得說明的是,要想真機調試,ios device必須事先越獄.建立認證的過程比較簡單,開啟工具 + 生產力-鑰匙串訪問。然後在功能表列裡點擊鑰匙串訪問-認證助理-建立認證來開啟嚮導。第一個步驟比較重要,必須要把名稱命名為iPhone Developer,將類型設定為程式碼簽署,將"讓我覆蓋這些預設值"選中。之後的步驟無需更改,一路點擊“確定”和“繼續”來完成這個嚮導就可以。

1.建立認證,這個沒什麼好說的,網上資料一大堆,只要別寫錯名字就好,認證名一定要為 iPhone Developer

2.破解ios sdk及其xcode的相關設定檔(雙擊設定檔就可以開啟,注意SDKSettings.plist有許可權控制)

修改/Developer/Platforms/iPhoneOS.platform目錄下的Info.plist檔案,將其中的 XCiPhoneOSCodeSignContext 都改為XCCodeSignContext

修改/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk目錄下的SDKSettings.plist檔案,修改如下欄位:

 
  1. <key>CODE_SIGNING_REQUIRED</key> 
  2. <string>NO</string> 
  3.  
  4. <key>ENTITLEMENTS_REQUIRED</key> 
  5. <string>NO</string> 

3.破解xcode二進位檔案。建立一個crack檔案,內容如下:

 
  1. #!/bin/bash 
  2. cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/PrivatePlugIns/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/ 
  3. dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255 
  4. printf "xc3x26x00x00" >> working 
  5. /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original 
  6. /bin/mv -n working iPhoneOS\ Build\ System\ Support 
  7. chmod a+x iPhoneOS\ Build\ System\ Support 

然後執行 chmod +x crack執行./crack,沒錯誤就正常

4.修改xcode工程設定檔

1) 下載指令碼

開啟終端,執行如下操作

 
  1. cd  /Developer 
  2. mkdir xcode-crack 
  3. curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt 
  4. mv gen_entitlements.txt gen_entitlements.py 
  5. chmod 777 gen_entitlements.py

2) 禁用Xcode自動的簽名操作

將工程配置中所有的Code Signing選項全部設為Don't Code Sign,。可能需要先點擊“All”讓這個選項顯示出來

3)添加自訂的產生後指令碼

在Build Phases中添加一個Phase,右下角的Add Build Phase,然後單擊Add Run Script,輸入以下指令碼()

 
  1. export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate 
  2. if [ "${PLATFORM_NAME}" == "iphoneos" ]; then 
  3. /Developer/xcode-crack/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent"; 
  4. codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/" 
  5. fi 

5。打包應用程式,產生ipa檔案

在xcode上選擇product菜單,選擇Build For ---> Build for Achiving,就能成ipa檔案了。

可以將這個檔案拖到itunes,就可以產生一個ipa檔案,

至此,我們就可以隨心所欲地開發並調試ios程式了,並可以將打包好的ipa檔案分享給他人

按照上面的步驟匯入3.x的工程成功運行,但是如果用XCode 4.2建立新工程,則會報錯,需要做如下修改:

1、將Objective-C Automatic Reference Counting】的預設值由YES】改為NO】;

2、輸入下面的代碼注意沒有特殊字元

 
  1. export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate   
  2. if [ "${PLATFORM_NAME}" == "iphoneos" ]; then   
  3. /Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";   
  4. codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"   
  5. fi   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.