Xcode5免证书真机调试ipod IOS6.1(个人总结)

Xcode5算是比较新的版本,不太敢冒然尝试无证书调试,再加上自己也是新手,Mac系统都是刚刚接触,等了好久终于网上有关于Xcode5的免证书调试文章了,纠结了几天,决定试水,将个人经验纪录如下,以便自己日后查询,也方便有需求的朋友。

 

主要内容在下面这个博友中有介绍:

http://blog.youkuaiyun.com/hany3000/article/details/12878483

 

1. 其中证书部门,按照上述过程制作的。

2. XCode配置部分,也按上述过程修改。

3. gen_entitlements.py部门,我弄了很久,主要是按照terminal的命令执行,不出现gen_entitlements.txt,就更谈不上gen_entitlements.py了。我的最终解决方案是,进入Windows,(寒~~我装的是虚拟机)在与Mac系统的共享盘里新建gen_entitlements.txt文件,(因为Mac系统,不知道如何新建txt文件,惭愧~~)然后将其内容改为如下的内容:(上述文章里有)。然后,将此文件拷贝到Mac系统的 /Applications/Xcode.app/Contents/Developer/iphoneentitlements 里面,(iphoneentitlements文件夹已经用terminal创建了)再在terminal里面执行修改扩展名的命令:

sudo mv gen_entitlements.txt gen_entitlements.py sudo chmod 777 gen_entitlements.py

sudo chmod 777 /Applications/Xcode.app/Contents/Developer/iphoneentitlements/gen_entitlements.py

因为不知道自己是否成功,就反复执行了许多次,需要输入密码。

--------------以下是gen_entitlements.txt 的内容---------------------------

#!/usr/bin/envpython

 

import sys

import struct

 

if len(sys.argv)!= 3:

    print "Usage: %s appnamedest_file.xcent" % sys.argv[0]

    sys.exit(-1)

 

APPNAME =sys.argv[1]

DEST =sys.argv[2]

 

if notDEST.endswith('.xml') and not DEST.endswith('.xcent'):

    print "Dest must be .xml (for ldid) or.xcent (for codesign)"

    sys.exit(-1)

 

entitlements ="""

<?xmlversion="1.0" encoding="UTF-8"?>

<!DOCTYPEplist PUBLIC "-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plistversion="1.0">

<dict>

   <key>application-identifier</key>

    <string>%s</string>

    <key>get-task-allow</key>

    <true/>

</dict>

</plist>

"""% APPNAME

 

f = open(DEST,'w')

ifDEST.endswith('.xcent'):

    f.write("\xfa\xde\x71\x71")

    f.write(struct.pack('>L',len(entitlements) + 8))

f.write(entitlements)

f.close()

-----------------------以上是gen_entitlements.txt的内容---------------------

4. 修改项目属性(出问题的地方)

我是按照上述博友的步骤修改的,ipod(当然已越狱)也连上了,(很激动~~)把之前做的小程序放上来,build 没问题,但运行会出现 

failed to get the task for process xxxxx 的错误,就退出来了,但是手动点击ipod上图标还可以运行,也会发生闪退,总之就是不稳定,我觉得韩式有问题,找了半天,发现下列方案:

http://blog.youkuaiyun.com/sxbkelly/article/details/8909878

--------------------------------------------------

主要是有如下不同的内容:

如果是 xcode4.5以前版本跳过第4步操作第5步否则执行第4步跳过第5步 

说的有点饶,其实是xcode4.5之前的版本直接第5步,之后的版本第4步,跳过第5步

4、在项目中添加一个Entitlements.plist文件,设置允许调试。
注:若不操作该步可能连接真机调试的时候还会出现一个错误:failed to get the task for process xxx

a.New->File->iOS->Resouce->Property List

将文件名设为Entitlements.plist。

b.打开Entitlements.plist文件

添加一个属性Can be debugged,并将属性值设为YES。

c.修改targets的build setting属性值。

将Code Signing Entitlements 那项得值改为刚刚新建得"Entitlements.plist"

将Code Signing Identity中Any iOS SDK设置为iphone Developer,其他则改为Don't Code Sign.(此处要和证书里面那个名字要吻合)

 

5、将工程配置中所有的Code Signing选项全部设为Don't Code Sign.

 

----------------------------------------------------------------

还有个需要注意的地方,在第一个连接里 http://blog.youkuaiyun.com/hany3000/article/details/12878483

里面关于 “在Build Phases 选项中,点击右下角的 Add Build Phase,选择类型为Run Script。”里面的script,上面的那个似乎有问题,build的时候会出错,用下面的那个:

-----------------------------Run Script--------------------------

export

CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate

 

if [ "${PLATFORM_NAME}" =="iphoneos" ] || [ "${PLATFORM_NAME}" == "ipados"]; 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

 

-----------------------------Run Script--------------------------

 

最后结果:新建xcode5项目,按照上述步骤设置好以后,运行,没有报错,但是我之前做的那个稍微大点的程序还是会闪退,原因不明(UITableView里的原始数据都没有出来,这些数据我是用了NSData归档的,不知道是不是这个原因?是不是在run的时候没有我的archive的文件拷贝到ipod上?所有没有找到文件就出错退出了,而且,关键是 failed to get the task for process 45869 的问题一样存在),本来就打算重写这个程序的。希望重写后没有问题。

 

 

 

转载于:https://www.cnblogs.com/sanbaodou/p/3472163.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值