¿Hay alguna forma de eliminar el aviso de autorización de las instancias de command-line de Instrumentos (XCode)?

Actualmente estoy usando instrumentos mediante un script bash para iniciar la interfaz de command-line para iniciar ejecuciones del complemento Automation.

Con 4.2, esto funcionó bastante bien, sin embargo, con la actualización a Xcode 4.3, ahora me solicitan que un usuario autorizado "analice otros processs". Ningún usuario está realmente autenticado, incluso si se otorgan las cnetworkingenciales correctas. Obtuve el siguiente error:

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 

Incluso con la falla de authentication, el complemento Automation se ejecuta, sin embargo, esto requiere que mi script tenga una niñera física que ingrese las cnetworkingenciales, lo que en muchos sentidos anula el propósito de estas ejecuciones de command-line. ¿Es posible agregar los detalles del usuario como arguments? ¿O hay alguna otra manera de saltear este post sin requerir a una persona en las llaves?

– EDITAR –

Este dialog de autorización aparece cuando intenta ejecutar las testings de UIAutomation desde la GUI por primera vez.

introduzca la descripción de la imagen aquí

Archivado un radar rdar: // 10945962 .

– EDITAR –

Una vez que se ha respondido el dialog de autorización en la GUI, las indicaciones dejan de aparecer en la command-line. Sin embargo, este tipo de trabajo no parece válido como una "respuesta".

Aquí hay un command maravilloso que puede funcionar para usted:

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

Es la forma de línea de command para get acceso a un llavero en la Mac. No lo he probado con Automation, pero es como he integrado mis comstackciones de iOS con Jenkins.

( Reemplace [contraseña] con la contraseña )

Bien, creo que lo puse en funcionamiento.

Aquí hay algunos más detalles acerca de cómo eliminar el indicador de autorización de la línea de command de xcode

Lo que hice fue lo siguiente:

  • Mark Jenkins usuario como administrador (desafortunadamente parece que no hay otra forma de atm)
  • Vaya a / etc / authorization
  • search key system.privilige.taskport
  • cambiar el valor de allow-root a 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> 

Ahora puedo usar Jenkins para ejecutar mi UIAutomation-Tests vía Command Line Script

Agregando a la respuesta de Alexander , descubrí que para los Mavericks, debido a la forma en que se manejan las autorizaciones ( fuente ), debe hacer esto:

sudo security authorizationdb write system.privilege.taskport allow

Estoy ejecutando testings funcionales de calabacín a través de un trabajo de Jenkins en una máquina virtual VMWare, y el esclavo no pudo ejecutar correctamente el simulador y se bloqueaba en la pantalla de bienvenida, probablemente debido a autorizaciones incorrectas. Esto me ayudó a resolver este problema, espero que ayude a otros.

El usuario de su script se ejecuta como debe ser autorizado para usar las herramientas de desarrollador. Puedes hacer esto de dos maneras:

  • Agregue el usuario al grupo _developer : sudo dscl . append /Groups/_developer GroupMembership scriptusername sudo dscl . append /Groups/_developer GroupMembership scriptusername

  • Utilice la herramienta de command-line DevToolsSecurity

Tenga en count que para que los instrumentos de UIAutomation funcionen correctamente, el usuario al que invoca Instruments from también necesitará ser un usuario que pueda iniciar un server de window (es decir, ejecutar la interfaz de usuario), y deberá iniciar session en un server de window cuando se ejecuta UIAutomation.

Estas dos cosas son dos de los cuatro o cinco secretos para usar UIAutomation con Jenkins.

Solucioné parcialmente este problema. Ejecuto instrumentos desde la línea de command y tengo un aviso de autorización en la GUI (una vez por session) + esto en la console (cada vez que ejecuto instrumentos):

 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 

Comparé el file / etc / authorization antes y después de actualizar a xCode 4.3. Apple reemplazó dos keys:

 <key>com.apple.dt.instruments.process.analysis</key> <key>com.apple.dt.instruments.process.kill</key> 

con

 <key>com.apple.instruments.process.analysis</key> 

Edité / etc / authorization, agregué las keys faltantes debajo de una nueva y el problema de la console se resolvió. Desgraciadamente, el post GUI sigue ahí.

Mising keys:

 <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>shanetworking</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>shanetworking</key> <true/> <key>timeout</key> <integer>5</integer> </dict> 

Espero que esto lo señale para resolver el problema completo

También me enfrenté con este problema en El Capitán. Encontré este artículo muy útil https://www.dssw.co.uk/reference/authorization-rights/ . Basándome en esto, cambié los siguientes derechos para superar este problema:

 system.privilege.taskport system.privilege.taskport.debug system.privilege.taskport.safe com.apple.dt.instruments.process.analysis com.apple.dt.instruments.process.kill 

Esta es la solución que trabajó para mí:

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

trabajado para mí.

También probé la key de deslocking de security y cambié el file / etc / authorization, y tengo DevToolsSecurity habilitado, pero ninguno funcionó, hasta que lancé la aplicación GUI de Instrumentos y ejecuté mi script, desde el cual apareció un cuadro de dialog y entré en mi contraseña, después de que cuando ejecuto el script de instrumentos nuevamente ya no requiere contraseña!

En Xcode: si carga el organizador (Xcode-> Ventana-> Organizador)

A continuación, select su máquina en dispositivos -> 'Habilitar modo de desarrollador'

Esto debería eliminar la necesidad de requestes con instrumentos.

Probé el deslocking de security-llavero y la edición del file / etc / authorization, pero ninguno de los dos funcionó.

Al final, lo único que eliminó ese indicador de security fue lo que jacekmigacz sugirió en un comentario, ejecutar "sudo DevToolsSecurity –enable".