开发环境使用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
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/
转自