99

当我在我的 iPhone 应用程序项目中设置我的权利时,我创建了一个新的 Entitlements.plist,并将 get-task-allow 的值设置为 false。但为什么?这把钥匙代表什么?

请注意,这与为 iPhone 设备构建应用程序时无法验证错误有关- 我发现将此键的值翻转为 true 允许我在我的设备上安装应用程序)

4

4 回答 4

170

ADC 上的这个线程

get-task-allow,当登录到应用程序时,允许其他进程(如调试器)附加到您的应用程序。分发配置文件要求关闭此值,而开发配置文件要求打开此值(否则 Xcode 将永远无法启动并附加到您的应用程序)。

于 2009-06-22T10:34:28.960 回答
13

在 iPhone 上调试应用程序的能力。

于 2009-06-17T17:25:35.113 回答
13

虽然您的答案是正确的,但我只想更具体地说明这一点,以便那些想知道确切get_task_allow含义的人可以。

get_task_allow是一项允许其他应用获取您应用的任务端口的权利。这意味着,如果任何其他应用程序task_for_pid()使用您的应用程序进程 ID 运行,他们将获得您应用程序的任务端口,以便他们可以执行诸如在内存中写入和读取内容之类的操作,从而能够修补内容并修改你的应用程序。

如果你看一下越狱是如何工作的,你会注意到他们做的第一件事就是得到task_for_pid(mach_task_self(),0,&kernel_task);一个kernel_taskwith mach_port_tvalue 0,这样他们就能够接触到内核的内存。

由于内核权利没有get_task_allow权利,而且 Apple 甚至消除了执行tfp0( task_for_pid 0) 的可能性,因此他们需要一个补丁。

所以基本上,由于 Xcode 需要接触您的应用程序的内存并使用它来调试它,您需要启用它以进行调试,但您需要禁用它来分发您的应用程序,否则任何应用程序都可以获取您的任务端口。

于 2019-10-10T17:40:20.167 回答
-8

对于 xcode 4:您必须从新文件创建 Entitlements.plist 文件。和 Targets->build Settings->Code Signing Entitlements 你必须在这里写“Entitlements.plist”

我这样做了,xcode 不再出现错误

于 2012-01-09T09:58:15.407 回答