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

我目前使用仪器通过bash脚本启动命令行界面来启动自动化插件的运行。

有了4.2,这个效果已经足够好了,但是随着升级到Xcode 4.3,我现在被提示授权用户“分析其他进程”。 即使授予了正确的凭据,也不会有用户实际进行身份validation。 我得到以下错误:

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 

即使身份validation失败,自动化插件也会执行,但是这需要我的脚本拥有一个物理保姆input凭据,这在许多方面都会破坏这些命令行运行的目的。 是否有可能添加用户的详细信息作为参数? 还是有其他的方法可以跳过这个提示,而不需要一个人在钥匙?

– 编辑 –

当您尝试从GUI首次运行UIAutomationtesting时,会出现此授权对话框。

在这里输入图像说明

提起雷达rdar:// 10945962 。

– 编辑 –

一旦授权对话框在GUI中被回答,提示将停止显示在命令行上。 虽然这种解决方法似乎不是“有效的”答案。

这是一个很棒的命令,可能适合你:

 security unlock-keychain -p [password] "${HOME}/Library/Keychains/login.keychain" 

这是访问Mac上的钥匙串的命令行方式。 我没有使用自动化testing它,但是这是我与Jenkins集成iOS构build的方式。

用密码replace[密码]

好吧,我想我有工作。

以下是有关如何删除xcode命令行授权提示的更多详细信息

我所做的是以下几点:

  • 马克jenkins用户作为pipe理员(不幸的是,似乎没有其他方式atm)
  • / etc /授权
  • search关键的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

加上Alexander的回答 ,我发现对于Mavericks来说,由于授权的处理方式( 源代码 ),你应该这样做:

sudo security authorizationdb write system.privilege.taskport allow

我正在通过一个VMWare虚拟机中的Jenkins作业运行西葫芦functiontesting,并且从属模块无法正确启动模拟器,并且可能因为不正确的授权而挂在启animation面上。 这帮我解决了这个问题,希望能帮助别人。

您的脚本运行的用户必须被授权使用开发人员工具。 你可以通过以下两种方式来完成

  • 将用户添加到_developer组: sudo dscl . append /Groups/_developer GroupMembership scriptusername sudo dscl . append /Groups/_developer GroupMembership scriptusername

  • 使用DevToolsSecurity命令行工具

请记住,为使UIAutomation仪器正常工作,您从仪器调用的用户还需要是可以启动窗口服务器(即运行UI)的用户 – 并且必须login到窗口服务器当UIAutomation运行。

这两个东西是与Jenkins一起使用UIAutomation的四个或五个秘密中的两个。

我部分解决了这个问题。 我从命令行运行仪器,并在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文件。 苹果取代了两个键

 <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,在新的下面添加了丢失的键,并从console中解决了问题。 不幸的是GUI提示仍然存在。

密钥:

 <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> 

希望这会指出你解决整个问题

我也遇到了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 

这是为我工作的解决scheme:

 <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> 
 sudo security authorize -u [username] 

为我工作。

我也尝试了安全解锁钥匙串,并更改了/ etc / authorization文件,并启用了DevToolsSecurity,但是它们都没有工作,直到我启动Instruments GUI应用程序并运行我的脚本,从中popup一个对话框,密码,然后当我运行仪器脚本再次不需要密码了!

在Xcode中 – 如果你加载组织者(Xcode-> Window-> Organizer)

然后在设备下面select你的机器 – >'Enable Developer Mode'

这应该消除使用工具提示的需要。

我尝试了安全解锁钥匙串和编辑/ etc / authorization文件,但都没有工作。

最后,除去安全提示的唯一的东西是jacekmigacz在评论中提出的build议,运行“sudo DevToolsSecurity –enable”。