開發環境使用Mac OSX Mountain Lion 10.8 + Xcode 4.5.1,iOS設備需要越獄並從Cydia安裝AppSync。Xcode4.5.1的安裝破解詳細步驟如下:
第一步,創建假證書
圖1 Utilities工具夾
打開Finder,左側邊欄裏找到Applications,從中找到Utilities工具夾,如圖1所示。打開該Utilities工具夾並找到Keychain Access(鑰匙串訪問),並將其打開,或是直接在Finder中輸入Keychain Access來搜索。然後在菜單欄裏Keychain Access->Certificate Assistant->Create ACertificate…設置如圖2所示,此處必須把Name改爲iPhone Developer,Certificate類型設置爲Code Signing,並將Let me override defaults選中,以後的步驟就不需要做任何的設置,全部默認或空着即可。
圖2 證書相關設置
第二步,安裝Xcode4.5.1
下載Xcode4.5.1,並安裝。需要注意的是從Xcode4.4.1之後Xcode就變成了獨立運行程序(stand-alone),其安裝變成了Copy。首先將dmg裏的Xcode複製到Applications目錄下,然後運行,此過程中會出現簡單的配置過程。
第三步,修改Xcode的配置文件
需要修改配置文件有兩個SDKSettings.plist和Info.plist,在Xcode4.5以前這兩個文件都是xml格式,而這之後變成了二進制格式,需要用Xcode來編輯這兩個文件。
(1)SDKSettings.plist修改
1) 從Finder中進入文件所在目錄
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk
2) 找到SDKSettings.plist文件,並鼠標右擊Duplicate一份,在同目錄下產生SDKSettings copy.plist文件。
3)雙擊打開SDKSettings copy.plist文件,默認用Xcode,找到DefaultProperties分支,將下面的CODE_SIGNING_REQUIRED和ENTITLEMENTS_REQUIRED兩個屬性改爲NO
4)如果需要備份原文件,則將原文件改名爲SDKSettings.plist.bak。然後將SDKSettings copy.plist,改名爲SDKSettings.plist。
(2)修改Info.plist
1) 從Finder中進入文件所在目錄
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
或是從(1)中後退到該目錄。
2) 找到Info.plist文件,並鼠標右擊Duplicate一份,在同目錄下產生Info copy.plist文件。
3)雙擊打開Info copy.plist文件,默認用Xcode,將全部的XCiPhoneOSCodeSignContext修改成 XCCodeSignContext,即將其中的iPhoneOS去掉,Xcode4.5.1有三處分別位於DefaultProperties分支下、RuntimeRequirements->Classes和OverrideProperties分支下。
3)如果需要備份原文件,則將原文件改名爲Info.plist.bak。然後將Info copy.plist,改名爲Info.plist。
第三步,準備自定義的生成後腳本,此步的執行需要聯網,打開teminal。
mkdir/Applications/Xcode.app/Contents/Developer/iphoneentitlements
cd/Applications/Xcode.app/Contents/Developer/iphoneentitlements
curl -Ohttp://www.alexwhittemore.com/iphone/gen_entitlements.txt
mv gen_entitlements.txtgen_entitlements.py
chmod 777 gen_entitlements.py
第四步,修改工程設置
特別注意:本階段之前的修改配置文件、準備腳本等,只需要做一次。但本階段的操作,對每個需要真機調試的工程都要做一遍。
這個步驟的主要作用是支持真機調試,如果不做這個步驟,仍然可以通過步驟5來生成ipa在真機上運行,但是無法使用Xcode內置的調試器對在真機上運行的程序進行單步跟蹤。如果您的程序在點擊Run真機調試時秒退,請檢查此步驟是否正確完成。
(1)禁用Xcode自動的簽名操作,將工程配置中所有的Code Signing選項全部設爲Don't Code Sign,如圖。
(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_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
如圖所示:
第五步,生成IPA文件
正常情況下IPA文件是從Xcode的Organizer中輸出的,但是我們沒有證書,這樣輸出會產生錯誤。只能另找他路,先將代碼生成爲Release目標,然後打開工程的輸出文件夾,通常情況下這個目錄是:
/Users/你的用戶名/Library/Developer/Xcode/DerivedData/以工程名打頭的文件夾/Build/Products/Release-iphoneos
這個目錄下有個.app的文件,就是生成的程序了。把這個.app拖到iTunes中,它會出現在應用程序那個列表中,然後再把它從iTunes的那個列表中拖出來(比如拖到桌面),哈哈,它就這樣變成.ipa了!
此配置只適用在Xcode4.5.1,其他未嘗試。更多詳細內容參見大牛Blog.
http://kqwd.blog.163.com/blog/static/4122344820117191351263/
輝輝
(FightingBull Studio)