Compartilhar via


Solução de problemas de conexão para um host de build do Xamarin.iOS

Este guia fornece etapas de solução de problemas que podem ser encontrados usando o novo gerenciador de conexões, incluindo problemas de conectividade e SSH.

Local do arquivo de log

  • Mac~/Library/Logs/Xamarin.Messaging-[VERSION.BUILD]
  • Windows%LOCALAPPDATA%\Xamarin\Logs

Os arquivos de log podem ser localizados acessando Ajuda > Xamarin > Zip Logs no Visual Studio.

Onde está o aplicativo host de build do Xamarin?

O Servidor de Build do Xamarin de versões mais antigas do Xamarin.iOS não é mais necessário. O Visual Studio agora implanta automaticamente o agente por meio do Logon Remoto e o executa em segundo plano. Não há nenhum aplicativo adicional que será executado nos computadores Mac ou Windows.

Solução de problemas de logon remoto

Importante

Essas etapas de solução de problemas se destinam principalmente a problemas que ocorrem durante a configuração inicial em um novo sistema. Se você já estava usando a conexão com êxito em um ambiente específico e, em seguida, a conexão de repente ou intermitentemente para de funcionar, você pode (na maioria dos casos) pular diretamente para verificar se qualquer um dos seguintes ajuda:

  1. Verifique se você tem versões compatíveis do Xamarin.iOS instaladas em seu Mac. Para fazer isso com o Visual Studio 2017, verifique se você está no canal de distribuição estável no Visual Studio para Mac. No Visual Studio 2015 e anteriores, verifique se você está no mesmo canal de distribuição em ambos os IDEs.

    • No Visual Studio para Mac, acesse Visual Studio para Mac > Verificar atualizações... para exibir ou alterar o canal Update.
    • No Visual Studio 2015 e anteriores, verifique o canal de distribuição em Tools > Options > Xamarin > Other.
  2. Verifique se Acesso Remoto está habilitado no Mac. Defina o acesso para Somente esses usuáriose verifique se o usuário do Mac está incluído na lista ou grupo:

    Definir o acesso somente para esses usuários

  3. Verifique se o firewall permite conexões de entrada por meio da porta 22 – o padrão para SSH:

    Verifique se o firewall permite conexões de entrada por meio da porta 22

    Se você tiver desativado Permitir automaticamente que o software assinado receba conexões de entrada, o OS X apresentará uma caixa de diálogo durante o processo de emparelhamento pedindo para permitir que mono-sgen ou mono-sgen32 recebam conexões de entrada. Certifique-se de clicar em Permitir nesta caixa de diálogo:

    Clique em Permitir nesta caixa de diálogo

  4. Confirme se você está conectado à conta de usuário nesse Mac e tenha uma sessão de GUI ativa.

  5. Verifique se você está se conectando ao Mac com o nome de usuário em vez do Nome Completo. Isso evita uma limitação conhecida para nomes completos que incluem caracteres acentuados.

    Você pode encontrar seu nome de usuário executando o comando whoami no Terminal.app.

    Por exemplo, na captura de tela abaixo, o nome da conta será zoed e não Zoe Drakou:

    Obter o nome da conta do aplicativo terminal

  6. Verifique se o endereço IP que você está usando para o Mac está correto. Você pode encontrar o endereço IP em Preferências do Sistema > Compartilhamento > Início de Sessão Remoto no Mac.

    o endereço IP no aplicativo Preferências do Sistema

  7. Depois de confirmar o endereço IP do Mac, tente uma ping para esse endereço no cmd.exe no Windows:

    ping 10.1.8.95
    

    Se o ping falhar, o Mac não será roteável do computador Windows. Esse problema precisará ser resolvido no nível da configuração de rede da área local entre os dois computadores. Verifique se ambos os computadores estão na mesma Rede Local.

  8. Em seguida, teste se o cliente ssh do OpenSSH pode se conectar com êxito ao Mac do Windows. Uma maneira de instalar esse programa é instalar Git para Windows. Em seguida, você pode iniciar um prompt de comando do Git Bash e tentar ssh no Mac com seu nome de usuário e endereço IP:

    ssh zoed@10.1.8.95
    

  9. Se a etapa 8 de for bem-sucedida em, você pode tentar executar um comando simples, como ls, através da conexão:

    ssh zoed@10.1.8.95 'ls'
    

    Isso deve listar o conteúdo do seu diretório pessoal no Mac. Se o comando ls funcionar corretamente, mas a conexão do Visual Studio ainda falhar, você poderá verificar a seção Problemas Conhecidos e Limitações sobre complicações específicas do Xamarin. Se nenhum destes corresponder ao seu problema, registre um novo relato de bug na Comunidade de Desenvolvedores acessando Ajuda > Enviar Comentários > Relatar um problema no Visual Studio e anexe os logs conforme descrito em Verificar os Arquivos de Log Detalhados.

  10. Se etapa 8 falhar, você poderá executar o seguinte comando no Terminal no Mac para ver se o servidor SSH está aceitando qualquer conexão:

    ssh localhost
    
  11. Se a etapa 8 falhar, mas etapa 10 for bem-sucedida, o problema provavelmente será que a porta 22 no host de build do Mac não está acessível do Windows devido à configuração de rede. Os possíveis problemas de configuração incluem:

    • As configurações de firewall do OS X não permitem a conexão. Verifique duas vezes a etapa 3.

      Ocasionalmente, a configuração por aplicativo para o firewall do OS X também pode acabar em um estado inválido em que as configurações mostradas nas Preferências do Sistema não refletem o comportamento real. Excluir o arquivo de configuração (/Library/Preferences/com.apple.alf.plist) e reinicializar o computador pode ajudar a restaurar o comportamento padrão. Uma maneira de excluir o arquivo é inserir /Library/Preferences em Ir > Ir para a Pasta no Finder e, em seguida, mover o arquivo com.apple.alf.plist para a Lixeira.

    • As configurações de firewall de um dos roteadores entre o Mac e o computador Windows estão bloqueando a conexão.

    • O windows em si não está permitindo conexões de saída para a porta remota 22. Isso seria incomum. É possível configurar o Firewall do Windows para não permitir conexões de saída, mas a configuração padrão é permitir todas as conexões de saída.

    • O host de build do Mac está proibindo o acesso à porta 22 de todos os hosts externos por meio de regra de pfctl. Isso é improvável, a menos que você saiba que configurou pfctl no passado.

  12. Se a etapa 8 falhar e etapa 10 falhar, o problema provavelmente será que o processo do servidor SSH no Mac não está em execução ou não está configurado para permitir que o usuário atual faça logon. Nesse caso, verifique novamente as configurações de Logon Remoto da etapa 2 antes de investigar as possibilidades mais complicadas.

Problemas e limitações conhecidos

Nota

Esta seção só se aplicará se você já tiver se conectado com êxito ao host de build do Mac com seu nome de usuário e senha do Mac usando o cliente SSH do OpenSSH, conforme discutido nas etapas 8 e 9 acima.

"Credenciais inválidas. Tente novamente."

Causas conhecidas:

  • Limitação – esse erro pode aparecer ao tentar fazer login no servidor de build usando a conta Nome Completo se o nome incluir um caractere acentuado. Essa é uma limitação da biblioteca de SSH.NET que o Xamarin usa para a conexão SSH. Solução alternativa: consulte a etapa 5 acima.

"Não é possível autenticar com chaves SSH. Tente fazer logon com as credenciais primeiro"

Causa conhecida:

  • restrição de segurança SSH – Essa mensagem geralmente significa que um dos arquivos ou diretórios no caminho completamente qualificado de $HOME/.ssh/authorized_keys no Mac tem permissões de gravação habilitadas para outros usuários ou membros de grupo. de correção comum: execute chmod og-w "$HOME" em um prompt de comando do Terminal no Mac. Para obter detalhes sobre qual arquivo ou diretório específico está causando o problema, execute grep sshd /var/log/system.log > "$HOME/Desktop/sshd.log" no Terminal e, em seguida, abra o arquivo sshd.log da área de trabalho e procure "Autenticação recusada: propriedade ou modos incorretos".

"Tentando se conectar..." nunca é concluído

  • de Bugs – Esse problema poderá ocorrer no Xamarin 4.1 se o shell de logon do no menu de contexto opções avançadas do para o usuário Mac no > Grupos de & usuários do sistema estiver definido como um valor diferente de /bin/bash. (A partir do Xamarin 4.2, esse cenário leva à mensagem de erro "Não foi possível conectar".) Solução alternativa: altere o shell de logon de volta para o padrão original de /bin/bash.

"Não foi possível se conectar ao MacBuildHost.local. Tente novamente."

Causas relatadas:

  • bug – alguns usuários viram essa mensagem de erro juntamente com um erro mais detalhado nos arquivos de log "Ocorreu um erro inesperado ao configurar o SSH para o usuário... A operação da sessão expirou" ao tentar logar no servidor de build usando uma conta de usuário de domínio de serviços de diretório, como o Active Directory. Solução alternativa: Faça login no servidor de compilação usando uma conta de usuário local.

  • bug – alguns usuários viram esse erro ao tentar se conectar ao host de compilação clicando duas vezes sobre o nome do Mac na janela de conexão. Possível solução alternativa: adicionar manualmente o Mac usando o endereço IP.

  • Bug – alguns usuários encontraram este erro ao usar uma conexão de rede sem fio entre o computador de build Mac e o Windows. Possível solução alternativa: mova ambos os computadores para uma conexão de rede com fio.

  • Bug – No Xamarin 4.0, essa mensagem aparecerá sempre que o arquivo $HOME/.bashrc no Mac contiver um erro. (A partir do Xamarin 4.1, os erros no arquivo de .bashrc não afetarão mais o processo de conexão.) Solução alternativa: mova o arquivo .bashrc para um local de backup (ou exclua-o se souber que não precisa dele).

  • de Bugs – Esse erro poderá aparecer se o shell de logon do no menu de contexto opções avançadas do para o usuário Mac no Grupo > s de & de Usuários & do Sistema estiver definido como um valor diferente de /bin/bash. solução alternativa: altere o shell de logon do de volta para o padrão original de /bin/bash.

  • Limitação – esse erro pode aparecer se o host de build do Mac estiver conectado a um roteador que não tem acesso à Internet (ou se o Mac estiver usando um servidor DNS que esgota o tempo limite ao ser solicitado para realizar a consulta DNS reversa do computador Windows). O Visual Studio levará cerca de 30 segundos para recuperar a impressão digital SSH e acabará falhando em se conectar.

    Possível solução alternativa: adicione "UseDNS no" ao arquivo sshd_config. Certifique-se de ler sobre essa configuração de SSH antes de alterá-la. Veja por exemplo unix.stackexchange.com/questions/56941/what-is-the-point-of-sshd-usedns-option.

    As etapas a seguir descrevem uma maneira de alterar a configuração. Você precisará estar conectado a uma conta de administrador no Mac para concluir as etapas.

    1. Confirme o local do arquivo sshd_config executando ls /etc/ssh/sshd_config e ls /etc/sshd_config em um prompt de comando do Terminal. Para todas as etapas restantes, use o local que não retornar "Nenhum arquivo ou diretório desse tipo".

      Executando ls /etc/ssh/sshd_config e ls /etc/sshd_config no Terminal

    2. Execute cp /etc/ssh/sshd_config "$HOME/Desktop/" no Terminal para copiar o arquivo para sua área de trabalho.

    3. Abra o arquivo localizado na sua área de trabalho em um editor de texto. Por exemplo, você pode executar open -a TextEdit "$HOME/Desktop/sshd_config" no Terminal.

    4. Adicione a seguinte linha na parte inferior do arquivo:

      UseDNS no
      
    5. Remova as linhas que dizem UseDNS yes para garantir que a nova configuração entre em vigor.

    6. Salve o arquivo.

    7. Execute sudo cp "$HOME/Desktop/sshd_config" /etc/ssh/sshd_config no Terminal para copiar o arquivo editado de volta ao lugar. Insira sua senha se solicitado.

    8. Desabilite e habilite novamente Início de Sessão Remoto em Preferências do Sistema > Compartilhamento > Início de Sessão Remoto para reiniciar o servidor SSH.

Limpando os agentes Broker, IDB, Build e Designer no Mac

Se os arquivos de log mostrarem um problema durante as etapas "Instalando", "Carregando" ou "Iniciando" para qualquer um dos agentes Mac, você poderá tentar excluir a pasta de cache XMA para forçar o Visual Studio a carregá-los novamente.

  1. Execute o seguinte comando no Terminal no Mac:

    open "$HOME/Library/Caches/Xamarin"
    
  2. Clique com a tecla Control na pasta XMA e selecione Mover para o Lixo

    Mover a pasta XMA para o de lixo

  3. Há um cache no Windows também que pode ajudar a limpar. Abra um prompt de cmd como Administrador no Windows:

    del %localappdata%\Temp\Xamarin\XMA
    

Mensagens de aviso

Esta seção discute algumas mensagens que podem aparecer nas janelas de saída e logs que você geralmente pode ignorar.

"Há uma incompatibilidade entre o Xamarin.iOS instalado... e o Xamarin.iOS local"

Desde que você tenha confirmado que o Mac e o Windows são atualizados para o mesmo canal de distribuição do Xamarin, esse aviso é ignorável.

"Falha ao executar 'ls /usr/bin/mono': ExitStatus=1"

Essa mensagem é ignorável desde que o Mac esteja executando o OS X 10.11 (El Capitan) ou mais recente. Essa mensagem não é um problema no OS X 10.11 porque o Xamarin também verifica /usr/local/bin/mono, que é o local correto esperado para mono no OS X 10.11.

O serviço Bonjour 'MacBuildHost' não respondeu com seu endereço IP.

Essa mensagem é ignorável, a menos que você observe que a caixa de diálogo de conexão não exibe o endereço IP do host de build do Mac. Se o endereço IP estiver ausente nessa caixa de diálogo, você ainda poderá adicionar manualmente o Mac.

"Usuário inválido de 10.1.8.95" e "input_userauth_request: usuário inválido [pré-autenticação]"

Você poderá notar essas mensagens se olhar no sshd.log. Essas mensagens fazem parte do processo de conexão normal. Eles aparecem porque o Xamarin usa o nome de usuário a temporariamente ao recuperar a impressão digital SSH do.

Janela de saída e arquivos de log

Se o Visual Studio encontrar um erro ao se conectar ao host de build, há dois locais onde é possível verificar mensagens adicionais: a janela de Saída e os arquivos de log.

Janela de saída

A janela de saída é o melhor lugar para começar. Ele exibe mensagens sobre as principais etapas e erros de conexão. Para exibir as mensagens do Xamarin na janela Saída:

  1. Selecione Exibir > Saída nos menus ou clique na guia Saída.
  2. Clique no menu suspenso Mostrar saída do menu suspenso.
  3. Selecione Xamarin.

Selecione Xamarin na guia Saída

Arquivos de log

Se a janela de saída não incluir informações suficientes para diagnosticar o problema, os arquivos de log são o próximo lugar a verificar. Os arquivos de log contêm mensagens de diagnóstico adicionais que não aparecem na janela Saída. Para exibir os arquivos de log:

  1. Inicie o Visual Studio.

    Importante

    Observe que .svclogs não estão habilitados por padrão. Para acessá-los, você precisará iniciar o Visual Studio com logs detalhados, conforme explicado no guia Logs de Versão. Para obter mais informações, consulte as extensões de solução de problemas com o blog do Log de Atividades.

  2. Tente se conectar ao host de build.

  3. Depois que o Visual Studio atingir o erro de conexão, colete os logs em Ajuda > Xamarin > Logs Zip:

    Coletar os logs da Ajuda >> logs zip do Xamarin

  4. Ao abrir o arquivo .zip, você verá uma lista de arquivos semelhante ao exemplo abaixo. Para erros de conexão, os arquivos mais importantes são os arquivos *Ide.log e *Ide.svclog. Esses arquivos contêm as mesmas mensagens em dois formatos ligeiramente diferentes. O .svclog é XML e é útil se você quiser navegar pelas mensagens. O .log é texto sem formatação e é útil se você quiser filtrar as mensagens usando ferramentas de linha de comando.

    Para navegar por todas as mensagens, selecione e abra o arquivo de .svclog:

    Selecione o arquivo svclog

  5. O arquivo .svclog será aberto no Visualizador de Rastreamento de Serviço Microsoft . Você pode navegar pelas mensagens por thread para ver grupos de mensagens relacionados. Para navegar por thread, primeiro selecione a guia Graph, depois clique no menu suspenso Layout Mode e escolha Thread.

    Clique no menu suspenso Modo layout e selecione Thread

Arquivos de log detalhados

Se os arquivos de log normais ainda não fornecerem informações suficientes para diagnosticar o problema, uma última técnica a ser tentada é habilitar o log detalhado. Os logs detalhados também são preferidos em relatórios de bugs.

  1. Saia do Visual Studio.

  2. Inicie um prompt de comando do desenvolvedor .

  3. Execute o seguinte comando no prompt de comando para iniciar o Visual Studio com um log detalhado:

    devenv /log
    
  4. Tente se conectar ao host de build do Visual Studio.

  5. Depois que o Visual Studio atingir o erro de conexão, colete os logs do Help > Xamarin > Zip Logs.

  6. Execute o seguinte comando no Terminal no Mac para copiar as mensagens de log recentes do servidor SSH em um arquivo em sua Área de Trabalho:

    grep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
    

Se esses arquivos de log detalhados não fornecerem pistas suficientes para resolver o problema diretamente, registre um novo relatório de erro e anexe o arquivo .zip da etapa 5 e o arquivo .log da etapa 6.

Solução de problemas de provisionamento automático do Mac

Arquivos de log do IDE

Se você encontrar problemas ao usar de provisionamento automático do Mac, dê uma olhada nos logs do IDE do Visual Studio 2017, armazenados em %LOCALAPPDATA%\Xamarin\Logs\15.0.

Solução de problemas de erros de build e implantação

Esta seção aborda alguns problemas que podem acontecer depois que o Visual Studio se conecta com êxito ao host de build.

Não é possível se conectar ao Endereço='192.168.1.2:22' com Usuário='macuser'

Causas conhecidas:

  • recurso de segurança do Xamarin 4.1 – esse erro ocorrerá se você fizer downgrade para o Xamarin 4.0 depois de usar o Xamarin 4.1 ou superior. Nesse caso, o erro será acompanhado pelo aviso adicional "A chave privada é criptografada, mas a frase secreta está vazia". Essa é uma alteração intencional devido a um novo recurso de segurança no Xamarin 4.1. correção recomendada: exclua id_rsa e id_rsa.pub de %LOCALAPPDATA%\Xamarin\MonoTouche reconecte-se ao host de build do Mac.

  • restrição de segurança SSH – quando essa mensagem é acompanhada pelo aviso adicional "Não foi possível autenticar o usuário usando as chaves ssh existentes", isso geralmente significa que um dos arquivos ou diretórios no caminho totalmente qualificado de $HOME/.ssh/authorized_keys no Mac tem permissões de gravação habilitadas para outros membros ou grupo. Correção comum: execute chmod og-w "$HOME" no Terminal no Mac. Para obter detalhes sobre qual arquivo ou diretório específico está causando o problema, execute grep sshd /var/log/system.log > "$HOME/Desktop/sshd.log" no Terminal e, em seguida, abra o arquivo sshd.log da área de trabalho e procure "Autenticação recusada: propriedade ou modos incorretos".

As soluções não podem ser carregadas de um compartilhamento de rede

As soluções só serão compiladas se estiverem no sistema de arquivos local do Windows ou em uma unidade mapeada.

Soluções salvas em um compartilhamento de rede podem gerar erros ou se recusar completamente a compilar. Todos os arquivos .sln usados no Visual Studio devem ser salvos no sistema de arquivos local do Windows.

O seguinte erro é gerado devido 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.

Erro "Perfis de Provisionamento Ausentes" ou "Falha ao criar uma biblioteca universal"

Inicie o Xcode no Mac e verifique se sua conta de desenvolvedor da Apple está conectada e seu Perfil de Desenvolvimento do iOS é baixado:

Garantir que a conta de desenvolvedor da Apple esteja conectada e que o Perfil de Desenvolvimento do iOS seja baixado

"Foi tentada uma operação de soquete em uma rede inacessível"

Causas relatadas:

  • melhoria – esse erro pode impedir compilações bem-sucedidas quando o Visual Studio usa um endereço IPv6 para se conectar ao servidor de compilação. (A conexão de host de build ainda não dá suporte a endereços IPv6.)

O plug-in do Visual Studio do Xamarin.iOS falha ao carregar após a reinstalação do canal beta/alfa

Esse problema pode acontecer quando o Visual Studio não atualiza o cache de componentes do MEF. Se esse for o caso, a instalação dessa extensão do Visual Studio poderá ajudar: https://visualstudiogallery.msdn.microsoft.com/22b94661-70c7-4a93-9ca3-8b6dd45f47cd

Isso limpará o cache de componentes MEF do Visual Studio para corrigir problemas de corrupção de cache.

Erros devido aos Processos do Host de Build existentes no Mac

Processos de conexões de host de build anteriores às vezes podem interferir no comportamento da conexão ativa atual. Para verificar se há processos existentes, feche o Visual Studio e execute os seguintes comandos no Terminal no Mac:

ps -A | grep mono

comandos em execução no Terminal no Mac

Para eliminar os processos existentes, use o seguinte comando:

killall mono

Limpar o Cache de Build do Mac

Se você estiver solucionando um problema de build e quiser garantir que o comportamento não esteja relacionado a nenhum dos arquivos de build temporários armazenados no Mac, você poderá excluir a pasta de cache de build.

  1. Execute o seguinte comando no Terminal no Mac:

    open "$HOME/Library/Caches/Xamarin"
    
  2. Mantenha pressionada a tecla Control e clique na pasta mtbs, depois selecione Mover para o Lixo.

    Mover a pasta mtbs para a Lixeira