Solución de problemas de conexión para un host de compilación de Xamarin.iOS
En esta guía se proporcionan pasos para solucionar problemas que se pueden encontrar mediante el nuevo administrador de conexiones, incluidos los problemas de conectividad y SSH.
Ubicación del archivo de registro
-
Mac –
~/Library/Logs/Xamarin.Messaging-[VERSION.BUILD]
-
Windows –
%LOCALAPPDATA%\Xamarin\Logs
Para encontrar los archivos de registro, navegue a Ayuda > Xamarin > Zip Logs en Visual Studio.
¿Dónde está la aplicación host de compilación de Xamarin?
El host de compilación de Xamarin a partir de versiones anteriores de Xamarin.iOS ya no es necesario. Visual Studio ahora implementa automáticamente el agente a través del inicio de sesión remoto y lo ejecuta en segundo plano. No hay ninguna aplicación adicional que se ejecute en las máquinas Mac o Windows.
Solución de problemas de inicio de sesión remoto
Importante
Estos pasos de solución de problemas están pensados principalmente para problemas que se producen durante la configuración inicial en un nuevo sistema. Si anteriormente habías estado usando la conexión correctamente en un entorno determinado y después la conexión de repente o intermitentemente deja de funcionar, puede (en la mayoría de los casos) ir directamente a comprobar si alguno de los siguientes pasos ayuda.
- Elimine los procesos sobrantes como se describe a continuación en la sección de errores debido a los procesos de host de compilación existentes.
- Borre los agentes tal y como se describe en Borrar los agentes del broker, IDB, compilación y del diseñador, y a continuación, utilice una conexión Ethernet y conéctese directamente a través de la dirección IP según se describe en No se pudo conectar a MacBuildHost.local. Inténtelo de nuevo..
Si ninguna de esas opciones corrige el problema, siga las instrucciones de paso 9 para archivar un nuevo informe de errores.
Compruebe que tiene versiones compatibles de Xamarin.iOS instaladas en el equipo Mac. Para ello con Visual Studio 2017, asegúrese de que está en el canal de distribución estable en Visual Studio para Mac. En Visual Studio 2015 y versiones anteriores, asegúrese de que se encuentra en el mismo canal de distribución en ambos IDE.
- En Visual Studio para Mac, vaya a Visual Studio para Mac > Buscar actualizaciones... para ver o cambiar el canal de actualización .
- En Visual Studio 2015 y versiones anteriores, compruebe el canal de distribución en Tools > Options > Xamarin > Other.
Asegúrese de que inicio de sesión remoto está habilitado en el Mac. Establezca el acceso solo para estos usuarios , y asegúrese de que tu usuario de Mac esté incluido en la lista o grupo:
Compruebe que el firewall permite conexiones entrantes a través del puerto 22: el valor predeterminado para SSH:
Si ha deshabilitado Permitir automáticamente que el software firmado reciba conexiones entrantes, OS X presentará un cuadro de diálogo durante el proceso de emparejamiento en el que se pide que permita
mono-sgen
omono-sgen32
recibir conexiones entrantes. Asegúrese de hacer clic en Permitir en este cuadro de diálogo:Confirme que ha iniciado sesión en la cuenta de usuario en ese Mac y tenga una sesión GUI activa.
Asegúrese de que se está conectando al Mac utilizando el nombre de usuario en lugar del nombre completo . Esto evita una limitación conocida para los nombres completos que incluyen caracteres acentuados.
Puede encontrar el nombre de usuario de ejecutando el comando
whoami
en Terminal.app.Por ejemplo, en la captura de pantalla siguiente, el nombre de la cuenta será zoed y no Zoe Drakou:
Compruebe que la dirección IP que usa para mac es correcta. Puede encontrar la dirección IP en Preferencias del sistema > Uso compartido > inicio de sesión remoto en mac.
Una vez que haya confirmado la dirección IP del Mac, intente un
ping
a esa dirección encmd.exe
desde Windows:ping 10.1.8.95
Si se produce un error en el ping, el equipo Mac no es accesible desde el equipo Windows. Ese problema tendrá que resolverse en el nivel de la configuración de red de área local entre los 2 equipos. Asegúrese de que ambas máquinas están en la misma red local.
A continuación, pruebe si el cliente
ssh
desde OpenSSH puede conectarse correctamente al equipo Mac desde Windows. Una manera de instalar este programa es instalar Git para Windows. A continuación, puede iniciar una símbolo del sistema de Git Bash e intentarssh
en el equipo Mac con el nombre de usuario y la dirección IP:ssh zoed@10.1.8.95
Si el paso 8 de tiene éxito, puede intentar ejecutar un comando sencillo como
ls
sobre la conexión.ssh zoed@10.1.8.95 'ls'
Esto debe enumerar el contenido del directorio personal en el Mac. Si el comando
ls
funciona correctamente, pero la conexión de Visual Studio sigue fallando, puede comprobar la sección Problemas conocidos y limitaciones sobre las complicaciones específicas de Xamarin. Si ninguno de ellos coincide con su problema, envíe un nuevo informe de errores en la Comunidad de Desarrolladores; para ello, vaya a Ayuda > Enviar comentarios > Informar de un problema en Visual Studio, y adjunte los registros descritos en la sección Comprobar los Archivos de Registro Detallados.Si paso 8 produce un error, puede ejecutar el siguiente comando en Terminal en el Equipo Mac para ver si el servidor SSH acepta cualquier conexión:
ssh localhost
Si el paso 8 falla pero el paso 10 se realiza correctamente, es más probable que el problema sea que el puerto 22 en el host de compilación Mac no sea accesible desde Windows debido a la configuración de la red. Entre los posibles problemas de configuración se incluyen:
La configuración del firewall de OS X no permite la conexión. Asegúrese de volver a comprobar el paso 3.
En ocasiones, la configuración por aplicación del firewall de OS X también puede acabar en un estado no válido donde la configuración que se muestra en Preferencias del sistema no refleja el comportamiento real. Eliminar el archivo de configuración (/Library/Preferences/com.apple.alf.plist) y reiniciar el equipo puede ayudar a restaurar el comportamiento predeterminado. Una manera de eliminar el archivo es escribir /Library/Preferences en Ir > Ir a carpeta en Finder y, a continuación, mover el archivo com.apple.alf.plist a la papelera.
La configuración del firewall de uno de los enrutadores entre mac y el equipo Windows está bloqueando la conexión.
Windows no permite conexiones salientes al puerto remoto 22. Esto sería inusual. Es posible configurar firewall de Windows para no permitir las conexiones salientes, pero el valor predeterminado es permitir todas las conexiones salientes.
El servidor de compilación de Mac no permite el acceso al puerto 22 desde todos los hosts externos mediante una regla
pfctl
. Esto es poco probable a menos que sepa que ha configuradopfctl
en el pasado.
Si se produce un error en el paso 8 y paso 10 produce un error, es probable que el problema sea que el proceso del servidor SSH en el equipo Mac no se esté ejecutando o no esté configurado para permitir que el usuario actual inicie sesión. En este caso, asegúrese de volver a comprobar la configuración de inicio de sesión remoto del paso 2 antes de investigar las posibilidades más complicadas.
Problemas conocidos y limitaciones
Nota
Esta sección solo se aplica si ya se ha conectado correctamente al host de compilación de Mac con el nombre de usuario y la contraseña de Mac mediante el cliente SSH de OpenSSH, como se describe en los pasos 8 y 9 anteriores.
"Credenciales no válidas. Inténtelo de nuevo".
Causas conocidas:
- Restricción: Este error puede aparecer cuando se intenta iniciar sesión en el host de compilación usando la cuenta Nombre Completo si el nombre incluye un carácter acentuado. Se trata de una limitación de la biblioteca de SSH.NET que Xamarin usa para la conexión SSH. solución alternativa: consulte el paso 5 anterior.
"No se puede autenticar con claves SSH. Intente iniciar sesión primero con credenciales"
Causa conocida:
-
Restricción de seguridad SSH – Este mensaje suele significar que uno de los archivos o directorios en la ruta de acceso completa de $HOME/.ssh/authorized_keys en el Mac tiene permisos de escritura habilitados para otros o miembros del grupo.
Corrección común: ejecutar
chmod og-w "$HOME"
en una terminal en el Mac. Para obtener más información sobre qué archivo o directorio concreto está causando el problema, ejecutegrep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
en Terminal y, a continuación, abra el archivo sshd.log desde el escritorio y busque "Autenticación rechazada: mala propiedad o modos".
"Intentando conectarse..." nunca se completa
- de errores: este problema puede ocurrir en Xamarin 4.1 si el shell de inicio de sesión de en el menú contextual opciones avanzadas para el usuario mac en Preferencias del sistema > Usuarios & Grupos se establece en un valor distinto de /bin/bash. (A partir de Xamarin 4.2, en su lugar, este escenario conduce al mensaje de error "No se pudo conectar"). Solución provisional: cambie el shell de inicio de sesión al valor predeterminado original de /bin/bash.
"No se pudo conectar a MacBuildHost.local. Inténtelo de nuevo".
Causas notificadas:
Error: Algunos usuarios han visto este mensaje de error junto con un error más detallado en los archivos de registro "Se produjo un error inesperado al configurar SSH para el usuario... La operación de sesión ha agotado el tiempo de espera" al intentar iniciar sesión en el host de compilación mediante una cuenta de usuario de un dominio de Active Directory u otro servicio de directorio. Solución alternativa: Iniciar sesión en el host de compilación mediante una cuenta de usuario local en su lugar.
error: algunos usuarios han detectado este error al intentar conectarse al host de compilación haciendo doble clic en el nombre del equipo Mac en el cuadro de diálogo de conexión. Posible solución alternativa: Agregue manualmente el Mac mediante la dirección IP.
Bug: Algunos usuarios se han encontrado con este error al usar una conexión de red inalámbrica entre el host de compilación de Mac y Windows. Posible solución alternativa: mover ambos equipos a una conexión de red cableada.
error: en Xamarin 4.0, este mensaje aparecerá siempre que el archivo $HOME/.bashrc en el equipo Mac contenga un error. (A partir de Xamarin 4.1, los errores del archivo de .bashrc ya no afectarán al proceso de conexión). solución alternativa: mueva el archivo de .bashrc a una ubicación de copia de seguridad (o elimínelo si sabe que no lo necesita).
Error: Este error puede aparecer si el shell de inicio de sesión de en el menú contextual Opciones Avanzadas de para el usuario de Mac en Preferencias del Sistema > Usuarios & Grupos está establecido en un valor distinto de /bin/bash. solución alternativa: cambie el shell de inicio de sesión de al valor predeterminado original de /bin/bash.
Limitación: Este error puede aparecer si el host de compilación de Mac está conectado a un enrutador que no tiene acceso a Internet (o si el Mac usa un servidor DNS que agota el tiempo de espera al solicitar la resolución inversa de DNS del equipo Windows). Visual Studio tardará aproximadamente 30 segundos en recuperar la huella digital SSH y, finalmente, no se podrá conectar.
Posible solución alternativa: agregue "UseDNS no" al archivo sshd_config. Asegúrese de leer sobre esta configuración de SSH antes de cambiarla. Vea, por ejemplo, unix.stackexchange.com/questions/56941/what-is-the-point-of-sshd-usedns-option.
En los pasos siguientes se describe una manera de cambiar la configuración. Tendrá que iniciar sesión en una cuenta de administrador en el equipo Mac para completar los pasos.
Confirme la ubicación del archivo sshd_config ejecutando
ls /etc/ssh/sshd_config
yls /etc/sshd_config
en una ventana de comandos de Terminal. Para todos los pasos restantes, asegúrese de usar la ubicación que no devuelva "No existe tal archivo o directorio".Ejecute
cp /etc/ssh/sshd_config "$HOME/Desktop/"
en Terminal para copiar el archivo en el escritorio.Abra el archivo desde el escritorio en un editor de texto. Por ejemplo, puede ejecutar
open -a TextEdit "$HOME/Desktop/sshd_config"
en Terminal.Agregue la siguiente línea en la parte inferior del archivo:
UseDNS no
Quite las líneas que digan
UseDNS yes
para asegurarse de que la nueva configuración surte efecto.Guarde el archivo.
Ejecute el comando
sudo cp "$HOME/Desktop/sshd_config" /etc/ssh/sshd_config
en Terminal para copiar el archivo editado a su posición original. Escriba la contraseña si se le solicita.Deshabilite y vuelva a habilitar Inicio de sesión remoto en Preferencias del Sistema > Uso compartido > Inicio de sesión remoto para reiniciar el servidor SSH.
Borrar los agentes de Broker, IDB, Build y Diseñador en el Mac
Si los archivos de registro muestran un problema durante los pasos "Instalación", "Carga" o "Inicio" de cualquiera de los agentes Mac, puede intentar eliminar la carpeta de caché XMA para forzar a Visual Studio a volver a subirlos.
Ejecute el siguiente comando en Terminal en el equipo Mac:
open "$HOME/Library/Caches/Xamarin"
Haga clic en el control en la carpeta XMA de y seleccione Mover a la papelera:
También hay una memoria caché en Windows que puede ayudar a borrarse. Abra un símbolo del sistema cmd como administrador en Windows:
del %localappdata%\Temp\Xamarin\XMA
Mensajes de advertencia
En esta sección se describen algunos mensajes que pueden aparecer en las ventanas de salida y los registros que normalmente se pueden omitir.
"Hay una discrepancia entre el Xamarin.iOS instalado... y Xamarin.iOS local"
Siempre que haya confirmado que tanto Mac como Windows se actualizan al mismo canal de distribución de Xamarin, se puede omitir esta advertencia.
"No se pudo ejecutar 'ls /usr/bin/mono': ExitStatus=1"
Este mensaje es ignorable siempre que el equipo Mac ejecute OS X 10.11 (El Capitan) o una versión más reciente. Este mensaje no es un problema en OS X 10.11 porque Xamarin también comprueba /usr/local/bin/mono, que es la ubicación esperada correcta para mono
en OS X 10.11.
"El servicio Bonjour 'MacBuildHost' no respondió con su dirección IP".
Este mensaje es ignorable a menos que observe que el cuadro de diálogo de conexión no muestra la dirección IP del host de compilación de Mac. Si la dirección IP falta en ese cuadro de diálogo, todavía puede agregar manualmente elmac .
"Usuario no válido 'a' desde 10.1.8.95" y "input_userauth_request: usuario no válido 'a' [preautenticación]"
Es posible que observe estos mensajes si busca en sshd.log. Estos mensajes forman parte del proceso de conexión normal. Aparecen porque Xamarin usa el nombre de usuario un temporalmente al recuperar la huella digital SSH de .
Ventana de salida y archivos de registro
Si Visual Studio recibe un error al conectarse al host de compilación, hay dos ubicaciones para comprobar si hay mensajes adicionales: la ventana Salida y los archivos de registro.
Ventana de salida
La ventana de salida es el mejor lugar para empezar. Muestra mensajes sobre los principales pasos y errores de conexión. Para ver los mensajes de Xamarin en la ventana Salida:
- Seleccione Ver > Salida en los menús o haga clic en la pestaña Salida.
- Haga clic en el menú desplegable Mostrar salida de.
- Seleccione Xamarin.
Archivos de registro
Si la ventana Salida no incluye suficiente información para diagnosticar el problema, los archivos de registro son el siguiente lugar para buscar. Los archivos de registro contienen mensajes de diagnóstico adicionales que no aparecen en la ventana Salida. Para ver los archivos de registro:
Inicie Visual Studio.
Importante
Tenga en cuenta que .svclogs no están habilitados de forma predeterminada. Para acceder a ellos, deberá iniciar Visual Studio con registros detallados, como se explica en la guía Registros de Versiones. Para obtener más información, consulte el blog Extensiones de solución de problemas con el registro de actividad.
Intente conectarse al host de compilación.
Después de que Visual Studio alcance el error de conexión, recopile los registros de Ayuda > Xamarin > Registros zip:
Al abrir el archivo .zip, verá una lista de archivos similar al ejemplo siguiente. Para los errores de conexión, los archivos más importantes son *Ide.log y *Ide.svclog. Estos archivos contienen los mismos mensajes en dos formatos ligeramente diferentes. El .svclog es XML y resulta útil si desea examinar los mensajes. El .log es texto sin formato y es útil si desea filtrar los mensajes mediante herramientas de línea de comandos.
Para examinar todos los mensajes, seleccione y abra el archivo .svclog:
El archivo .svclog se abrirá en Microsoft Service Trace Viewer. Puede examinar los mensajes por hilo para ver grupos de mensajes relacionados. Para navegar por hilo, primero seleccione la pestaña Graph, luego haga clic en el menú desplegable Modo de Diseño y seleccione Hilo.
Archivos de registro detallados
Si los archivos de registro normales todavía no proporcionan información suficiente para diagnosticar el problema, una última técnica para intentarlo es habilitar el registro detallado. También se prefieren los registros detallados en los informes de errores.
Salga de Visual Studio.
Inicie un símbolo del sistema de comandos para desarrolladores de .
Ejecute el siguiente comando en el símbolo del sistema para iniciar Visual Studio con registro detallado:
devenv /log
Intente conectarse al host de compilación desde Visual Studio.
Después de que Visual Studio encuentre el error de conexión, recopile los registros de Ayuda > Xamarin > Registros comprimidos.
Ejecute el siguiente comando en Terminal en el Equipo Mac para copiar los mensajes de registro recientes del servidor SSH en un archivo en el escritorio:
grep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
Si estos archivos de registro detallados no proporcionan suficientes pistas para resolver el problema directamente, por favor presente un nuevo informe de errores y adjunte tanto el archivo .zip del paso 5 como el archivo .log del paso 6.
Solución de problemas de aprovisionamiento automático de Mac
Archivos de registro del IDE
Si tiene algún problema al usar aprovisionamiento automático de Mac, eche un vistazo a los registros del IDE de Visual Studio 2017, almacenados en %LOCALAPPDATA%\Xamarin\Logs\15.0.
Solución de problemas de errores de compilación e implementación
En esta sección se tratan algunos problemas que pueden producirse después de que Visual Studio se conecte correctamente al host de compilación.
"No se puede conectar a Address='192.168.1.2:22' con User='macuser'"
Causas conocidas:
Característica de seguridad de Xamarin 4.1: este error ocurrirá si revierte a Xamarin 4.0 después de usar Xamarin 4.1 o una versión posterior. En este caso, el error estará acompañado de la advertencia adicional "La clave privada está cifrada, pero la frase de contraseña está vacía". Se trata de un cambio intencionado debido a una nueva característica de seguridad en Xamarin 4.1. corrección recomendada: elimine id_rsa y id_rsa.pub de %LOCALAPPDATA%\Xamarin\MonoTouchy vuelva a conectarse al host de compilación de Mac.
restricción de seguridad ssh: cuando este mensaje va acompañado de la advertencia adicional "No se pudo autenticar al usuario mediante las claves ssh existentes", lo más frecuente es que uno de los archivos o directorios de la ruta de acceso completa de $HOME/.ssh/authorized_keys en el equipo Mac tiene permisos de escritura habilitados para otros miembros de o grupo. Corrección común: ejecute
chmod og-w "$HOME"
en una ventana de Terminal en el Mac. Para obtener más información sobre qué archivo o directorio concreto está causando el problema, ejecutegrep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
en Terminal y, a continuación, abra el archivo sshd.log desde el escritorio y busque "Autenticación rechazada: mala propiedad o modos".
Las soluciones no se pueden cargar desde un recurso compartido de red
Las soluciones solo se compilarán si están en el sistema de archivos local de Windows o en una unidad asignada.
Las soluciones guardadas en un recurso compartido de red pueden producir errores o rechazar completamente la compilación. Los archivos .sln usados en Visual Studio deben guardarse en el sistema de archivos local de Windows.
El siguiente error se produce debido a este problema:
error : Building from a network share path is not supported at the moment. Please map a network drive to '\\SharedSources\HelloWorld\HelloWorld' or copy the source to a local directory.
Faltan perfiles de aprovisionamiento o error "No se pudo crear una biblioteca fat".
Inicie Xcode en el Equipo Mac y asegúrese de que la cuenta de desarrollador de Apple haya iniciado sesión y se descargue el perfil de desarrollo de iOS:
Se intentó una operación de socket en una red inaccesible.
Causas notificadas:
- Mejora – Este error puede impedir compilaciones exitosas cuando Visual Studio usa una dirección IPv6 para conectarse al host de compilación. (La conexión de host de compilación aún no admite direcciones IPv6).
El complemento de Visual Studio de Xamarin.iOS no se puede cargar después de volver a instalar el canal beta/alfa
Este problema puede ocurrir cuando Visual Studio no puede actualizar la caché de componentes MEF. Si es así, instalar esta extensión de Visual Studio puede ayudar: https://visualstudiogallery.msdn.microsoft.com/22b94661-70c7-4a93-9ca3-8b6dd45f47cd
Esto borrará la caché de componentes MEF de Visual Studio para corregir problemas con la corrupción de la memoria caché.
Errores debidos a procesos del servidor de compilación existentes en el Mac
A veces, los procesos de conexiones anteriores del host de compilación pueden interferir con el comportamiento de la conexión activa actual. Para comprobar si hay procesos existentes, cierre Visual Studio y, a continuación, ejecute los siguientes comandos en Terminal en el Equipo Mac:
ps -A | grep mono
Para eliminar los procesos existentes, use el siguiente comando:
killall mono
Borrar la caché de compilación de Mac
Si está solucionando un problema de compilación y quiere asegurarse de que el comportamiento no está relacionado con ninguno de los archivos de compilación temporales almacenados en el Equipo Mac, puede eliminar la carpeta de caché de compilación.
Ejecute el siguiente comando en Terminal en el equipo Mac:
open "$HOME/Library/Caches/Xamarin"
Haga clic en el control en la carpeta mtbs y seleccione Mover a la papelera: