1. 程式人生 > >XCode5 免證書真機除錯,開發IOS7應用程式

XCode5 免證書真機除錯,開發IOS7應用程式

寫在前面:之前寫了一篇申請IDP的教程(http://blog.csdn.net/it_magician/article/details/8658670),整個過程最長可能會在半個月左右。對於那些等不及需要聯機除錯,或者不打算申請IDP的個人自學者或越獄機開發者,其實還有一個方法可以實現真機除錯,那就是破解Xcode的證書限制(前提是iOS裝置已越獄)。以下教程是轉載的,感謝原作者的分享,本人親測可行(支援最新Xcode4.6版)。

原文地址:http://blog.csdn.net/vrix/article/details/7851377

本方法是結合網上一些朋友的帖子,然後加上自己的理解寫的,在ML OS X 10.8環境下用XCode4.5+ IOS6.0.1實測可行!

ps:使用無證書除錯,也意味著你的裝置要越獄!

第一步:製作證書

1)開啟  Finder->應用程式->實用工具 ->  鑰匙串訪問 

2)單擊:"鑰匙串訪問"選擇  "證書" 再選擇"建立證書"過程如下圖:

注意:證書名稱必須填寫為 iPhone Developer

 


 

 

 

 

 

 

 

第二步:修改XCode配置檔案

注:如遇到檔案無法解鎖沒有許可權不能修改,可以複製一份出來,修改好之後將原來的替換掉

1)修改SDKsettings.plist檔案

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk

開啟該目錄下的SDKSettings.plist檔案,把CODE_SIGNING_REQUIRED和ENTITLEMENTS_REQUIRED的值改成NO

2)修改Info.plist檔案

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/

用XCode開啟該目錄下的Info.plist檔案,右擊--Add Row,增加兩項:

PROVISIONING_PROFILE_ALLOWED 值為 NO

PROVISIONING_PROFILE_REQUIRED 值為 NO

3)將上面Info.plist檔案中的 "XCiPhoneOSCodeSignContext" 替換成"XCCodeSignContext"(共3處)

第三步:設定gen_entitlements.py指令碼許可權

注:如果你的電腦聯網了,那麼執行1)的命令後會在相應的目錄自動建立iphoneentitlements資料夾及其下的gen_entitlements.py檔案,如執行後沒有生成指定檔案,請重複執行下面的命令或者換第二種方法,兩種生成指令碼檔案的方法任選一種。

1)在終端執行如下命令:

mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlements

cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements

mv gen_entitlements.txt gen_entitlements.py

sudo chmod 777 gen_entitlements.py

2)上面的命令執行成功之後,會在/Applications/Xcode.app/Contents/Developer/目錄下生成一個iphoneentitlements資料夾和其下的gen_entitlements.py文 件,如果你的電腦沒有聯網或者不能自動生成相關目錄檔案,那麼需要手動在相應的目錄建立指定的檔案,隨後需要給gen_entitlements.py設 置許可權。

gen_entitlements.py指令碼檔案的內容如下:

#!/usr/bin/envpython

import sys

import struct

if len(sys.argv)!= 3:

    print "Usage: %s appnamedest_file.xcent" % sys.argv[0]

    sys.exit(-1)

APPNAME =sys.argv[1]

DEST =sys.argv[2]

if notDEST.endswith('.xml') and not DEST.endswith('.xcent'):

    print "Dest must be .xml (for ldid) or.xcent (for codesign)"

    sys.exit(-1)

entitlements ="""

<?xmlversion="1.0" encoding="UTF-8"?>

<!DOCTYPEplist PUBLIC "-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plistversion="1.0">

<dict>

   <key>application-identifier</key>

    <string>%s</string>

    <key>get-task-allow</key>

    <true/>

</dict>

</plist>

"""% APPNAME

f = open(DEST,'w')

ifDEST.endswith('.xcent'):

    f.write("\xfa\xde\x71\x71")

    f.write(struct.pack('>L',len(entitlements) + 8))

f.write(entitlements)

f.close()

在終端給gen_entitlements.py設定許可權(可能會要你輸入密碼)

sudo chmod 777 /Applications/Xcode.app/Contents/Developer/iphoneentitlements/gen_entitlements.py

第四步:修改專案屬性 (每次新建專案都要執行)

1)點選專案圖示,找到"BuildSettings"選項下的"Code Sign Identity",將其值全部改為"Don't Code Sign"

 

2)切換到Build Phases選項,點選右下角的Add Build Phase,然後單擊Add Run Script,然後在Run Script中輸入以下指令碼:

export

CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate

if [ "${PLATFORM_NAME}" =="iphoneos" ] || [ "${PLATFORM_NAME}" == "ipados"]; then

/Applications/Xcode.app/Contents/Developer/iphoneentitlements/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";

codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"

fi

 

第五步:連線裝置(iphone/ipad)

點XCode右上角的Organizer圖示,然後選中你的裝置,在右邊視窗中點選“Use for Development” 即可,此時你的裝置名稱旁邊應該顯示黃色的小燈,重新拔插資料線,Organizer中會出現一個進度條,等這個進度條跑完,小燈就會變成綠色,開發模式 已經啟用。

 

測試真機除錯:

建立一個Page-based Application工程,修改BuildSettings和Build Phases下面的相關配置(參考第四步)

1)選擇你的裝置

 

2)隨便拖一個button,然後點選執行(Run)

3)iphone執行效果截圖