ios - style - ¿Hay alguna forma de eliminar el aviso de autorización de las instancias de línea de comandos de Instrumentos(XCode)?
pwa safari icon (11)
Agregando a la respuesta de Alexander , encontré que para Mavericks, debido a la forma en que se manejan las autorizaciones ( source ), debe hacer esto:
sudo security authorizationdb write system.privilege.taskport allow
Estoy ejecutando pruebas funcionales de calabacín a través de un trabajo de Jenkins en una VM de VMWare, y el esclavo no pudo iniciar correctamente el simulador y se colgaría en la pantalla de bienvenida, probablemente debido a autorizaciones incorrectas. Esto me ayudó a resolver este problema, espero que ayude a otros.
Actualmente estoy utilizando Instruments a través de un script bash para iniciar la interfaz de línea de comandos para iniciar las ejecuciones del complemento de automatización.
Con 4.2, esto funcionó bastante bien, sin embargo, con la actualización a Xcode 4.3, ahora se me solicita que un usuario autorizado "analice otros procesos". Ningún usuario está realmente autenticado, incluso si se otorgan las credenciales 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 autenticación, el complemento de Automatización se ejecuta, sin embargo, esto requiere que mi script tenga a una niñera física que ingrese las credenciales, lo que en muchos aspectos anula el propósito de estas ejecuciones de la línea de comandos. ¿Es posible agregar los detalles del usuario como argumentos? ¿O hay alguna otra manera de omitir este aviso sin requerir que una persona toque las teclas?
- EDITAR -
Este diálogo de autorización aparece cuando intenta ejecutar las pruebas de UIAutomation desde la GUI por primera vez.
Archivado un radar rdar: // 10945962 .
- EDITAR -
Una vez que el diálogo de autorización ha sido respondido en la GUI, las indicaciones dejan de aparecer en la línea de comandos. Sin embargo, este tipo de solución no parece válida como una "respuesta".
Aquí hay un comando maravilloso que puede funcionar para usted:
security unlock-keychain -p [password] "${HOME}/Library/Keychains/login.keychain"
Es la forma en la línea de comandos de obtener acceso a un llavero en la Mac. No lo he probado con la automatización, pero es así como he integrado mis compilaciones de iOS con Jenkins.
( Reemplace [contraseña] con la contraseña )
El usuario que ejecuta su script tiene que estar autorizado para usar las herramientas del desarrollador. Puedes hacerlo 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 línea de comandos DevToolsSecurity
Tenga en cuenta que para que los instrumentos de UIAutomation funcionen correctamente, el usuario desde el que está invocando Instruments también deberá ser un usuario que pueda iniciar un servidor de ventana (es decir, ejecutar la interfaz de usuario) y deberá iniciar sesión en un servidor de ventana. cuando se ejecuta UIAutomation.
Estas dos cosas son dos de los cuatro o cinco secretos para usar UIAutomation con Jenkins.
En Xcode: si carga el organizador (Xcode-> Ventana-> Organizador)
Luego seleccione su máquina en dispositivos -> ''Habilitar modo de desarrollador''
Esto debería eliminar la necesidad de indicaciones con instrumentos.
Está bien, creo que lo tengo funcionando.
Aquí hay algunos detalles más sobre cómo eliminar la solicitud de autorización de línea de comandos de xcode
Lo que hice fue lo siguiente:
- Marcar el usuario de jenkins como administrador (desafortunadamente parece que no hay otra forma de cajero automático)
- Ir a / etc / permission
- búsqueda de clave 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 mis pruebas de UIAutomation a través de la línea de comandos Script
Esta es la solución que me funcionó:
<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>
Intenté desbloquear el llavero de seguridad y editar el archivo / etc / permission, pero ninguno de los dos funcionó.
Al final, lo único que eliminó ese aviso de seguridad fue lo que jacekmigacz sugirió en un comentario, para ejecutar "sudo DevToolsSecurity --enable".
Resolví parcialmente este problema. Ejecuto instrumentos desde la línea de comandos y tengo una solicitud de autorización en GUI (una vez por sesión) + esto en la consola (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 archivo / etc / permission antes y después de actualizar a xCode 4.3. Apple reemplazó dos llaves:
<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 / autorización, añadí claves faltantes debajo de una nueva y se solucionó el problema de la consola. Desafortunadamente, el indicador GUI todavía está allí.
Llaves de 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>
Espero que esto te sirva para resolver todo el problema.
También me enfrenté con este tema 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
También probé el desbloqueo de seguridad-llavero y cambié el archivo / etc / permission, y habilité DevToolsSecurity, pero ninguno de ellos funcionó, hasta que inicié la aplicación de la GUI de Instruments y ejecuté mi script, desde el cual apareció un diálogo y entré en mi contraseña, después de eso, cuando vuelvo a ejecutar el script de instrumentos, ¡ya no se requiere contraseña!
sudo security authorize -u [username]
trabajó para mi.