有没有办法从Instruments(XCode)的命令行实例中删除授权提示?

时间:2012-02-28 03:53:01

标签: ios instruments xcode4.3 ios-ui-automation xcode-instruments

我目前正在通过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测试时,会出现此授权对话框。

enter image description here

提交radar rdar://10945962

- 编辑 -

在GUI中应答授权对话框后,提示将停止显示在命令行中。然而,这种解决办法似乎不是一个“答案”。

11 个答案:

答案 0 :(得分:18)

好吧我觉得我搞定了。

以下是有关如何删除xcode command line authorization prompt

的更多详细信息

我做的是以下内容:

  • Mark jenkins用户作为管理员(不幸的是,似乎没有其他方式atm)
  • 转到 / etc / authorization
  • 搜索关键 system.privilige.taskport
  • 将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”。