OS X 10.10.3 + XCode6.3.1 + IOS7越狱机真机调试

  最近在开发一款IOS应用,开发者账号是借来的,所以程序只能在模拟器中调试。后来在网上找到一些真机调试教程,但是有的语焉不详,有的实践下来行不通。经过摸索并综合几篇文章的内容,后来总算搞定了。为防止以后再用到的时候走弯路,也为了帮助有同样需要的人,此处记下了我的整个过程。

  1. 创建证书

      打开实用工具-钥匙串访问。然后在菜单栏里点击钥匙串访问-证书助理-创建证书来打开向导。第一个步骤比较重要,必须要把名称命名为iPhone Developer,将类型设定为代码签名,将"让我覆盖这些默认值"选中。之后的步骤无需更改,一路点击“确定”和“继续”来完成这个向导就可以!

  2.  修改XCode配置

  a)SDKSettings.plist

  打开应用程序,找到XCode,右键显示包内容。依次进入/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/目录(对应不同版本的XCode SDK版本目录有所不同)。可以看到SDKSettings.plist文件。将它复制到自己平时常用的工作目录进行如下修改:

  在DefaultProperties属性下,找到CODE_SIGNING_REQUIRED字段,属性改为NO;找到ENTITLEMENTS_REQUIRED字段,也将其属性值改为NO

  修改完之后将保存后的文件复制到上面目录下覆盖源文件。

  b)Info.plist

  同样的,打开应用程序,找到XCode,右键显示包内容。依次进入/Contents/Developer/Platforms/iPhoneOS.platform/目录。可以看到Info.plist文件。将它复制到自己平时常用的工作目录下进行如下修改:

  查找到所有的CODE_SIGN_CONTEXT_CLASS字段,将其属性值修改为XCCodeSignContext

  修改完之后将保存后的文件复制到上面目录下覆盖源文件。

  3.  添加脚本文件

  打开终端,输入下面的命令

  mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlements

  cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements

  curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt

  mv gen_entitlements.txt gen_entitlements.py

  chmod 777 gen_entitlements.py

  4.  修改工程配置(需要针对每个需要真机调试的工程进行设置)

  a) 禁用自动签名

  打开XCode工程文件,将BuildSettings里面的Code Signing Identity中的全部选项设置为Don't Code Sign

  b) 添加自定义生成脚本

  选中XCode工程后,选择XCode->Editor->Add Build Phase->Add Run Script Build Phase,加入以下脚本

export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
/Applications/Xcode.app/Contents/Developer/iphoneentitlements/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  

  好了,万事大吉,接上你的5s,调试试试。

  5.  可能出现的问题

  出现cannot find code object on disk错误,如果代码没有问题而编译的时候出现此问题,一般是最后脚本处出现了问题。工程中添加的run script代码中有两处涉及到脚本的路径,请仔细查看此处的路径和你的路径是否一致。

  出现shell script invocation error错误,此处也是run script中出现了问题,如果是手动输入的,请复制我的代码试试。

posted @ 2015-05-16 17:07  情迷诺坎普  阅读(446)  评论(2编辑  收藏  举报