XCode 4.2(4.1)真机调试及生成IPA全攻略
来源:互联网 发布:123网络测速 编辑:程序博客网 时间:2024/06/05 15:51
众所周知,在Xcode上开发的程序只能在模拟器中运行,如果要放到真机上则要花费99美金购买开发者证书iDP。这严重阻碍了我等草根开发者探索的脚步。写个小程序,同学间分享一下这个小小的愿望都不能满足,自然不能善罢甘休。
在没有iDP的情况下,要想将程序放到iPhone上调试,并最终发布IPA用于分享,需要以下几个步骤:
1.自己为自己颁发一个证书用于为生成的程序签名
2.修改工程配置以及Xcode的配置文件和二进制文件以阻止其验证和使用这个伪造的证书
3.使用自定义的步骤为应用程序签名
4.使用一点小trick来生成IPA文件
1.创建证书
我会分几步来说明。值得说明的是,要想真机调试,ios device必须事先越狱.创建证书的过程比较简单,打开实用工具-钥匙串访问。然后在菜单栏里点击钥匙串访问-证书助理-创建证书来打开向导。第一个步骤比较重要,必须要把名称命名为iPhone Developer,将类型设定为代码签名,将"让我覆盖这些默认值"选中。之后的步骤无需更改,一路点击“确定”和“继续”来完成这个向导就可以。
1.创建证书,这个没什么好说的,网上资料一大堆,只要别写错名字就好,证书名一定要为 iPhone Developer
2.破解ios sdk及其xcode的相关配置文件(双击配置文件就可以打开,注意SDKSettings.plist有权限控制)
修改/Developer/Platforms/iPhoneOS.platform目录下的Info.plist文件,将其中的 XCiPhoneOSCodeSignContext 都改为XCCodeSignContext
修改/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk目录下的SDKSettings.plist文件,修改如下字段:
[pre]
- <key>CODE_SIGNING_REQUIRED</key> <string>NO</string> <key>ENTITLEMENTS_REQUIRED</key> <string>NO</string>
[pre]
- #!/bin/bash cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/PrivatePlugIns/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 -n working iPhoneOS\ Build\ System\ Support chmod a+x iPhoneOS\ Build\ System\ Support
4.修改xcode工程配置文件
1) 下载脚本
打开终端,执行如下操作
[pre]
- cd /Developer mkdir xcode-crack curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt mv gen_entitlements.txt gen_entitlements.py chmod 777 gen_entitlements.py
将工程配置中所有的Code Signing选项全部设为Don't Code Sign,如图。可能需要先点击“All”让这个选项显示出来
3)添加自定义的生成后脚本
在Build Phases中添加一个Phase,右下角的Add Build Phase,然后单击Add Run Script,输入以下脚本(如图)
[pre]
- export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate if [ "${PLATFORM_NAME}" == "iphoneos" ]; then /Developer/xcode-crack/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
在xcode上选择product菜单,选择Build For ---> Build for Achiving,就能成ipa文件了。如图:
可以将这个文件拖到itunes,就可以生成一个ipa文件,如图:
至此,我们就可以随心所欲地开发并调试ios程序了,并可以将打包好的ipa文件分享给他人
按照上面的步骤导入3.x的工程成功运行,但是如果用XCode 4.2创建新工程,则会报错,需要做如下修改:
1、将【Objective-C Automatic Reference Counting】的默认值由【YES】改为【NO】;
2、输入下面的代码注意没有特殊字符
[pre]
- 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
- XCode 4.2(4.1)真机调试及生成IPA全攻略
- XCode 4.2(4.1)真机调试及生成IPA全攻略
- XCode 4.2(4.1)真机调试及生成IPA全攻略
- Xcode 4.1/4.2/4.2.1 免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.2.1 免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.2.1 免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.2.1 免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.2.1 免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.3 免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.3 免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.3 免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.3 免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.3 免证书(iDP)开发+真机调试+生成IPA全攻略
- 【转载】Xcode 4.1/4.2/4.2.1 免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.3/4.4 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.3 免证书(iDP)开发+真机调试+生成IPA全攻略(已用,效果不错!!!!!!!)
- Xcode 4.1/4.2/4.3 免证书(iDP)开发+真机调试+生成IPA全攻略(99美金省了)
- Xcode 4.1/4.2/4.3 免证书(iDP)开发+真机调试+生成IPA全攻略(99美金省了)
- njust 1734 南京邀请赛热身赛 A题 Dinner
- 设计模式(八)命令模式(Command Pattern)
- Makefile之大型工程项目子目录Makefile的一种通用写法
- C#判断是否为数字
- 判断点击事件发生在什么控件上
- XCode 4.2(4.1)真机调试及生成IPA全攻略
- Java 初学者的入门指南
- MySQL新建用户,授权,删除用户,修改密码
- 基类派生类虚函数的默认形参问题
- Linux 多线程编程( POSIX )( 五 )----->条件变量
- checkbox radio 事件处理
- 必备的 Java 参考资源列表
- String.valueOf(Math.abs(new Random().nextInt())
- 使用TBarCode SDK为输出设备的分辨率优化条码