iPhone/iTouch免99美刀真机调试
本文经本人验证,攻略来源于网上,由于多次转载原始出处不可靠,故无法对原作者进行链接引用,抱歉。
本文仅为记录流程,以备日后查询。本文版权所无,欢迎转载和拍砖。
测试环境:
XCode 4.0.2 + iTouch 4_iOS_4.3.3(已越狱)
(据说iTouch需要用Cydia安装AppSync for 4.0+)
以下为详细步骤:
1.确保XCode关闭。
2.「生成本机证书」
2.1. 应用程序-> 实用工具->钥匙串访问
2.2. 菜单:钥匙串访问->证书助理->创建证书
2.3. 输入证书名称:iPhone Developer(请原样输入,不要试图自己乱改名字),并选择覆盖默认值 ,其他默认
2.4. 点击继续
2.5. 序列号填1,有效期365(不要试图超过365),点击继续
2.6. 输入电子邮件,随便乱填,比如xxxx@163.com(此电子邮件拥有者要红了) ,点击继续
2.7. 2048\RSA,点击继续
2.8. 保持默认(1级2级打钩,3级‘签名’打钩),点击继续
2.9. 勾选代码签名,继续
2.10.不勾选基本约束扩展,继续
2.11.默认(RFC822为上面填的邮箱地址),继续
2.12.默认(登录),继续 。至此证书创建完毕。
3.「XX XCode」
3.1. 复制以下内容到文本编辑中,保存为xx.sh
#!/bin/bash cd dd if =iPhoneOS\ printf "\x8f\x2a\x00\x00" >> dd if =iPhoneOS\ /bin/mv /bin/mv chmod mkdir |
3.2. 在终端中执行该sh脚本
3.3. Finder中打开/Developer/iphoneentitlements30文件夹,复制以下内容,保存为gen_entitlements.py
#!/usr/bin/env import sys import struct if len (sys.argv) = 3 : print "Usage: % sys.argv[ 0 ] sys.exit( - 1 ) APPNAME = sys.argv[ 1 ] DEST = sys.argv[ 2 ] if not DEST.endswith( '.xml' ) and not DEST.endswith( '.xcent' ): print "Dest sys.exit( - 1 ) entitlements = """ <?xml <!DOCTYPE <plist <dict> <key>application-identifier</key> <string>%s</string> <key>get-task-allow</key> <true/> </dict> </plist> """ % APPNAME f = open (DEST, 'w' ) if DEST.endswith( '.xcent' ): f.write( "\xfa\xde\x71\x71" ) f.write(struct.pack( '>L' , len (entitlements) + 8 )) f.write(entitlements) f.close() |
3.4.将该py文件属性修改为777:打开终端,cd /Developer/iphoneentitlements30回车,chmod 777 gen_entitlements.py回车
至此,XCode XX完毕。
4.「 修改/Developer/Platforms/iPhoneOS.platform/Info.plist」
4.1. 用文本编辑打开Info.plist,将以下内容加在第一个<dict>下面一行
<key>PROVISIONING_PROFILE_ALLOWED< / key> <string>NO< / string> <key>PROVISIONING_PROFILE_REQUIRED< / key> <string>NO< / string> |
4.2. 搜索Info.plist中的 XCiPhoneOSCodeSignContext,全部替换为 XCCodeSignContext,保存plist
5.「修改你的工程」(你以后真机debug其他工程时,都需要对新工程进行以下操作)
5.1. 用XCode打开你的项目,找到你项目的xxx-Info.plist文件,添加”SignerIdentity”项,其值为”Apple iPhone OS Application Signing”.保存。
5.2. 找到你项目的Build Settings-Code Signing Identity,把Debug和Release下面的分支都删除,然后将Code Signing Identity的值改为iPhone Developer
5.3. Build Settings-Code Signing Entitlements的值改为xxx/Entitlements.plist。其中xxx是你的工程文件夹名。 Entitlements.plist这个文件目前还没有,下一步我们就要建立这个文件。
5.4. 在你的工程目录,右键New File -> iPhone OS -> Code Signing -> Entitlements,新建一个“Entitlements.plist”,点Finish,然后打开此文件,里面只有一项:Can be debugged,将其Value改为YES,保存
6. 至此所有步骤完成,接下来就是连接你的iOS设备了。如果第一次连接,XCode还不认识你的设备,需要什么Collect一下信息之类。总之连接上后,你可以发现XCode的build scheme里面可以选择到你的iOS设备。然后直接debug即可。
Have Fun!
iPhone/iTouch免99美刀真机调试的更多相关文章
- [IOS]从零开始搭建基于Xcode7的IOS开发环境和免开发者帐号真机调试运行第一个IOS程序HelloWorld
首先这篇文章比较长,若想了解Xcode7的免开发者帐号真机调试运行IOS程序的话,直接转到第五部分. 转载请注明原文地址:http://www.cnblogs.com/litou/p/4843772. ...
- Xcode 4.1~4.6 + iOS 5、iOS 6免证书(iDP)开发+真机调试+生成IPA全攻略
原创文章,欢迎分享:未经许可,不得转载:版权所有,侵权必究 开发环境使用的是目前为止最新的稳定版软件:Mac OS X Lion 10.7 + Xcode 4.1 目前Xcode 4.2 Previe ...
- 从零开始开发iPhone,教你如何在真机调试iPhone应用程序
对于真机调试,首先要在苹果网站上注册APP ID,以及购买iPhone Develop Program(iDP) 开发者授权,99美元.然后要创建证书请求CSR,创建步骤如下:设置OCSP和CRL为关 ...
- IOS 7 Xcode 5 免IDP证书 真机调试(转载)
最近转开发了,真的很久没有更新博客了,今天有空写一篇吧. 今天带来的是 IOS 7 Xcode 5 免IDP证书的真机调试.说白了就是穷,不想给苹果交那$99的钱. 注意:虽然可以用这个方法实现真机调 ...
- Xcode免证书真机调试,解决cannot read entitlement data问题
本文是根据某个帖子写的(帖子链接在最后放出),但是在配置的过程中,遇到了一个纠结的问题,这个问题折腾了我N久,一直没搞明白到底是什么原因,问题如下: 按照原帖上写的每一步去做了,但是在最后编译的时候出 ...
- XCode - vmware虚拟机安装XCode进行iPhone真机调试
1.vmware安装黑苹果,然后在appStore安装XCode http://blog.csdn.net/forgot2015/article/details/51104329 2.真机调试证书等申 ...
- 真机调试傻瓜图文教程(Xcode6.4)
先准备好99刀,真机调试才带你玩. PS:万能宝十来块钱可以买个资格... Developer Apple上的设置 1.打开https://developer.apple.com/,点击Member ...
- iOS Xcode7免证书真机调试
在Xcode 7 正式发布的日子里,苹果再次给开发者带来了惊喜,从此以后只要是真机调试的时候,不再需要花99刀去购买开发者证书,但是如果APP需要上架依旧还是需要购买开发者证书的.这个惊喜对正在学习i ...
- Xcode 5、Xcode 6 免证书真机调试
我们都知道,在iOS开发中,假设要进行真机调试的话是须要苹果开发人员账号的.否则Xcode就不可以进行真机调试.仅仅可以在模拟器上执行:这就带来了非常多问题,比方iCloud编程的话你不可以用模拟器. ...
随机推荐
- 表单提交中get与post的区别
在Form里面,可以使用post也可以使用get.它们都是method的合法取值. 1. get是从服务器上获取数据,post是向服务器传送数据. 2. get是把参数数据队列加到提交表单的ACT ...
- 用python开发简单ftp程序
根据alex老师视频开发的简单ftp程序,只能实现简单的get功能 ftp客户端程序: #!/usr/bin/env python #_*_ coding:utf-8 _*_ import socke ...
- 给flash文件加超链接[兼容主流浏览器]
<div style="position: relative;"> <a style="width: 640px; height: 90px; posi ...
- MySQL RR隔离 读一致性
MySQL RR 模式下 事务隔离问题: Session 1: mysql> select * from test; +------+------+ | id | name | +------+ ...
- 新手必看:如何快速看懂VC++项目
1.在具备必需的编程基础知识后,试图理解一份完整的代码可以从以下几个方面入手: 1)首先运行以下程序,从外部角度感受一下有哪些功能. 2)了解代码中每个类的功能.看看文档,或者类的注释,那么仅仅 ...
- CocoaPods的安装及安装出现问题的处理
ocoaPods安装分两步:第一步.修改本机的Ruby环境:第二步.安装. 第一步:步骤1.打开终端输入 gem sources -l 查看本机的Ruby环境:若显示“https://ruby ...
- i = i++ 在java字节码层面的分析
有这么一段代码: package zl.test; public class PcodeTest { /** * @param args */ public static void main(Stri ...
- asp.net 使用HttpModule记录全局错误
以前使用Global.asax记录全局的错误日志觉得挺好用,但是如果一个解决方案下有N多个项目,每个下边都需要加一个并且代码都还是重复的,终于有一天无法再忍受这种模式,考虑到HttpModule,直接 ...
- 第一章ASP.NET SignalR简介
第一章ASP.NET SignalR简介 1.1概述: ASP.NET SignalR是微软新开发的类库,为的是帮助ASP.NET开发人员很方便地开发实时网络功能. SignalR允许服务器端和客户端 ...
- @synthesize 与@dynamic区别
@synthesize 除非开发人员已经做了,否则由编译器自动生成getter/setter方法. 当开发人员自定义存或取方法时,自定义会屏蔽自动生成该方法. @dynamic 告诉编译器,不自动生成 ...