Compartilhar via


Solução de problemas de conexão de 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 de SSH.

Local do Arquivo de Log

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

Os arquivos de log podem ser localizados, navegando até Ajuda > Xamarin > Zip Logs no Visual Studio.

Onde está o Aplicativo de Host de Build do Xamarin?

O Host de Build do Xamarin das versões anteriores do Xamarin.iOS não é mais necessário. O Visual Studio agora implanta automaticamente o agente através de Logon Remoto e o executa em segundo plano. Não há nenhum aplicativo adicional que será executado em 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 anteriormente você usar a conexão com êxito em um ambiente específico e, em seguida, a conexão parar de funcionar de repente ou intermitentemente, você poderá (na maioria dos casos) verificar diretamente se qualquer uma das seguintes ações ajuda:

  1. Verifique se você tem as versões compatíveis do Xamarin.iOS instaladas no 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, vá para Visual Studio para Mac > Verificar atualizações... para exibir ou alterar o canal de atualização.
    • No Visual Studio 2015 e versões anteriores, verifique o canal de distribuição em Opções > de ferramentas > Xamarin > Other.
  2. Verifique se o Logon remoto está habilitado no Mac. Defina o acesso para Apenas esses usuários e verifique se o seu usuário Mac está incluído na lista ou no grupo:

    Set access for Only these users

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

    Check that the firewall allows incoming connections through port 22

    Se você desabilitou 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 receba conexões de entrada. Certifique-se de clicar em Permitir nessa caixa de diálogo:

    Click Allow on this dialog

  4. Verifique se você fez logon na conta do usuário nesse Mac e que tem 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 incluam caracteres acentuados.

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

    Por exemplo, na captura de tela abaixo, o nome da conta será amyb e não Amy Burns:

    Getting the account name from the Terminal app

  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 > Logon Remoto no Mac.

    The IP address in the System Preferences app

  7. Depois de confirmar o endereço IP do Mac, tente executar um ping nesse endereço no cmd.exe no Windows:

    ping 10.1.8.95
    

    Se o ping falhar, o Mac não estará roteável do computador Windows. Esse problema precisa ser resolvido no nível de configuração de rede local entre os 2 computadores. Certifique-se de que os dois computadores estejam na mesma Rede Local.

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

    ssh amyb@10.1.8.95
    

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

    ssh amyb@10.1.8.95 'ls'
    

    Isso deve listar o conteúdo de seu diretório base 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 as complicações específicas do Xamarin. Se nenhum deles corresponder ao seu problema, registre um novo relatório de bug na Comunidade de desenvolvedores indo para Ajuda Enviar comentários Relatar um problema no Visual Studio e anexar os logs descritos em Verificar os arquivos de log detalhados.>>

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

    ssh localhost
    
  11. Se a etapa 8 falhar, mas a etapa 10 tiver êxito, então o problema mais provável é a porta 22 no host de build do Mac, que não está acessível no Windows devido à configuração da rede. Possíveis problemas de configuração incluem:

    • As configurações de firewall do OS X estão desautorizando a conexão. Certifique-se de verificar novamente a etapa 3.

      Ocasionalmente, a configuração por aplicativo para o firewall do OS X também pode terminar em um estado inválido, em que as configurações mostradas em 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 no Localizador /biblioteca/preferências em Ir > Ir para a pasta 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á bloqueando a conexão.

    • O próprio Windows está impedindo conexões de saída na 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 não está permitindo acesso à porta 22 de todos os hosts externos por meio de uma regra pfctl. Isso é improvável, a menos que você se lembre de ter configurado a pfctl no passado.

  12. Se a etapa 8 falhar e a etapa 10 falhar, é provável que o problema seja com o processo do servidor SSH no Mac, que não está em execução ou não está configurado para permitir que o usuário atual faça logon. Nesse caso certifique-se de verificar as configurações de Logon Remoto da etapa 2 antes de investigar outras possibilidades mais complicadas.

Problemas e limitações conhecidos

Observação

Esta seção se aplica apenas se você já se conectou com êxito ao host de build do Mac com seu nome de usuário e senha do Mac usando o cliente SSH OpenSSH, conforme discutido anteriormente nas etapas 8 e 9.

"Credenciais inválidas. Tente novamente."

Causas conhecidas:

  • Limitação – este erro pode ocorrer ao tentar fazer logon no host de build usando o Nome Completo da conta, se o nome incluir um caractere acentuado. Esta é uma limitação da Biblioteca 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 credenciais primeiro"

Causa conhecida:

  • Restrição de segurança SSH – Essa mensagem 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 membros do grupo . Correção comum: executar chmod og-w "$HOME" em um prompt de comando do Terminal no Mac. Para obter detalhes sobre o arquivo ou diretório específico que 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 por "Autenticação recusada: modos ou propriedade inválida".

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

  • Bug – Esse problema pode acontecer no Xamarin 4.1 se o shell de login no menu de contexto Opções avançadas para o usuário do Mac nas Preferências > do Sistema Usuários & Grupos 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 login de volta para o padrão original de /bin/bash.

"Não foi possível 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 atingiu o tempo limite" ao tentar fazer logon no host de compilação usando uma conta de usuário do Active Directory ou de outro domínio de serviço de diretório. Solução alternativa: faça logon no host de build usando uma conta de usuário local como alternativa.

  • Bug – alguns usuários viram esse erro ao tentar se conectar ao host de build clicando duas vezes no nome do Mac na caixa de diálogo de conexão. Solução alternativa possível: adicionar manualmente o Mac usando o endereço IP.

  • Bug – Alguns usuários se depararam com esse erro ao usar uma conexão de rede sem fio entre o host de compilação do Mac e o Windows. Solução alternativa possível: mover 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, erros no arquivo .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).

  • Bug – Este erro pode aparecer se o shell de login no menu de contexto Opções avançadas para o usuário do Mac em Usuários das Preferências > do Sistema & Grupos estiver definido como um valor diferente de /bin/bash. Solução alternativa: mude o Login shell (Shell de logon) para o padrão original de /bin/bash.

  • Limitação – este erro pode ocorrer 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 atinge o tempo limite ao ser solicitado para buscar o DNS reverso do computador Windows). O Visual Studio levará aproximadamente 30 segundos para recuperar a impressão digital de SSH e, eventualmente, falhará para se conectar.

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

    As etapas a seguir descrevem uma forma para alterar a configuração. Você precisará fazer logon com 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 demais etapas, certifique-se de usar o local que não retornar "Não há tal arquivo ou diretório".

      Running ls /etc/ssh/sshd_config and ls /etc/sshd_config in the Terminal

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

    3. Abra o arquivo da á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 todas as linhas que dizem UseDNS yes para certificar-se de que a nova configuração entrará 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 para o lugar dele. Insira sua senha se solicitado.

    8. Desabilite e reabilite o Logon Remoto em Preferências do Sistema > Compartilhamento > Logon Remoto para reiniciar o servidor SSH.

Desmarcar o Agente, o IDB, a build e os Agentes de Designer no Mac

Se os arquivos de log mostram um problema durante as etapas "Instalação", "Carregamento" ou "Iniciar" para qualquer um dos agentes do Mac, tente 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. Pressione Control e clique na pasta XMA e selecione Mover para Lixeira:

    Move the XMA folder to Trash

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

    del %localappdata%\Temp\Xamarin\XMA
    

Mensagens de aviso

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

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

Se você confirma que o Mac e Windows estão atualizados no mesmo canal de distribuição do Xamarin, esse aviso pode ser ignorado.

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

Essa mensagem pode ser ignorada se o Mac estiver executando o OS X 10.11 (El Capitan) ou mais recente. Esta 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 o mono no OS X 10.11.

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

Essa mensagem pode ser ignorada, 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 está ausente nessa caixa de diálogo, você ainda poderá adicionar manualmente o Mac.

"Usuário inválido a de 10.1.8.95" e "input_userauth_request: usuário inválido a [preauth]"

Você pode observar essas mensagens ao examinar o sshd.log. Essas mensagens fazem parte do processo normal de conexão. Elas aparecem porque o Xamarin usa o nome de usuário a temporariamente ao recuperar a Impressão digital de SSH.

Janela de Saída e Arquivos de Log

Se o Visual Studio encontrar um erro ao conectar-se ao host de build, há 2 locais para verificar se há 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. Ela exibe mensagens sobre as principais etapas de conexão e erros. Para exibir as mensagens do Xamarin na Janela de Saída:

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

Select Xamarin in the Output tab

Arquivos de log

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

  1. Inicie o Visual Studio.

    Importante

    Observe que .svclogs não são habilitados por padrão. Para acessá-los, será necessário iniciar o Visual Studio com logs detalhados, conforme explicado no guia Logs de Versão. Para obter mais informações, consulte o blog Solução de problemas de extensões com o log de atividades.

  2. Tente conectar-se ao host de build.

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

    Collect the logs from Help > Xamarin > Zip Logs

  4. Quando você abrir o arquivo .zip, verá uma lista de arquivos semelhante ao exemplo a seguir. 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 um pouco diferentes. O .svclog é um XML e é útil se você deseja procurar nas mensagens. O .log será um texto sem formatação e é útil se você quiser filtrar as mensagens usando ferramentas de linha de comando.

    Para procurar em todas as mensagens, selecione e abra o arquivo .svclog:

    Select the svclog file

  5. O arquivo .svclog será aberto no Visualizador de Rastreamento de Serviço da Microsoft. Você pode procurar as mensagens por thread para ver grupos de mensagens relacionados. Para procurar por thread, primeiro selecione a guia Gráfico e, em seguida, clique no menu suspenso Modo de layout e selecione Thread:

    Click the Layout Mode drop-down menu and select Thread

Arquivos de Log detalhados

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

  1. Encerre o Visual Studio.

  2. Inicie um Prompt de Comando de Desenvolvedor.

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

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

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

  6. Execute o seguinte comando no Terminal no Mac para copiar as mensagens de log recentes do servidor SSH em um arquivo na á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 diretamente o problema, registre um novo relatório de bugs e anexe o arquivo .zip da etapa 5 e o arquivo .log da etapa 6.

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

Arquivos de log do IDE

Se tiver problemas para usar o provisionamento automático do Mac, examine os 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 ocorrer 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 o usuário = 'macuser'"

Causas conhecidas:

  • Recurso de segurança do Xamarin 4.1 – este erro acontecerá 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 está criptografada, mas a frase secreta está vazia". Esse é uma alteração intencional devida a um novo recurso de segurança do Xamarin 4.1. Correção recomendada: exclua id_rsa e id_rsa.pub de %LOCALAPPDATA%\Xamarin\MonoTouch e reconecte-se ao host de compilação 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 membros do grupo. Correção comum: executar chmod og-w "$HOME" em um prompt de comando do Terminal no Mac. Para obter detalhes sobre o arquivo ou diretório específico que 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 por "Autenticação recusada: modos ou propriedade inválida".

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.

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

O seguinte erro será gerado por causa deste 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.

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

Inicialize o Xcode no Mac e verifique se fez logon na sua conta de desenvolvedor Apple e se o seu Perfil de Desenvolvimento do iOS foi baixado:

Ensuring that the Apple developer account is logged in and the iOS Development Profile is downloaded

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

Causas relatadas:

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

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

Esse problema pode ocorrer quando o Visual Studio não consegue atualizar o cache de componente MEF. Se esse for o caso, instalar esta extensão do Visual Studio pode ajudar: https://visualstudiogallery.msdn.microsoft.com/22b94661-70c7-4a93-9ca3-8b6dd45f47cd

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

Erros devido a Processos de Host de Build existentes no Mac

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

ps -A | grep mono

Running commands in Terminal on the 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 deseja verificar se o comportamento não está relacionado a qualquer um dos arquivos de build temporários armazenados no Mac, você pode excluir a pasta de cache de build.

  1. Execute o seguinte comando no Terminal no Mac:

    open "$HOME/Library/Caches/Xamarin"
    
  2. Pressione Control e clique na pasta mtbs e selecione Mover para Lixeira:

    Move the mtbs folder to Trash