XCode6.0的iOS免證書真機(jī)測(cè)試方法(MAC及黑蘋果均有效)
目前在XCode上開發(fā)的iOS程序只能在模擬器Simulator中運(yùn)行,如果要放到真機(jī)上測(cè)試,需要蘋果官方認(rèn)證的開發(fā)者賬號(hào),購(gòu)買開發(fā)者證書iDP,99美金一年啊!
作為剛開始學(xué)習(xí)iOS編程的菜鳥,這么大手筆花錢實(shí)在是肉疼。。。經(jīng)過一番折騰,借鑒各種大神的帖子,終于成功在真機(jī)上編譯運(yùn)行成功!
這里將方法與大家分享。
我的運(yùn)行環(huán)境是:【電腦】XCode6.0.1 + OS X 10.9.5 【真機(jī)iPod Touch】iOS6.1
準(zhǔn)備工作:
1. 首先,你要有一個(gè)已經(jīng)越獄的iPhone/iPod/iPad,越獄方法此處不提供。
2. 在用來測(cè)試的真機(jī)Cydia中添加源:http://apt.weiphone.com,下載適合真機(jī)系統(tǒng)版本的AppSync。
3. 在電腦上創(chuàng)建一個(gè)證書,用于為生成的程序簽名。
創(chuàng)建證書
創(chuàng)建證書的過程比較簡(jiǎn)單,在電腦上打開“其他-鑰匙串訪問”。然后在菜單欄里點(diǎn)擊“鑰匙串訪問-證書助理-創(chuàng)建證書…”來打開向?qū)?。注意這里的三個(gè)地方, 必須要把名稱命名為iPhone Developer,將類型設(shè)定為代碼簽名,將”讓我覆蓋這些默認(rèn)值”選中。之后的步驟什么都不用改,一路點(diǎn)擊“確定”和“繼續(xù)”,***完成這個(gè)向?qū)Ь涂?以了。
4. 如果Xcode在運(yùn)行狀態(tài),請(qǐng)先 Command+Q將其 完全關(guān)閉。然后打開“其他-終端”,我們需要用到一些UNIX命令,可能看起來會(huì)比較繁瑣,但是相信我,這可是在每年節(jié)省99美金啊!
① 進(jìn)入iPhone SDK目錄,指令如下:
- cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/
備注:不同版本的Xcode***的版本號(hào)不同。在Xcode 6.0中是 iPhoneOS8.0.sdk,未來版本可能版本高一些,早期版本的就低一些。請(qǐng)根據(jù)實(shí)際情況自己改動(dòng)。(如果實(shí)在不知道自己的版本號(hào),可以用“ls”指令查看所有文件。)
② 備份原文件,如果電腦設(shè)有密碼,系統(tǒng)會(huì)提示你輸入密碼(輸入后不會(huì)顯示出來,敲回車即可)
- sudo cp SDKSettings.plist SDKSettings.plist.orig
③ 編輯配置文件SDKSettings.plist
為了方便修改,我們可以直接用Xcode打開這個(gè)文件。首先要打開這個(gè)文件所在目錄:
- open .
在彈出的Finder窗口中雙擊 SDKSettings.plist ,會(huì)啟動(dòng)Xcode的圖形界面,展開 DefaultProperties 分 支,將下面的ENTITLEMENTS_REQUIRED和CODE_SIGNING_REQUIRED兩個(gè)屬性改為 NO。
備注:這里可能會(huì)遇到系統(tǒng)提示【“SDKSettings.plist” is locked for editing……】,這是因?yàn)槲募x寫的權(quán)限問題,解決辦法如下:
首先,修改文件夾權(quán)限,此時(shí)我們所在目錄是iPhoneOS8.0.sdk,如果輸入指令“cd ..”返回上級(jí)目錄,“ls -al”查看所有文件,會(huì)發(fā)現(xiàn)系統(tǒng)顯示iPhoneOS8.0.sdk -> iPhoneOS.sdk,這表示iPhoneOS8.0.sdk是指向iPhoneOS.sdk的快捷方式,所以我們要修改的真正文件夾是 iPhoneOS.sdk,指令如下:
- sudo chmod -R 777 iPhoneOS.sdk
然后,修改文件夾內(nèi)所有文件的讀寫權(quán)限:
sudo chmod 777 *
現(xiàn)在雙擊打開 SDKSettings.plist, 你會(huì)發(fā)現(xiàn),剛才不能修改的屬性可以修改了!
④ 編輯另外一個(gè)配置文件Info.plist
- cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
- sudo cp Info.plist Info.plist.orig
- open .
在彈出的Finder窗口中雙擊打開 Info.plist 。分別在 DefaultProperties 分支 下、 RuntimeRequirements 分支下和 OverrideProperties 分支下,共有3處,將全部的 XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext 。
備注:同第③步,可能會(huì)遇到權(quán)限問題,修改Platforms 文件夾權(quán)限和該文件夾內(nèi)所有文件的權(quán)限 即可,步驟同上。
5. 準(zhǔn)備自定義的生成后腳本(此步驟需在聯(lián)網(wǎng)狀態(tài)下進(jìn)行)
- sudo mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlements
- cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements
- sudo curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
- sudo mv gen_entitlements.txt gen_entitlements.py
- sudo chmod 777 gen_entitlements.py
6. 修改工程設(shè)置
備注:本階段之前的修改配置文件、準(zhǔn)備腳本等,只需要做一次。但本階段的操作,對(duì)每個(gè)需要真機(jī)調(diào)試的工程都要做一遍。
① 禁用Xcode自動(dòng)的簽名操作
將工程配置“Build Settings”中所有的Code Signing選項(xiàng)全部設(shè)為Don’t Code Sign,如圖。
② 添加自定義的生成后腳本 在Build Phases中,點(diǎn)擊左上角的”+“號(hào),添加一個(gè)”New Run Script Phase“,輸入以下腳本:
- 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
via:LiuLiu’s 筆記本
至此配置全部完成?。?!連上你的iPhone/iPod/iPad,編譯運(yùn)行,看見真機(jī)屏幕上程序跑起來的時(shí)候,99美金就省下了?。。?/p>
在此感謝大神貼,提供的Xcode 5 + iOS 7免證書(iDP)真機(jī)調(diào)試與生成IPA全攻略。