一般開發ios app需要將app在實體裝置上測試的話,需要花99鎂購買apple developer但是只有一年時效,很多功能在模擬器上能夠正常執行但不表示實體裝置能夠正常執行,所以這篇就是要給不想花錢的人囉。
好了,老話一句在安裝之前要確定已經安裝Command Line Tools和簽署Xcode的license(Xcode 6.1以下還要安裝Command Line Tools),詳細在這
安裝Xcode後安裝Command Line Tools
安裝Xcode後簽署license
這是目前我的環境
Mac OSX: 10.10.1
Xcode: 6.1.1
iOS: 8.1.1(越獄且需安裝Appsync)
ios8的Appsync需安裝「AppSync Unified」,找不到的話加入
http://cydia.angelxwind.net/
第一步是最重要的,常常這步一個出錯就整個失敗了
首先要建立假的憑證,首先打開「鑰匙圈存取」先檢查有沒有名為「iPhone Developer」,有的話備份起來或是刪除
接著來製作假憑證,「鑰匙圈存取」->「憑證輔助程式」->「製作憑證」
名稱一定要為「iPhone Developer」,憑證類型為「代碼簽名」,打勾「覆蓋預設值」
天數開心就好囉
就一路按繼續
最後憑證完成長這樣
接著需要先修改Xcode的文件,先打開終端機切換到目前ios的SDK資料夾
cd `xcode-select -print-path`/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
然後要修改的文件先做備份
sudo cp SDKSettings.plist SDKSettings.plist.copy
接著打開這個資料夾
open .
將「SDKSettings.plist」複製到桌面再打開修改
然後將「ENTITLEMENTS_REQUIRED」和「CODE_SIGNING_REQUIRED」修改成「NO」
修改好後,再從桌面拉回去SDK資料夾並覆蓋
接著修改下一個,切換到這個目錄
cd `xcode-select -print-path`/Platforms/iPhoneOS.platform
然後備份文件
sudo cp Info.plist Info.plist.copy
接著一樣打開這個資料夾
open .
這次將「Info.plist」複製到桌面再修改
這次修改在「DefaultProperties」、「RuntimeRequirements」和「OverrideProperties」底下的「XCiPhoneOSCodeSignContext」改成「XCCodeSignContext」
完成後,一樣複製回去覆蓋
接著打開終端機,這些指令「一步一步」輸入
sudo mkdir `xcode-select -print-path`/iphoneentitlements cd `xcode-select -print-path`/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
這樣就完成一半囉
接下來的步驟是每次新建專案後都要做的事,打開Xcode的專案設定到「Build Settings」,找到「Code Signing」,全部修改成「Don't Code Sign」
接著再切換回原本Project的「Build Phases」,然後「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
然後編譯目標選好,編譯下去就OK囉
OK囉
這次其實是我第三次重新試過才成功的,第一步的製作憑證最重要,如果製作方法失敗即使編譯上實體裝置,也無法開啟app
參考
Xcode 5 + iOS 7免證書(iDP)真機調試與生成IPA全攻略: 'http://kuangqi.me/ios/ios-development-without-idp/'
Update for Xcode7:
修改SDKSettings.plist時,增加AD_HOC_CODE_SIGNING_ALLOWED改成YES
修改Info.plist時,沒有RuntimeRequirements這項,所以略過
Don't code sign改選Ad Hoc Code Sign
沒有留言:
張貼留言