破解Xcode實現無證書真機除錯(支援Xcode4.6)
本方法是結合網上一些朋友的帖子,然後加上自己的理解寫的,在ML OS X 10.8環境下用XCode4.4/4.4.1 + IOS5.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/iphoneentitlementscd /Applications/Xcode.app/Contents/Developer/iphoneentitlements
sudo chmod 777 gen_entitlements.py
2)上面的命令執行成功之後,會在/Applications/Xcode.app/Contents/Developer/目錄下生成一個iphoneentitlements資料夾和其下的gen_entitlements.py檔案,如果你的電腦沒有聯網或者不能自動生成相關目錄檔案,那麼需要手動在相應的目錄建立指定的檔案,隨後需要給gen_entitlements.py設定許可權。
gen_entitlements.py指令碼檔案的內容如下:
#!/usr/bin/env python import sys import struct if len(sys.argv) != 3: print "Usage: %s appname dest_file.xcent" % sys.argv[0] sys.exit(-1) APPNAME = sys.argv[1] DEST = sys.argv[2] if not DEST.endswith('.xml') and not DEST.endswith('.xcent'): print "Dest must be .xml (for ldid) or .xcent (for codesign)" sys.exit(-1) entitlements = """ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>application-identifier</key> <string>%s</string> <key>get-task-allow</key> <true/> </dict> </plist> """ % APPNAME f = open(DEST,'w') if DEST.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)點選專案圖示,找到"Build Settings"選項下的"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工程,修改Build Settings和Build Phases下面的相關配置(參考第四步)
1)選擇你的裝置
2)隨便拖一個button,然後點選執行(Run)
3)iphone執行效果截圖
參考:http://blog.csdn.net/vrix/article/details/7851377