XCode免证书开发环境是本文要介绍的内容,如果你和我一样,是一名爱好iOS开发的开发者,并且又舍不得花费99美金去购买一个合法的开发License,这篇博客则非常适合你。如果,您是一位已经获得Apple开发者证书的开发者,则可以完全无视该篇Blog。
在没有证书的情况下,开发iOS应用程序只能在功能有限的模拟器环境中运行你的应用程序(x86环境)。对于那些与硬件平台关系不大的iOS应用程序开发来说,模拟器环境可以模拟大多数功能,但是一旦你的应用需要涉及实际的硬件设备(比如:摄像头,感应器等),则模拟器就无法满足您的开发需求。拜股沟大神所赐,网路上已经早已有开发者用自签名证书的方式,绕开XCode的证书检查,可以将XCode编译的应用程序部署到实际的iOS设备上进行测试和调试。
Xcode如果不破解,一方面无法真机调试, 也无法编译真机Release文件,只能付费开通Apple开发者账号,才能申请真机调试。而Xcode进行破解后,接合越狱的iPhone或iPad, 即可免官方证书开发调试了!目前测试对于最新的iOS 4.2 SDK/iOS 4.2.1 SDK的Xcode 3.2.5一样适用!当然,对iOS 3.2.2/iOS 4.1 SDK的Xcode 3.1.2同样保持兼容。
生成自签名开发证书
启动证书链管理工具(应用程序->实用工具->钥匙串访问)创建证书
1.设置证书名称设置为iPhone Developer(该名称需要和XCode编译签名时使用的证书名称一致,下文会提到),身份类型选择自签名根证书,证书类型选择S/MIME (电子邮件),并且在覆盖这些默认值选项上打勾。
选择继续制作自签名证书
2. 设置证书有效期365天(时长不要超过365天)
3. 输入用户信息
4. 选择密钥大小和算法(2048位和采用RSA算法)
5. 设置密钥扩展功能(选择签名功能和代码签名功能)
6. 禁止基本约束扩展
7. 设置主题设备用名称扩展,RFC822输入邮箱即可
8. 设置钥匙串类型为登陆类型
至此,自签名证书创建完毕
Xcode破解
保证Xcode处于关闭状态,命令行终端,复制粘贴下面的代码:
- #!/bin/bash cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\
- System\ Support.xcplugin/Contents/MacOS/ dd if=iPhoneOS\ Build\
- System\ Support of=working bs=500 count=255 printf “\x8f\x2a\x00\x00″ >> working dd if=iPhoneOS\ Build\
- System\ Support of=working bs=1 skip=127504 seek=127504 /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\
- System\ Support.original /bin/mv working iPhoneOS\ Build\ System\ Support chmod a+x iPhoneOS\ Build\ System\ Support
然后复制粘贴下面的代码到命令行终端:
- mkdir /Developer/iphoneentitlements30 cd /Developer/iphoneentitlements30 curl -O
- http://www.alexwhittemore.com/iphone/gen_entitlements.txt mv gen_entitlements.txt gen_entitlements.py chmod 777
- gen_entitlements.py ./gen_entitlements.py
执行完脚本后修改”/Developer/Platforms/iPhoneOS.platform/Info.plist”文件,做如下修改:
新增如下两项(告知项目编译无需证书):
- PROVISIONING_PROFILE_ALLOWED = NO
- PROVISIONING_PROFILE_REQUIRED = NO
- 共两处需要修改,如下所示:
- <key>ARCHS</key>
- <string>armv6</string>
- <key>CODE_SIGN_CONTEXT_CLASS</key>
- <string>XCiPhoneOSCodeSignContext</string>
- <key>COMPRESS_PNG_FILES</key>
- <string>YES</string>
- <key>DEBUG_INFORMATION_FORMAT</key>
- <string>dwarf-with-dsym</string>
- <key>EMBEDDED_PROFILE_NAME</key>
- <string>embedded.mobileprovision</string>
- <key>INFOPLIST_OUTPUT_FORMAT</key>
- <string>binary</string>
- <key>NATIVE_ARCH</key>
- <string>armv6</string>
- <key>PLIST_FILE_OUTPUT_FORMAT</key>
- <string>binary</string>
- <strong><key>PROVISIONING_PROFILE_ALLOWED</key>
- <string>NO</string>
- <key>PROVISIONING_PROFILE_REQUIRED</key>
- <string>NO</string></strong>
- <key>SDKROOT</key>
- <string>iphoneos2.2.1</string>
- <key>STRINGS_FILE_OUTPUT_ENCODING</key>
- <string>binary</string>
- <key>CODE_SIGN_CONTEXT_CLASS</key>
- <string>XCiPhoneOSCodeSignContext</string>
- <key>DEBUG_INFORMATION_FORMAT</key>
- <string>dwarf-with-dsym</string>
- <key>EMBEDDED_PROFILE_NAME</key>
- <string>embedded.mobileprovision</string>
- <key>SDKROOT</key>
- <string>iphoneos2.2.1</string>
- <strong><key>PROVISIONING_PROFILE_ALLOWED</key>
- <string>NO</string>
- <key>PROVISIONING_PROFILE_REQUIRED</key>
- <string>NO</string></strong>
加粗部分为要加入的内容。保存。
然后将该文件中所有的”XCiPhoneOSCodeSignContext”替换为”XCCodeSignContext”,即去掉中间的”iPhoneOS” 。如果不进行此步,编译Device Release版本时會报错:
- Code Sign error: a valid provisioning profile matching the application’s Identifier ‘com.yourcompany.xxxx’ could not be found
1. 使用XCode打开你的项目文件,在Project->Edit Project Setting中选择Build页面,找到Code Signing Identifty选项,将签名设置成iPhone Developer
2. 然后找到你项目的xxx-Info.plist文件,添加”SignerIdentity”项,其值为”Apple iPhone OS Application Signing”.保存。[我加了这一步编译时就总出错,不加没问题,不知道为啥子。。。]
Xcode破解完成,或者更准确的讲,是配置完成!
Xcode真机调试
将 iPhone接入电脑,在Xcode的Window->Organizer中会侦测到你的iPhone.查看iPhone和你的Xcode识别正常后退出Organizer,选择编译环境为”iPhone Device-4.2|Release”,点击”Build and Go”,期间会出现让我们选择签名证书,点选”允许”后,等待你的iPad/iPhone屏幕点亮就ok了。
你的程序会自动下载到你的iPhone中,可以进行真机调试了。
Xcode升级破解
如果是在原Xcode的版本上升级到3.2.5,并且之前已经破解过,那么只需要再做如下步骤即可:
新增如下两项(告知项目编译无需证书):
- PROVISIONING_PROFILE_ALLOWED = NO
- PROVISIONING_PROFILE_REQUIRED = NO
然后将该文件中所有的”XCiPhoneOSCodeSignContext”替换为”XCCodeSignContext”,即去掉中间的”iPhoneOS” 。如果不进行此步,编译Device Release版本时會报错:
- Code Sign error: a valid provisioning profile matching the application’s Identifier ‘com.yourcompany.xxxx’ could not be found
小结:XCode免证书开发环境的内容介绍完了,希望本文对你有所帮助!!!