因此,当我在iPhone应用程序项目中设置权利时,我创建了一个新的Entitlements.plist,并将get-task-allow的值设置为false。但为什么?这个键代表什么?
修改
请注意,这与this question有关 - 我发现将此键的值翻转为true允许我在我的设备上安装该应用程序)
答案 0 :(得分:147)
get-task-allow在登录应用程序时,允许其他进程(如调试器)附加到您的应用程序。分发配置文件要求关闭此值,而开发配置文件需要打开此值(否则Xcode将无法启动并附加到您的应用程序)。
答案 1 :(得分:12)
能够在iPhone上调试您的应用程序。
答案 2 :(得分:0)
虽然您的answer是正确的,但我只是想对此更加具体,以便那些想知道get_task_allow
的确切含义的人可以。
get_task_allow
是一项权利,它允许其他应用程序获取您应用程序的任务端口。这意味着,如果任何其他应用程序使用您的应用程序进程ID运行task_for_pid()
,它们将获得应用程序的任务端口,因此它们可以执行诸如在内存上写入和读取内容之类的操作,从而能够对它们进行修补并修改您的应用的行为。
如果您了解越狱的工作原理,您会发现他们做的第一件事就是得到task_for_pid(mach_task_self(),0,&kernel_task);
,因为kernel_task
是一个mach_port_t
,值{{ 1}},这样他们就可以触摸内核的内存。
由于内核权利没有0
权利,而且Apple甚至取消了进行get_task_allow
(tfp0
)的可能性,因此它们需要补丁。
因此,基本上,由于Xcode需要触摸应用程序的内存并对其进行调试,因此您需要启用它进行调试,但是您需要禁用此功能以分发您的应用程序,否则任何应用程序都将能够获取任务端口。
答案 3 :(得分:-6)
对于xcode 4:您必须从新文件创建Entitlements.plist文件。和 目标 - >构建设置 - >代码签名权利,你必须在这里写“Entitlements.plist”
我这样做了,xcode再也没有错误