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

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

衆所周知,在Xcode上開發的程序只能在模擬器中運行,若是要放到真機上則要花費99美金購買開發者證書iDP。這嚴重阻礙了我等草根開發者探索的腳步。寫個小程序,同窗間分享一下這個小小的願望都不能知足,天然不能善罷甘休。 小程序

在沒有iDP的狀況下,要想將程序放到iPhone上調試,並最終發佈IPA用於分享,須要如下幾個步驟: xcode

1.本身爲本身頒發一個證書用於爲生成的程序簽名 bash

2.修改工程配置以及Xcode的配置文件和二進制文件以阻止其驗證和使用這個僞造的證書 curl

3.使用自定義的步驟爲應用程序簽名 iphone

4.使用一點小trick來生成IPA文件 工具

1.建立證書 ui

我會分幾步來講明。值得說明的是,要想真機調試,ios device必須事先越獄.建立證書的過程比較簡單,打開實用工具-鑰匙串訪問。而後在菜單欄裏點擊鑰匙串訪問-證書助理-建立證書來打開向導。第一個步驟比較重要,必需要把名稱命名爲iPhone Developer,將類型設定爲代碼簽名,將"讓我覆蓋這些默認值"選中。以後的步驟無需更改,一路點擊「肯定」和「繼續」來完成這個嚮導就能夠。 url

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

Xcode 4.1免證書(iDP)開發+真機調試+生成IPA全攻略

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建立新工程,則會報錯,須要作以下修改:

一、將【Objective-C Automatic Reference Counting】的默認值由【YES】改成【NO】;

二、輸入下面的代碼注意沒有特殊字符

 
  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   
相關文章
相關標籤/搜索