Xcode 4.1免证书(iDP)开发+真机调试+生成IPA全攻略
2011年10月09日
开发环境使用的是目前为止最新的稳定版软件:Mac OS X Lion 10.7 + Xcode 4.1 目前Xcode 4.2 Preview版也已经发布,据说其修改方法跟4.1非常类似,只改动了一行代码,请参看参考文章的第二篇。本文仍以4.1版本为例。
当然您需要先越狱您的设备并通过Cydia安装AppSync
参考的文章有:
http://laolang.cn/back-end-develop/helloworld-iphone-developer.html
http://ccmos.tw/blog/2011/06/30/xcode4-port-program-to-idevice-without-idp/
众所周知,在Xcode上开发的程序只能在模拟器中运行,如果要放到真机上则要花费99美金购买开发者证书iDP。这严重阻碍了我等草根开发者探索的脚步。写个小程序,同学间分享一下这个小小的愿望都不能满足,自然不能善罢甘休。
在没有iDP的情况下,要想将程序放到iPhone上调试,并最终发布IPA用于分享,需要以下几个步骤:
1.自己为自己颁发一个证书用于为生成的程序签名
2.修改工程配置以及Xcode的配置文件和二进制文件以阻止其验证和使用这个伪造的证书
3.使用自定义的步骤为应用程序签名
4.使用一点小trick来生成IPA文件
1.创建证书
创建证书的过程比较简单,打开实用工具-钥匙串访问。然后在菜单栏里点击钥匙串访问-证书助理-创建证书来打开向导。第一个步骤比较重要,必须要把名称命名为iPhone Developer,将类型设定为代码签名,将"让我覆盖这些默认值"选中。之后的步骤无需更改,一路点击“确定”和“继续”来完成这个向导就可以。
2.修改Xcode的配置文件和二进制文件
下面的步骤稍微有点繁琐,您应该了解UNIX命令行的基本操作,并了解一种命令行文本编辑器,本文使用的是vim。尽管这里会给出完整的代码,但是关于修改和保存代码的基本操作,不再赘述。下面的操作请先将Xcode按Command+Q完全关闭。
(1)修改配置文件
进入目录并备份原文件
cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/
sudo cp SDKSettings.plist SDKSettings.plist.orig
进行编辑
sudo vim SDKSettings.plist
将以下两段中的YES改为NO
CODE_SIGNING_REQUIRED
YES
和
ENTITLEMENTS_REQUIRED
YES
下面修改另外一个文件
进入目录并备份原文件
cd /Developer/Platforms/iPhoneOS.platform/
sudo cp Info.plist Info.plist.orig
进行编辑
sudo vi Info.plist
将全部的XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext,网上的大部分文章说有2处,但我找到了3处,可能是Xcode 4.1要多一处?总之都改掉了。提示:在在vim中输入/要搜索的内容来搜索,按n键是搜索下一处。
(2)二进制补丁
#在桌面上建立script这个脚本
cd ~/Desktop
vim script
#然后在编辑器中输入如下内容
#!/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 "xc3x26x00x00" >> working
/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
保存并退出。
授予这个脚本执行权限并执行它
chmod 777 script
./script
正常的话应该输出
231+1 records in
231+1 records out
115904 bytes transferred in 0.001738 secs (66694555 bytes/sec)
至此,对SDK中配置文件和二进制文件的修改就完成了
3.准备自定义的生成后脚本
连接互联网后执行
mkdir /Developer/iphoneentitlements401
cd /Developer/iphoneentitlements401
curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
mv gen_entitlements.txt gen_entitlements.py
chmod 777 gen_entitlements.py
如果您已经联网,则请直接转到步骤4,如果您没有联网,那么请手动创建/Developer/iphoneentitlements401/gen_entitlements.py并授予其执行权限,这个文件的内容为
#!/usr/bin/env python
import sys
import struct
if len(sys.argv) != 3:
print "Usage: %s appname dest_file.xcent" % 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 must be .xml (for ldid) or .xcent (for codesign)"
sys.exit(-1)
entitlements = """
application-identifier
%s
get-task-allow
""" % APPNAME
f = open(DEST,'w')
if DEST.endswith('.xcent'):
f.write("\xfa\xde\x71\x71")
f.write(struct.pack('>L', len(entitlements) +)
f.write(entitlements)
f.close()
4.修改工程设置
特别注意:本阶段之前的修改配置文件、准备脚本等,只需要做一次。但本阶段的操作,对每个需要真机调试的工程都要做一遍。
这个步骤的主要作用是支持真机调试,如果不做这个步骤,仍然可以通过步骤5来生成ipa在真机上运行,但是无法使用Xcode内置的调试器对在真机上运行的程序进行单步跟踪。如果您的程序在点击Run真机调试时秒退,请检查此步骤是否正确完成。
(1)禁用Xcode自动的签名操作将工程配置中所有的Code Signing选项全部设为Don't Code Sign。可能需要先点击“All”让这个选项显示出来
(2)添加自定义的生成后脚本
在Build Phases中添加一个Phase,右下角的Add Build Phase,然后单击Add Run Script,输入以下脚本
export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
/Developer/iphoneentitlements401/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,重新选择生成目标来测试一下在线调试了!
5.旁门左道生成IPA文件
如果我的程序调试好了,怎么才能发给别人用呢?正常情况下IPA文件是从Xcode的Organizer中输出的,但是我们没有证书,这样输出会产生错误。我们只能用个小trick来完成这个操作了。
先将代码生成为Release目标,然后打开工程的输出文件夹,通常情况下这个目录是
/Users/你都用户名/Library/Developer/Xcode/DerivedData/以工程名打头的文件夹/Build/Products/Release-iphoneos
很纠结吧~这个目录下有个.app的文件,就是生成的程序了。把这个.app拖到iTunes中,它会出现在应用程序那个列表中,然后再把它从iTunes的那个列表中拖出来(比如拖到桌面),发生了什么?哈哈,它就这样变成.ipa了!
把这个.ipa发给朋友,大家就可以跟您一起分享这个程序了。
发表评论
-
唐骏、学历门和魔术表演
2012-01-20 00:55 618唐骏、学历门和魔术表演 2011年04月15日 唐骏又吱 ... -
2011年第二周总结
2012-01-20 00:55 5262011年第二周总结 2011年01月17日 以前工作的 ... -
Android整体印象
2012-01-20 00:55 525Android整体印象 2010年11月21日 很多人觉 ... -
Scrum对于老板的价值何在?
2012-01-20 00:55 641Scrum对于老板的价值何 ... -
我们专业要用到的软件-AutoCAD系统要求,给即将买电脑的亲爱滴童鞋们点参考建议
2012-01-19 08:44 552我们专业要用到的软件-AutoCAD系统要求,给即将买电脑的亲 ... -
新萝卜家园 Ghost XP SP3 电脑城装机专用版 10.5
2012-01-19 08:44 708新萝卜家园 Ghost XP SP3 ... -
Photoshop教程(二):首选项的基本设置
2012-01-19 08:44 640Photoshop教程(二):首选项的基本设置 2011年0 ... -
zz:OpenGL实用开源代码列表
2012-01-19 08:44 1032zz:OpenGL实用开源代码列 ... -
国产手机软件
2012-01-17 01:13 584国产手机软件 2011年07月08日 mrp格式 ... -
WinCE驱动开发问题精华集锦(二)
2012-01-17 01:13 692WinCE驱动开发问题精华 ... -
浅析Windows Phone 7之用户交互设计
2012-01-17 01:12 570浅析Windows Phone 7之用户交互设计 2010年 ... -
WinCE驱动开发问题精华集锦
2012-01-17 01:12 547WinCE驱动开发问题精华 ... -
AS3 编程易犯盲点――绝对对您有帮助,新手们都来看看吧
2012-01-15 19:53 469AS3 编程易犯盲点――绝对对您有帮助,新手们都来看看吧 2 ... -
Linux cp命令详解
2012-01-15 19:53 701Linux cp命令详解 2012年01月06日 源:h ... -
最新高配电脑
2012-01-15 19:53 620最新高配电脑 2012年01月09日 电脑型号 技嘉 ... -
协议适配器错误的解决方法
2012-01-15 19:53 1052协议适配器错误的解决方法 2011年12月16日 Cas ... -
自己做的一组字符串操作方法,可能会用上。-azure2a-iteye技术网站
2012-01-11 12:06 528自己做的一组字符串操作方法,可能会用上。-azure2a-it ... -
PostConstruct understand
2012-01-11 12:06 650PostConstruct understand 2011年 ... -
学习jpetstore的SignonInterceptor类
2012-01-11 12:05 502学习jpetstore的SignonInterceptor类 ... -
struts2.0笔记
2012-01-11 12:05 583struts2.0笔记 2011年07月01 ...
相关推荐
Xcode 4.1_4.2 免证书(iDP)开发+真机调试+生成IPA全攻略.pdf
Xcode5&4.6.3 + iOS 7&6免证书开发+真机调试+生成ipa+ipa的安装全攻略
Xcode 4.1/4.2/4.2.1 免证书(iDP)开发+真机调试+生成IPA全攻略
XCode 4.2(4.1)真机调试及生成IPA全攻略 真机调试
Xcode 4.1/4.2/4.3/4.4/4.5 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
xcode 4.5.2 免证书真机调试 生成ipa 教程二.docx
Xcode iOS 16真机调试包 开发调试 iOS16适配
xcode 4.5.2 免证书真机调试 生成ipa 教程.docx
1、根据《XCode 4.2 免证书调试之生成本机证书.rtf》制作代码签名证书 2、把“Info.plist”拷贝到“/Developer/Platforms/iPhoneOS.platform/”目录下,把原来的文件重命名 3、把“iPhoneOS Build System Support...
xcode 16.1真机调试包
xcode 真机调试包 13.0.zip
这是16的真机调试包,文件直接解压放到 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
iOS 15.5系统真机调试包,可以解决xcode调试高系统机型问题
Xcode3.2.6破解免证书真机开发调试
xcode4.6免证书真机调试.doc
升级 iOS 13 之后,使用 Xcode 10 真机调试会提示错误: Could not locate device support files. 这是因为 Xcode 10 默认没有自带 iOS 13 的调试包,下载调试包,然后重新打开 Xcode 就可以了。 打开Finder 按下: ...
xcode真机调试所需,从xcode9.2解压获得,使用时解压到 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport即可
iOS 真机调试包 支持iOS 16.1-16.3 系统 下载完直接拖入Xcode,然后重启Xcode,连接真机调试。
Xcode4.6+iOS6.1无证书真机调试教程+文件
亲测,MAC 10.7 下xcode 4.3完美破解,可真机调试, MAC 10.8 下 xcode4.4 完美破解,可真机调试