有没有办法从仪器(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”。