因此,当我在iPhone应用程序项目中设置权利时,我将创建一个新的Entitlements.plist,并将get-task-allow的值设置为false。但为什么?此键代表什么?
编辑
注意,这与this question相关-我发现将此键的值翻转为true允许我在设备上安装该应用程序]
get-task-allow,当登录到应用程序时,允许其他进程(例如调试器)连接到您的应用程序。分发配置文件要求关闭此值,而开发配置文件要求启用此值(否则Xcode将永远无法启动并附加到您的应用程序)。
在iPhone上调试应用程序的能力。
虽然您的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
的0
,因此他们可以触摸内核的内存。
由于内核权利没有get_task_allow
权利,并且Apple甚至删除了执行tfp0
(task_for_pid 0
)的可能性,因此需要修补程序。
因此,基本上Xcode需要触摸应用程序的内存并对其进行调试,因此您需要启用它进行调试,但是您需要禁用此项以分发您的应用程序,否则任何应用程序都可以获取任务端口。
对于xcode 4:您必须从新文件创建Entitlements.plist文件。和目标->构建设置->代码签名权利,您必须在此处编写“ Entitlements.plist”
我做到了,xcode不再出现错误