雖然要支援正版,但是對於學習階段99美元也是不小的開銷。所以就此研究了下如何免認證真機調試。當然最終要把APP發布到AppStore時,還是需要這99刀的。好了,閑話少說,直接進入正題。
本人破解環境:Xcode 6.3,iPhone 4(已越獄且通過Cydia安裝了AppSync),並且親測可用此iPhone進行真機調試。
整體4部分:
1.自己為自己頒發一個認證用於為產生的程式簽名2.修改工程配置以及Xcode的設定檔和二進位檔案以阻止其驗證和簽名3.通過自訂產生步驟,用偽造的認證為應用程式簽名
4.修改工程設定,進行真機調試
1.建立認證建立認證的過程比較簡單,開啟Lanchpad -> 工具 + 生產力 -> Keychain Access。然後在功能表列裡點Keychain Access -> Certificate Assistant -> Create a certificate。
第一個步驟比較重要,必須要把名稱命名為iPhone Developer,將類型設定為Code Signing,將"Let me override defaults"選中。之後的步驟無需更改,一路點擊“OK”和“Continue”來完成這個嚮導就可以。
2.修改Xcode的設定檔和二進位檔案先退出Xcode,按Command+Q完全關閉。
然後依次執行下面的操作:
2.1 cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk
2.2 sudo cp SDKSettings.plist SDKSettings.plist.orig
2.3 sudo vim SDKSettings.plist將以下兩段中的YES改為NO<key>CODE_SIGNING_REQUIRED</key><string>YES</string>和<key>ENTITLEMENTS_REQUIRED</key><string>YES</string>
2.4 cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
2.5 sudo cp Info.plist Info.plist.orig
2.6 sudo /Applications/Xcode.app/Contents/MacOS/Xcode /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist
將全部的XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext
有三處,分別在DefaultProperties分支下、RuntimeRequirements分支下和OverrideProperties分支下。
3.準備自訂的產生後指令碼(此步必須確保電腦已串連到互連網,並且以root使用者執行)
3.3 mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlements3.4 cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements3.5 curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt3.6 mv gen_entitlements.txt gen_entitlements.py3.7 chmod 777 gen_entitlements.py
4.修改工程設定
注意:本階段之前的修改設定檔、準備指令碼等,只需要做一次。但本階段的操作,對每個需要真機調試的工程都要做一遍。
4.1 禁用Xcode自動的簽名操作
將工程配置中Code Signing選項下面的除了Any iOS SDK其餘全部設為Don't Code Sign,Any iOS SDK 選擇之前建立的認證iPhone Developer。
4.2 添加自訂的產生後指令碼
在Build Phases中添加一個Phase,右下角的Add Build Phase,然後單擊Add Run Script,輸入以下指令碼:
export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocateif [ "${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,選擇你的裝置運行程式了。
原創文章,轉載請註明出處:withiter