Xcode 4.6 + iOS 6免证书真机调试

虽然要支持正版,但是对于学习阶段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/iphoneentitlements
3.4 cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements
3.5 curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
3.6 mv gen_entitlements.txt gen_entitlements.py
3.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_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

现在可以插上你的iPhone,选择你的设备运行程序了。


原创文章,转载请注明出处:withiter

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值