权限说明工具
粘贴 codesign 打印的内容,或你的 .entitlements 文件。它就在本页上读取,不会发送到任何地方。
试试示例:
功能
权限(entitlements)是你的 Mac 应用被签署时带有的许可:它是否在 App Sandbox 中运行,能访问哪些文件夹和设备,关闭了哪些硬化运行时保护,以及使用了哪些 Apple 服务。它们写在你的 .entitlements 文件里,最终进入签名。这个工具读取你粘贴的文本,找出每一项权限及其值,并用大白话说明它允许什么。它先列出会导致公证失败的,然后是 App Review 或谨慎的用户会问到的,最后是普通的。
要运行的命令
codesign -d --entitlements - YourApp.app codesign -d --entitlements - --xml YourApp.app
请对你要发布的构建运行。Xcode 的调试构建通常带有 com.apple.security.get-task-allow,而发布构建没有。要检查辅助程序或扩展,请把命令指向那个包。
每种结果的含义
| 标记 | 含义 |
|---|---|
| 修复 | 公证会拒绝它,或者 macOS 不会运行带有它的第三方应用。 |
| 外观 | 硬化运行时的例外、沙盒的例外、关闭的沙盒或测试设置。允许使用,但只有应用确实需要时才保留。 |
| 正常 | App Sandbox 已开启。 |
| 注意 | 一项普通权限。请确认应用确实用到了它。 |
来源:Apple Developer,Entitlements、App Sandbox、Hardened Runtime 和 Resolving common notarization issues,均于 2026年11月6日 阅读。
运作方式
这只是在本页上运行的几条纯文本规则。它读取 .entitlements 文件或 codesign --xml 里的 XML,以及较新的 macOS 上 codesign 打印出的带方括号的 [Key] 和 [Value] 行。如果你只粘贴键名,它会解释这些键。它认识 50 个常见权限。其他的会标为不在它的列表中,而不是去猜。它无法判断硬化运行时是否开启,因为那是签名标志,不是权限:请在 codesign -dv 的输出里找 flags=0x10000(runtime)。
问题
Mac 上的权限(entitlements)是什么?
它们是写入应用代码签名的许可。它们说明应用是否在 App Sandbox 中运行,能使用哪些文件、设备和 Apple 服务,以及关闭了哪些硬化运行时保护。
怎么查看一个应用的权限?
在终端里运行 codesign -d --entitlements - 加上应用的路径。加上 --xml 可以把同样的列表以属性列表格式输出。
为什么我的应用因为 get-task-allow 被公证拒绝?
该权限允许调试器附加,Xcode 会把它加到调试构建中。请归档发布构建,或从你签名用的权限中移除它,然后再次提交。
Mac 应用需要 App Sandbox 吗?
只对 Mac App Store 有要求。你用 Developer ID 自己销售的应用可以不用它,不过为了公证,仍然需要硬化运行时。
我粘贴的内容会被发送到别处吗?
不是。文本只在本页面读取,不会发送任何内容。