我目前正在通过bash脚本使用Instruments来启动命令行界面以启动Automation插件的运行。
使用4.2,这很好用,但是随着Xcode 4.3的升级,我现在被提示让授权用户“分析其他进程”。即使授予了正确的凭据,也不会对用户进行实际身份验证。我收到以下错误:
Failed to authorize rights (0x20) with status: -60007.
2012-02-27 19:30:37.232 instruments[54151:1c03] Failed to connect to local pid watcher service: (os/kern) failure
即使身份验证失败,自动化插件也会执行,但这需要我的脚本让物理保姆输入凭据,这在很多方面都会破坏这些命令行运行的目的。是否可以将用户详细信息添加为参数?或者是否有其他方法可以跳过此提示而无需按键人员?
- 编辑 -
当您尝试首次从GUI运行UIAutomation测试时,会出现此授权对话框。
- 编辑 -
在GUI中应答授权对话框后,提示将停止显示在命令行中。然而,这种解决办法似乎不是一个“答案”。
答案 0 :(得分:18)
好吧我觉得我搞定了。
以下是有关如何删除xcode command line authorization prompt
的更多详细信息我做的是以下内容:
将allow-root的值更改为true
<key>system.privilege.taskport</key>
<dict>
<key>allow-root</key>
<false/> // change to -> <true>
<key>class</key>
<string>user</string>
<key>comment</key>
<string>Used by task_for_pid(...).
...
</dict>
现在我可以使用jenkins通过命令行脚本运行我的UIAutomation-Tests
答案 1 :(得分:12)
这是一个可能适合你的精彩命令:
security unlock-keychain -p [password] "${HOME}/Library/Keychains/login.keychain"
这是获取Mac上钥匙串访问权限的命令行方式。我没有使用自动化测试它,但这是我将我的iOS版本与Jenkins集成的方式。
(将[密码]替换为密码)
答案 2 :(得分:9)
添加到Alexander's answer,我发现对于Mavericks,由于处理授权的方式(source),您应该这样做:
sudo security authorizationdb write system.privilege.taskport allow
我正在通过VMWare VM中的Jenkins作业运行zucchini功能测试,并且奴隶无法正确启动模拟器并且会挂起在启动屏幕上,可能是因为授权不正确。这有助于我解决这个问题,希望它有助于其他人。
答案 3 :(得分:5)
您的脚本运行的用户必须被授权使用开发人员工具。你可以这两种方式:
将用户添加到_developer
组:
sudo dscl . append /Groups/_developer GroupMembership scriptusername
使用DevToolsSecurity命令行工具
请记住,为了使UIAutomation仪器正常工作,您调用Instruments的用户还需要是一个可以启动窗口服务器的用户(即运行UI) - 并且必须登录到UIAutomation运行时的窗口服务器。
这两件事是与Jenkins一起使用UIAutomation的四个或五个秘密中的两个。
答案 4 :(得分:4)
我部分解决了这个问题。我从命令行运行仪器并在GUI中有授权提示(每个会话一次)+在控制台中(每次我运行仪器):
Instruments: Instruments wants permission to analyze other processes.
Type your password to allow this.
Name ([my-username]):
Password:
Failed to authorize rights (0x20) with status: -60007.
2012-02-28 10:04:19.607 instruments[60398:1203] Failed to connect to
local pid watcher service: (os/kern) failure
我在升级到xCode 4.3之前和之后比较了/ etc / authorization文件。 Apple取代了两把钥匙:
<key>com.apple.dt.instruments.process.analysis</key>
<key>com.apple.dt.instruments.process.kill</key>
与
<key>com.apple.instruments.process.analysis</key>
我编辑了/ etc / authorization,在新版本下面添加了缺失的密钥,解决了控制台问题。不幸的是,GUI提示仍然存在。
Mising键:
<key>com.apple.dt.instruments.process.analysis</key>
<dict>
<key>allow-root</key>
<true/>
<key>class</key>
<string>user</string>
<key>comment</key>
<string>Rights for Instruments</string>
<key>group</key>
<string>admin</string>
<key>shared</key>
<true/>
<key>timeout</key>
<integer>36000</integer>
</dict>
<key>com.apple.dt.instruments.process.kill</key>
<dict>
<key>allow-root</key>
<true/>
<key>class</key>
<string>user</string>
<key>comment</key>
<string>Rights for Instruments</string>
<key>group</key>
<string>admin</string>
<key>shared</key>
<true/>
<key>timeout</key>
<integer>5</integer>
</dict>
希望这会指出你解决整个问题
答案 5 :(得分:2)
我也在El Capitan面对这个问题。我发现这篇文章非常有用https://www.dssw.co.uk/reference/authorization-rights/。在此基础上,我改变了以下权利以克服这个问题:
system.privilege.taskport
system.privilege.taskport.debug
system.privilege.taskport.safe
com.apple.dt.instruments.process.analysis
com.apple.dt.instruments.process.kill
答案 6 :(得分:1)
这是我的解决方案:
<key>system.privilege.taskport</key>
<dict>
<key>allow-root</key>
<false/>
<key>class</key>
<string>user</string> // change to -> allow
<key>comment</key>
<string>Used by task_for_pid(...).
...
</dict>
答案 7 :(得分:1)
sudo security authorize -u [username]
为我工作。
答案 8 :(得分:0)
我还尝试了安全解锁 - 密钥链并更改了/ etc / authorization文件,并启用了DevToolsSecurity,但没有一个工作,直到我启动了Instruments GUI应用程序并运行我的脚本,从中弹出了一个对话框,我输入了密码,之后当我再次运行仪器脚本时,它不再需要密码了!
答案 9 :(得分:0)
在Xcode中 - 如果你加载组织者(Xcode-&gt; Window-&gt; Organizer)
然后在设备下选择您的机器 - &gt; &#39;启用开发者模式&#39;
这样就不需要使用乐器提示了。
答案 10 :(得分:-1)
我尝试了安全解锁密钥链并编辑了/ etc / authorization文件,但这些都没有。
最后,删除该安全提示的唯一内容是jacekmigacz在评论中建议的,运行“sudo DevToolsSecurity --enable”。