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:
- Encerre os processos remanescentes, como descrito abaixo em , Erros devido a processos de host de build existentes.
- Limpe os agentes conforme descrito em Limpar o Agente, o IDB, o Build e os Agentes do Designere, em seguida, use uma conexão de Internet com fio e conecte-se diretamente por meio do endereço IP, conforme descrito em Não foi possível se conectar ao MacBuildHost.local. Tente novamente..
Se nenhuma dessas opções corrigir o problema, siga as instruções na etapa 9 para registrar um novo relatório de bugs.
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.
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:
Verifique se o firewall permite conexões de entrada por meio da porta 22 – o padrão para SSH:
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
oumono-sgen32
recebam conexões de entrada. Certifique-se de clicar em Permitir nesta caixa de diálogo:Confirme se você está conectado à conta de usuário nesse Mac e tenha uma sessão de GUI ativa.
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:
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.
Depois de confirmar o endereço IP do Mac, tente uma
ping
para esse endereço nocmd.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.
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 tentarssh
no Mac com seu nome de usuário e endereço IP:ssh zoed@10.1.8.95
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.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
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 configuroupfctl
no passado.
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, executegrep 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.
Confirme o local do arquivo sshd_config executando
ls /etc/ssh/sshd_config
els /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".Execute
cp /etc/ssh/sshd_config "$HOME/Desktop/"
no Terminal para copiar o arquivo para sua área de trabalho.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.Adicione a seguinte linha na parte inferior do arquivo:
UseDNS no
Remova as linhas que dizem
UseDNS yes
para garantir que a nova configuração entre em vigor.Salve o arquivo.
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.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.
Execute o seguinte comando no Terminal no Mac:
open "$HOME/Library/Caches/Xamarin"
Clique com a tecla Control na pasta XMA e selecione Mover para o Lixo
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:
- Selecione Exibir > Saída nos menus ou clique na guia Saída.
- Clique no menu suspenso Mostrar saída do menu suspenso.
- Selecione Xamarin.
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:
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.
Tente se conectar ao host de build.
Depois que o Visual Studio atingir o erro de conexão, colete os logs em Ajuda > Xamarin > Logs Zip:
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:
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.
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.
Saia do Visual Studio.
Execute o seguinte comando no prompt de comando para iniciar o Visual Studio com um log detalhado:
devenv /log
Tente se conectar ao host de build do Visual Studio.
Depois que o Visual Studio atingir o erro de conexão, colete os logs do Help > Xamarin > Zip Logs.
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, executegrep 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:
"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
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.
Execute o seguinte comando no Terminal no Mac:
open "$HOME/Library/Caches/Xamarin"
Mantenha pressionada a tecla Control e clique na pasta mtbs, depois selecione Mover para o Lixo.