最近在開發一款IOS應用,開發者帳號是借來的,因此程序只能在模擬器中調試。後來在網上找到一些真機調試教程,可是有的語焉不詳,有的實踐下來行不通。通過摸索並綜合幾篇文章的內容,後來總算搞定了。爲防止之後再用到的時候走彎路,也爲了幫助有一樣須要的人,此處記下了個人整個過程。shell
打開實用工具-鑰匙串訪問。而後在菜單欄裏點擊鑰匙串訪問-證書助理-建立證書來打開向導。第一個步驟比較重要,必需要把名稱命名爲iPhone Developer,將類型設定爲代碼簽名,將"讓我覆蓋這些默認值"選中。以後的步驟無需更改,一路點擊「肯定」和「繼續」來完成這個嚮導就能夠!app
2. 修改XCode配置curl
a)SDKSettings.plistiphone
打開應用程序,找到XCode,右鍵顯示包內容。依次進入/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/目錄(對應不一樣版本的XCode SDK版本目錄有所不一樣)。能夠看到SDKSettings.plist文件。將它複製到本身平時經常使用的工做目錄進行以下修改:工具
在DefaultProperties屬性下,找到CODE_SIGNING_REQUIRED字段,屬性改成NO;找到ENTITLEMENTS_REQUIRED字段,也將其屬性值改成NO。ui
修改完以後將保存後的文件複製到上面目錄下覆蓋源文件。url
b)Info.plistspa
一樣的,打開應用程序,找到XCode,右鍵顯示包內容。依次進入/Contents/Developer/Platforms/iPhoneOS.platform/目錄。能夠看到Info.plist文件。將它複製到本身平時經常使用的工做目錄下進行以下修改:調試
查找到全部的CODE_SIGN_CONTEXT_CLASS字段,將其屬性值修改成XCCodeSignContext。code
修改完以後將保存後的文件複製到上面目錄下覆蓋源文件。
3. 添加腳本文件
打開終端,輸入下面的命令
mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlements
cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements
curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
mv gen_entitlements.txt gen_entitlements.py
chmod 777 gen_entitlements.py
4. 修改工程配置(須要針對每一個須要真機調試的工程進行設置)
a) 禁用自動簽名
打開XCode工程文件,將BuildSettings裏面的Code Signing Identity中的所有選項設置爲Don't Code Sign
b) 添加自定義生成腳本
選中XCode工程後,選擇XCode->Editor->Add Build Phase->Add Run Script Build Phase,加入如下腳本
export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate if [ "${PLATFORM_NAME}" == "iphoneos" ]; 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
好了,萬事大吉,接上你的5s,調試試試。
5. 可能出現的問題
出現cannot find code object on disk錯誤,若是代碼沒有問題而編譯的時候出現此問題,通常是最後腳本處出現了問題。工程中添加的run script代碼中有兩處涉及到腳本的路徑,請仔細查看此處的路徑和你的路徑是否一致。
出現shell script invocation error錯誤,此處也是run script中出現了問題,若是是手動輸入的,請複製個人代碼試試。