XCode 4.2(4.1)真机调试及生成IPA全攻略 网上有不少关于xocde3.x真机 调试 的文章,但鲜有 xcode 4.2相关的资料。参考了一些文章,终于可以在xcode4.2上进行 真机调试 了,在此 记录 下。 众所周知,在Xcode上 开发 的 程序 只能在 模拟器 中运行,如果要放
XCode 4.2(4.1)真机调试及生成IPA全攻略
网上有不少关于xocde3.x真机 调试 的文章,但鲜有 xcode 4.2相关的资料 。参考了一些文章,终于可以在xcode4.2上进行 真机调试 了,在此 记录 下 。
众所周知,在Xcode上 开发 的 程序 只能在 模拟器 中运行,如果要放到真机上则要花费99美金购买 开发者 证书iDP 。这严重阻碍了我等草根开发者探索的脚步 。写个小程序,同学间分享一下这个小小的愿望都不能满足,自然不能善罢甘休 。
在没有iDP的情况下,要想将程序放到i Phone 上调试,并最终 发布 IPA用于分享,需要以下几个 步骤 :
1.自己为自己颁发一个证书用于为 生成 的程序 签名
2. 修改 工程 配置 以及Xcode的配置 文件 和二 进制 文件以阻止其 验证 和使用这个伪造的证书
3.使用 自 定义 的步骤为 应用 程序签名
4.使用一点小 tr ick来 生成IPA 文件
1. 创建 证书
我会分几步来说明 。值得说明的是,要想真机调试,ios device必须事先 越狱 .创建证书的 过程 比较简单,打开实用 工具 -钥匙串 访问 。然后在菜单栏里点击钥匙串访问-证书助理-创建证书来打开向导 。第一个步骤比较重要,必须要把名称 命名 为iPhone Developer ,将 类型 设定为 代码 签名,将"让我覆盖这些 默认 值"选中 。之后的步骤无需更改,一路点击“确定”和“继续”来完成这个向导就可以 。
1.创建证书,这个没什么好说的,网上资料一大堆,只要别写错名字就好,证书名一定要为 iPhone Developer
2. 破解 ios sdk及其xcode的相关 配置文件 (双击配置文件就可以打开,注意 SDK Sett in gs.p list 有 权限 控制)
修改/Developer/Platforms/iPhone OS .platform 目录 下的Info.plist文件,将其中的 XCiPhoneOSCodeSign Context 都改为XCCodeSignContext
修改/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS 5.0 .sdk目录下的SDK Settings .plist文件,修改如下 字段 :
key > CODE_SIGNING_REQ UI RED key > string > NO string > key > ENT IT LE ME NTS_REQUIRED key > string > NO string >
3.破解xcode 二进制 文件 。建立一个crack文件,内容如下:
#!/bin/bash cd /Developer/Platforms/iPhoneOS.platform/Developer/ Library /Xcode/PrivatePlugIns/iPhoneOS\ Build\ Syst em \ 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
然后 执行 chmod +x crack执行./crack,没 错误 就正常
4.修改xcode工程配置文件
1) 下载 脚本
打开终端,执行如下 操作
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
2) 禁用Xcode自动的签名操作
将工程配置中所有的Code Signing 选项 全部设为Dont Code Sign,如图 。可能需要先点击“All”让这个选项 显示 出来
3)添加自定义的生成后脚本
在Build Phases中添加一个Phase,右下角的 Ad d Build Phase,然后单击Add Run Script,输入以下脚本(如图)
export CODESIGN_ ALL O CA TE =/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate if [ "${ PL AT FOR M_ NAM E}" == "iphoneos" ]; the n /Developer/xcode-crack/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRO DU CTS_DIR}/${WR AP PER_NAME}/${PROJECT_NAME}.xcent"; codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/" fi
5 。 打包 应用程序 ,生成ipa文件
在xcode上选择product菜单,选择Build For ---> Build for Achiving,就能成ipa文件了 。如图:
可以将这个文件拖到itunes,就可以生成一个ipa文件,如图:
至此,我们就可以随心所欲地开发并调试ios程序了,并可以将打包好的ipa文件分享给他人
按照上面的步骤 导入 3.x的工程成功运行,但是如果用XCode 4.2创建新工程,则会报错,需要做如下修改:
1、将【Objective-C Autom ati c Reference Counting】的默认值由【YES】改为【NO】;
2、输入下面的代码注意没有 特殊 字符
export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate if [ "${PLATF ORM _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
查看更多关于XCode4.2(4.1)真机调试及生成IPA全攻略的详细内容...