xCode 4.X 免证书真机发布及调试
由于没有购买苹果的开发者证书,所以目前大多数开发环境都是使用以下的方式实现开发与真机测试(本文部分摘自网络)
【2012年3月15日更新】:目前我使用的是Xcode4.3.1 mac os 10.7.3
最简单的办法就是让xcode不检查签名,直接编译发布。
1、 修改SDKSettings.plist文件:
进入SDK目录:xcode4.3版本以前是:/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3(可能是5.0/4.2等).sdk/
xcode4.3及以上版本的目录是:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk
打开该目录下的SDKSettings.plist文件,把其中所有的包含REQUIRED的项的值改成NO(在实际就是有2项值需要修改:CODE_SIGNING_REQUIRED和ENTITLEMENTS_REQUIRED)。
2、工程的配置修改:
对每个工程进行修改,把所有的Code Signing Identity 全部改为 Don't Code Sign
旧的方法可以参考:
使用环境:越狱过的iPhone 机器 Mac OS 10.6.8 xCode 4.0.1 及Xcode4.0.2
操作步骤过程:
(一)制作证书
1、 打开 Finder->应用程序->实用工具 -> 钥匙串访问
2、单击:"钥匙串访问"选择 "证书" 再选择"创建证书"过程如下图:
3、证书名称必须填写为:"iPhone Developer" ,(不能随便填写)然后点击"创建"。(如图)
(二)修改xcode配置文件
注意:由于这些配置文件是系统文件,修改系统文件需要管理员权限才可以进行操作,所以保存的时候不能直接保存,会遇到系统提示"你没有修改此文件得权限",但可以保存一个副本。可以先修改这个副本,然后再复制到原先的目录,系统会提示你是否修改替换,选择"替换",这时候是需要管理员密码才可以覆盖原来的文件,输入密码后,修改完成。
1.修改SDKsettings.plist文件。
找到 " /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk "下得 SDKSettings.plist 文件,修改"Default Properties "项下面得 "CODE_SIGNING_REQUIRED "得值为:NO。
2.修改"/Developer/Platforms/iPhoneOS.platform/Info.plist"文件(用文本编辑器或者Xcode打开):
增加两项:
PROVISIONING_PROFILE_ALLOWED = NO
PROVISIONING_PROFILE_REQUIRED = NO
效果如下图所示:
然后将所有"XCiPhoneOSCodeSignContext"替换为"XCCodeSignContext"。
3.修改好配置文件后重启xcode,修改项目的属性
1)点击 项目图标,找到"Build Settings" 找到 "Code Sign Identity"
按照下面得方式设置一下就可以 了。
2) 设置工程属性:
3)然后点击 "Run" 我们会看到工程正在编译,然后弹出如图提示(两次):我们选择 "总是允许"
4)在项目中添加一个Entitlement.plist文件,设置允许调试。
注:若不操作该步可能连接真机调试的时候还会出现一个错误:Error launching remote program: failed to get the task for process xxx
操作步骤:在Xcode4.X 中这样做:
a.在工程中按照这个执行创建一个名为:Entitlement.plist 文件In the File Menu, select New File -> iPhone OS -> Code Signing -> Entitlements. Name the file "Entitlements.plist" and click 'Finish'.
b.打开 这个 "Entitlement.plist"文件,将 "Can be debugged"属性值改为 "YES"。
c.将Code Signing Entitlements 那项得值改为刚刚新建得"Entitlements.plist".
4。提示选择完后:可以看到
我们就可以看到 程序可以出现在 你得iphone上了。
当你运行程序时,可以通过 organizer 看到你得iphone 运行时打印出来得Log。