IOS:XCode 4.6 failed to get the task for process解决方法

来源:互联网 发布:国外云计算公司 编辑:程序博客网 时间:2024/04/30 04:27

http://blog.csdn.net/annkie/article/details/9564181 


在采用真机免证书调试时,一切正常,在编译运行时出现该错误,导致无法attach到debug模式。

搜索了一些网页,最终尝试解决方案如下:

1. 首先在项目下新建一个plist文件。(这一步不是必须,因为下面会自动生成,仅供参考)

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

创建文件Entitlements.plist

打开Entitlements.plist,在空白处右键Add Row增加属性Can be debugged,设为YES

2.创建一个gen_entitlements.py (这一步OK以后其他项目不需要再重复)

1) 在Terminal命令行下:

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

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

2)新建gen_entitilements.py ,内容如下:

然后修改运行权限:

sudo chmod 777 gen_entitlements.py

[python] view plaincopy
  1. #!/usr/bin/env python  
  2.   
  3. import sys  
  4. import struct  
  5.   
  6. if len(sys.argv) != 3:  
  7.     print "Usage: %s appname dest_file.xcent" % sys.argv[0]  
  8.     sys.exit(-1)  
  9.   
  10. APPNAME = sys.argv[1]  
  11. DEST = sys.argv[2]  
  12.   
  13. if not DEST.endswith('.xml'and not DEST.endswith('.xcent'):  
  14.     print "Dest must be .xml (for ldid) or .xcent (for codesign)"  
  15.     sys.exit(-1)  
  16.   
  17. entitlements = """ 
  18. <?xml version="1.0" encoding="UTF-8"?> 
  19. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
  20. <plist version="1.0"> 
  21. <dict> 
  22.     <key>application-identifier</key> 
  23.     <string>%s</string> 
  24.     <key>get-task-allow</key> 
  25.     <true/> 
  26. </dict> 
  27. </plist> 
  28. """ % APPNAME  
  29.   
  30. f = open(DEST,'w')  
  31. if DEST.endswith('.xcent'):  
  32.     f.write("\xfa\xde\x71\x71")  
  33.     f.write(struct.pack('>L', len(entitlements) + 8))  
  34. f.write(entitlements)  
  35. f.close()  


3.配置Build Phrase (每个项目都需要配置一次)

1)选中项目后,点击Build Phases,在右下方看见Add Build Phase

2)选择Add Build Phase ,然后选择Run Script ,再在shell下的输入框中添加一下内容:

[ruby] view plaincopy
  1. export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate    
  2. if [ "${PLATFORM_NAME}" == "iphoneos" ] || [ "${PLATFORM_NAME}" == "ipados" ]; then    
  3. /Applications/Xcode.app/Contents/Developer/iphoneentitlements/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";    
  4. codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"    
  5. fi    


4. 配置Build Settings(每个项目需要配置)

修改targets的build setting属性值。

将Code Signing Entitlements 设为"Entitlements.plist"

将Code Signing Identity中Any iOS SDK设置为iphone Developer,其他则改为Don't Code Sign



5. 保存所有修改,重启XCode,启动项目Run。Debug模式终于可以了,Log也出来了。


以上3,4步骤对每个项目都需要重新设置一次,其他步骤则只需要配置一次。

关于Xcode 4.6 免证书真机调试的内容请搜索"Xcode 4.6 免证书"。



0 0
原创粉丝点击