我最近升级到了10.7.3,当我登录后第一次尝试在模拟器中调试我的 iOS 项目时,我收到了以下两个提示:
我的用户是管理员用户。我以前从没见过这些警报。我怎么才能让他们停下来?
剪辑
我已经使用 id -a验证了我是 _developer组的成员。
id -a
_developer
有些东西已经被修改在文件/etc/authority 上,我有一个没有 v10.7.3的 Lion,它有以下代码
第5807-5814行
<key>k-of-n</key> <integer>1</integer> <key>rule</key> <array> <string>is-admin</string> <string>is-developer</string> <string>authenticate-developer</string> </array>
更新后,由于支持新语言,文件包含了许多修改,但与调试授权相对应的行不同于
第7675-7676行
<key>group</key> <string>_developer</string>
我不能将这些差异应用到我的10.7.3 Lion 安装上,因为它是一台生产机器,我不能冒险破坏它
我已经从命令 id -a得到了所有必要的许可
uid=501(dave) gid=20(staff) groups=20(staff), 401(com.apple.access_screensharing), 402(com.apple.sharepoint.group.1), 12(everyone), 33(_appstore), 61(localaccounts), 79(_appserverusr), 80(admin), 81(_appserveradm), 98(_lpadmin), 100(_lpoperator), 204(_developer)
在升级到10.7.3之后重新安装 Xcode 4.2.1似乎对我来说已经修复了它。
根据 Zev Eisenberg 的回答,重新安装 Xcode 4.2.1起作用了。但是,使用以下 diff 对 /etc/authorization文件进行修补可能更容易。
/etc/authorization
<key>system.privilege.taskport.debug</key> <dict> <key>allow-root</key> <false/> <key>class</key> - <string>user</string> + <string>rule</string> <key>comment</key> <string>For use by Apple. WARNING: administrators are advised not to modify this right.</string> <key>default-button</key> <dict> ... </dict> <key>default-prompt</key> <dict> ... </dict> - <key>group</key> - <string>_developer</string> <key>shared</key> <true/> - <key>timeout</key> - <integer>36000</integer> + <key>k-of-n</key> + <integer>1</integer> + <key>rule</key> + <array> + <string>is-admin</string> + <string>is-developer</string> + <string>authenticate-developer</string> + </array> </dict>
有一个更简单的解决方案:
sudo /usr/sbin/DevToolsSecurity --enable
编辑
如果你在文图拉,请看 马克的回答
我修改了 system.privilege.taskport的规则,警报不再显示了。
system.privilege.taskport
<key>class</key>
<string>rule</string>
<string>allow</string>
不需要代码。不需要重新安装 xcode。执行以下步骤:
1. 关闭 xcode。
2. 开放钥匙链访问。
双击您的 Keychain (从 Keychain.p12创建的键图标)
进入访问控制面板(名称可能不正确)
5. 启用所有应用程序访问这个。
6. 保存。
7. 运行 xcode 项目。
效果不错。
启用开发模式: 在终端运行这个: 启用 DevToolsSecurity
我的 mac 10.12.5和 Xcode9也有同样的问题 运行以下命令:
sudo security authorizationdb write system.privilege.taskport allow
然后输入您的密码. . 检查它是否仍然提示您。 祝你好运。
我刚刚在(编辑方案)-> 取消选中调试可执行文件。 但是我也在另一个控制台上进行所有的调试,所以如果您正在开发并且需要调试器,那么它将无济于事。我只对旧版本的 Xcode 8.2.1有这个问题,因为我使用 El Capitan 在旧 Mac 上运行代码。
较新的 Mac 和 Xcode 版本10似乎没有这个问题。
我在 MacOS Ventura 上接收
sudo dscl . append /Groups/_developer GroupMembership <username>
根据 https://stackoverflow.com/a/1837935/5506988
sudo /usr/sbin/DevToolsSecurity --enable说已经启用了。
在输入我的用户名和密码之后,它就可以工作了,但是每次启动调试器时我都必须这样做。
如果我运行 sudo security authorizationdb write system.privilege.taskport allow,它会阻止提示 但只能等到下一次重启。
我尝试跟随现有的答案,要求你更新 /etc/authorization-这已经被弃用,因为 MacOS 的标新立异,现在是 /System/Library/Security/authorization.plist,但我不能编辑这个文件(我甚至尝试 这个) ,但因为我的 $USER不是一个文件的所有者,所以我不能强制覆盖它,即使用 sudo。
/System/Library/Security/authorization.plist
$USER
我尽力了
sudo /usr/libexec/PlistBuddy -c "Set :rights:system.privilege.taskport:class allow" authorization.plist
当然,同样的道理也适用,但这种做法无声无息地失败了。
如果我运行 id -a,它会返回 204(_developer),所以在运行 dcsl命令之前,我就已经是开发人员组的一员了
204(_developer)
dcsl
是什么让我改变了这一切