Диагностика и устранение неполадок подключения к серверу сборки Xamarin.iOS
Этом руководстве приведены инструкции по устранению неполадок, которые могут возникнуть с помощью нового диспетчера соединений, включая проблемы с подключением и SSH.
Расположение файла журнала
-
Mac —
~/Library/Logs/Xamarin.Messaging-[VERSION.BUILD]
-
Windows —
%LOCALAPPDATA%\Xamarin\Logs
Файлы журналов можно найти, перейдя в Справка > Xamarin > Zip Logs в Visual Studio.
Где находится приложение Xamarin Build Host?
Хост сборки Xamarin из старых версий Xamarin.iOS больше не требуется. Visual Studio теперь автоматически развертывает агент по удаленному входу и запускает его в фоновом режиме. Нет дополнительного приложения, которое будет работать на компьютерах Mac или Windows.
Устранение неполадок удаленного входа
Важный
Эти действия по устранению неполадок в основном предназначены для проблем, возникающих во время начальной установки в новой системе. Если вы ранее успешно использовали подключение в определенной среде, а затем подключение внезапно или периодически перестает работать, можно (в большинстве случаев) перейти сразу к проверке, поможет ли что-либо из следующего:
- Завершить остаточные процессы, как описано ниже в разделе Ошибки из-за существующих процессов узла сборки.
- Очистите агентов, как описано в разделе Очистка брокера, IDB, сборки и конструктора агентов, а затем используйте проводное подключение к интернету и подключитесь непосредственно через IP-адрес, как описано в разделе Не удалось подключиться к MacBuildHost.local. Повторите попытку..
Если ни один из этих вариантов не устранит проблему, следуйте инструкциям, приведенным на шаге 9, чтобы отправить новый отчет об ошибке.
Убедитесь, что на компьютере Mac установлены совместимые версии Xamarin.iOS. Для этого в Visual Studio 2017 убедитесь, что вы находитесь на Стабильном канале распространения в Visual Studio для Mac. В Visual Studio 2015 и более ранних версиях убедитесь, что вы находитесь на одном канале распространения в обоих средах разработки.
- В Visual Studio для Mac перейдите к Visual Studio для Mac > Проверить обновления..., чтобы просмотреть или изменить канал обновлений .
- В Visual Studio 2015 и более ранних версиях проверьте канал распространения в разделе Tools > Options > Xamarin > Other.
Убедитесь, что удаленный вход на Mac включен. Задайте доступ для только для этих пользователейи убедитесь, что ваш пользовательский аккаунт на Mac включен в этот список или группу:
Убедитесь, что брандмауэр разрешает входящие подключения через порт 22 — по умолчанию для SSH:
Если вы отключили автоматическое разрешение подписанного программного обеспечения получать входящие подключения, OS X будет отображать диалоговое окно во время процесса связывания с просьбой разрешить
mono-sgen
илиmono-sgen32
получать входящие подключения. Обязательно щелкните Разрешить в этом диалоговом окне:Убедитесь, что вы вошли в учетную запись пользователя на этом компьютере Mac и имеете активный сеанс графического интерфейса.
Убедитесь, что вы подключаетесь к Mac под именем пользователя , а не под полным именем . Это позволяет избежать известного ограничения для полных имен, включающих акцентированные символы.
Вы можете найти имя пользователя , выполнив команду
whoami
в Terminal.app.Например, на снимке экрана ниже имя учетной записи будет zoed и не Зое Драку:
Убедитесь, что IP-адрес, который вы используете для Mac, является правильным. IP-адрес можно найти в разделе Системные настройки > Общий доступ > Удалённый вход на Mac.
После того как вы подтвердите IP-адрес Mac, попробуйте выполнить команду
ping
на этот адрес вcmd.exe
из Windows.ping 10.1.8.95
Если сбой проверки подлинности, компьютер Mac не routable с компьютера Windows. Эту проблему необходимо решить на уровне конфигурации сети локальной области между двумя компьютерами. Убедитесь, что оба компьютера находятся в одной локальной сети.
Затем проверьте, успешно ли клиент
ssh
из OpenSSH может успешно подключиться к Mac из Windows. Одним из способов установки этой программы является установка Git для Windows. Затем можно запустить командную строку Git Bash и попытатьсяssh
в Mac с именем пользователя и IP-адресом:ssh zoed@10.1.8.95
Если шаг 8 успешно выполнен, можно попробовать выполнить простую команду, например
ls
через подключение:ssh zoed@10.1.8.95 'ls'
В этом списке должно быть указано содержимое домашнего каталога на Компьютере Mac. Если команда
ls
работает правильно, но подключение Visual Studio по-прежнему завершается ошибкой, вы можете проверить раздел "Известные проблемы и ограничения", касающийся осложнений, характерных для Xamarin. Если ни одна из них не соответствует вашей проблеме, создайте новый отчет об ошибке в сообществе разработчиков, перейдя в Visual Studio в раздел Справка, > Оставить отзыв, > Сообщить о проблеме и прикрепите журналы, описанные в разделе Проверьте подробные журнальные файлы.Если шаге 8 не удастся, можно выполнить следующую команду в терминале Mac, чтобы узнать, принимает ли сервер SSH любые подключения:
ssh localhost
Если шаг 8 завершается неудачей, но шаг 10 выполняется успешно, проблема, скорее всего, заключается в том, что порт 22 на узле сборки Mac недоступен из Windows из-за конфигурации сети. Возможные проблемы конфигурации:
Параметры брандмауэра OS X не разрешают подключение. Обязательно дважды проверьте шаг 3.
Иногда конфигурация каждого приложения для брандмауэра OS X также может оказаться в недопустимом состоянии, где параметры, отображаемые в системных настройках, не отражают фактическое поведение. Удаление файла конфигурации (/Library/Preferences/com.apple.alf.plist) и перезагрузка компьютера может помочь восстановить поведение по умолчанию. Одним из способов удаления файла является ввод /Library/Preferences в разделе Go > Перейти к папке в Finder, а затем переместить файл com.apple.alf.plist в корзину.
Параметры брандмауэра одного из маршрутизаторов между Mac и компьютером Windows блокируют подключение.
Сама Windows запрещает исходящие подключения к удаленному порту 22. Это было бы необычно. Брандмауэр Windows можно настроить для запрета исходящих подключений, но параметр по умолчанию — разрешить все исходящие подключения.
Узел сборки Mac запрещает доступ к порту 22 со всех внешних узлов через правило
pfctl
. Это вряд ли возможно, если вы не знаете, что вы настроилиpfctl
в прошлом.
Если шаг 8 завершается ошибкой, и в шаге 10 завершается ошибкой, проблема, скорее всего, в том, что процесс SSH-сервера на компьютере Mac не запущен или не настроен на разрешение текущему пользователю входа в систему. В этом случае обязательно дважды проверьте параметры удаленного входа из шага 2, прежде чем исследовать все более сложные возможности.
Известные проблемы и ограничения
Заметка
Этот раздел применяется только в том случае, если вы успешно подключились к узлу сборки Mac с именем пользователя и паролем Mac с помощью клиента OpenSSH SSH, как описано в шагах 8 и 9 выше.
Неверные учетные данные. Повторите попытку".
Известные причины:
- Ограничение – Эта ошибка может появиться при попытке войти в сервер сборки с помощью учетной записи Full Name, если имя содержит символ с диакритическим знаком. Это ограничение библиотеки SSH.NET, которую использует Xamarin для подключения SSH. Обходное решение: см. шаг 5 выше.
"Не удается выполнить проверку подлинности с помощью ключей SSH. Сначала попробуйте войти с помощью учетных данных"
Известная причина:
-
Ограничения безопасности SSH. Это сообщение чаще всего означает, что один из файлов или каталогов в полном пути $HOME/.ssh/authorized_keys на Mac имеет разрешения на запись для других или членов группы.
распространённое исправление: выполните
chmod og-w "$HOME"
в командной строке терминала на Mac. Для получения подробной информации о том, какой именно файл или каталог вызывает проблему, выполнитеgrep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
в терминале, а затем откройте файл sshd.log с вашего рабочего стола и найдите "Отказ в проверке подлинности: неверная собственность или режимы доступа".
"Попытка подключиться..." никогда не завершается
- Ошибка. Эта проблема может возникнуть в Xamarin 4.1, если логин-оболочка в контекстном меню "Дополнительные параметры" для пользователя Mac в Системных настройках > "Пользователи & и группы" установлена на значение, отличное от /bin/bash. (Начиная с Xamarin 4.2 этот сценарий приводит к сообщению об ошибке "Не удалось подключиться". обходной путь: измените оболочку входа в исходное значение по умолчанию /bin/bash.
"Не удалось подключиться к MacBuildHost.local. Повторите попытку".
Сообщаемые причины:
ошибка — несколько пользователей получили это сообщение об ошибке вместе с более подробным сообщением об ошибке в файлах журнала "При настройке SSH для пользователя произошла непредвиденная ошибка ... при попытке войти в узел сборки с помощью учетной записи пользователя домена Active Directory или другой службы каталогов время ожидания операции сеанса истекло." Обходное решение: Войдите в узел сборки с использованием локальной учетной записи.
Ошибка. Некоторые пользователи сталкивались с этой ошибкой при попытке подключиться к узлу сборки, дважды щёлкнув по имени Mac в диалоговом окне подключения. Возможное обходное решение: вручную добавьте Mac-устройство с помощью IP-адреса.
ошибка. Некоторые пользователи столкнулись с этой ошибкой при использовании беспроводного сетевого подключения между узлом сборки Mac и Windows. Возможный обходной путь: Подключите оба компьютера к проводной сети.
ошибка — в Xamarin 4.0 это сообщение появится в любое время, когда файл $HOME/.bashrc на Компьютере Mac содержит ошибку. (Начиная с Xamarin 4.1 ошибки в файле .bashrc больше не повлияют на процесс подключения.) обходной путь: переместите файл .bashrc в расположение резервного копирования (или удалите его, если вы знаете, что это не нужно).
Сбой. Эта ошибка может появиться, если оболочка входа в контекстном меню Дополнительные параметры для конкретного пользователя Mac в Системных > настройках & "Пользователи и группы" настроена на значение, отличное от /bin/bash. обходной путь: измените оболочку входа в исходное значение по умолчанию /bin/bash.
Ограничение. Эта ошибка может появиться, если узел сборки Mac подключен к маршрутизатору, который не имеет доступа к интернету, или если Mac использует DNS-сервер, время ожидания которого истекает при запросе обратного разрешения DNS компьютера Windows. Visual Studio потребуется примерно 30 секунд, чтобы получить отпечаток SSH, однако в итоге подключение не удастся.
Возможное обходное решение: добавьте "UseDNS no" в файл sshd_config. Перед изменением настройки SSH обязательно ознакомьтесь с ней. См. пример: unix.stackexchange.com/questions/56941/what-is-the-point-of-sshd-usedns-option.
В следующих шагах описан один из способов изменения параметра. Чтобы выполнить действия, необходимо войти в учетную запись администратора на Компьютере Mac.
Подтвердите расположение файла sshd_config, выполнив
ls /etc/ssh/sshd_config
иls /etc/sshd_config
в командной строке терминала. Для всех оставшихся шагов обязательно используйте расположение, которое не возвращать "Нет такого файла или каталога".Запустите
cp /etc/ssh/sshd_config "$HOME/Desktop/"
в терминале, чтобы скопировать файл на рабочий стол.Откройте файл из рабочего стола в текстовом редакторе. Например, можно запустить
open -a TextEdit "$HOME/Desktop/sshd_config"
в терминале.Добавьте следующую строку в нижней части файла:
UseDNS no
Удалите все строки, которые говорят
UseDNS yes
, чтобы убедиться, что новый параметр вступает в силу.Сохраните файл.
Запустите
sudo cp "$HOME/Desktop/sshd_config" /etc/ssh/sshd_config
в терминале, чтобы скопировать измененный файл обратно в место. Введите пароль при появлении запроса.Отключите и снова включите Удаленный вход в разделе Системные настройки > Совместное использование > Удаленный вход, чтобы перезапустить сервер SSH.
Очистка агентов брокера, IDB, сборки и конструктора на Компьютере Mac
Если файлы журналов отображают проблему во время действий "Установка", "Загрузка" или "Запуск" для любого из агентов Mac, можно попробовать удалить папку кэша XMA, чтобы заставить Visual Studio загрузить их снова.
Выполните следующую команду в терминале Mac:
open "$HOME/Library/Caches/Xamarin"
Удерживая клавишу Control, щелкните по папке XMA и выберите Переместить в корзину:
В Windows также есть кэш, который может помочь очистить. Откройте запрос cmd от имени администратора в Windows:
del %localappdata%\Temp\Xamarin\XMA
Предупреждения
В этом разделе рассматриваются несколько сообщений, которые могут отображаться в окнах вывода и журналах, которые обычно можно игнорировать.
Существует несоответствие между установленным Xamarin.iOS ... и локальным Xamarin.iOS.
Если вы подтвердили, что mac и Windows обновлены до одного и того же канала распространения Xamarin, это предупреждение игнорируется.
"Не удалось выполнить "ls /usr/bin/mono": ExitStatus=1"
Это сообщение игнорируется до тех пор, пока Mac работает под управлением OS X 10.11 (El Capitan) или более поздней версии. Это сообщение не является проблемой в ОС X 10.11, так как Xamarin также проверяет /usr/local/bin/mono, что является правильным ожидаемым расположением для mono
в ОС X 10.11.
Служба Bonjour "MacBuildHost" не предоставила свой IP-адрес.
Это сообщение игнорируется, если вы не заметили, что диалоговое окно подключения не отображает IP-адрес узла сборки Mac. Если IP-адрес отсутствует в этом диалоговом окне, вы по-прежнему можете вручную добавитьMac.
"Недопустимый пользователь a с 10.1.8.95" и "input_userauth_request: недопустимый пользователь a [предварительная проверка подлинности]"
Вы можете заметить эти сообщения, если вы посмотрите на sshd.log. Эти сообщения являются частью обычного процесса подключения. Они отображаются, так как Xamarin временно использует имя пользователя при получении отпечатка SSH .
Окно вывода и файлы журналов
Если при подключении к узлу сборки в Visual Studio возникает ошибка, существует два места, где можно проверить дополнительные сообщения: окно вывода и журналы.
Окно вывода
Окно вывода — это лучшее место для начала. В нем отображаются сообщения о основных шагах и ошибках подключения. Чтобы просмотреть сообщения Xamarin в окне вывода:
- Выберите Вид > Вывод в меню или перейдите на вкладку "Вывод".
- Щелкните Показать выходные данные из раскрывающегося меню.
- Выберите Xamarin.
Файлы журнала
Если окно вывода не содержит достаточно сведений для диагностики проблемы, файлы журналов являются следующим местом для просмотра. Файлы журнала содержат дополнительные диагностические сообщения, которые не отображаются в окне вывода. Чтобы просмотреть файлы журнала, выполните следующие действия.
Запустите Visual Studio.
Важный
Обратите внимание, что .svclogs по умолчанию не включены. Чтобы получить к ним доступ, необходимо запустить Visual Studio с подробными журналами, как описано в руководстве по журналам версий. Для получения дополнительной информации обратитесь к блогу "Устранение неполадок с журналом действий".
Попытайтесь подключиться к узлу сборки.
После того как возникнет ошибка подключения в Visual Studio, соберите журналы из помощи > Xamarin > Zip Logs:
При открытии файла .zip вы увидите список файлов, аналогичных приведенному ниже. Для ошибок подключения наиболее важными файлами являются *Ide.log и файлы *Ide.svclog. Эти файлы содержат одни и те же сообщения в двух разных форматах. .svclog является XML-файлом и полезен, если вы хотите просмотреть сообщения. .log является обычным текстом и полезен, если вы хотите отфильтровать сообщения с помощью средств командной строки.
Чтобы просмотреть все сообщения, выберите и откройте файл .svclog:
Файл .svclog откроется в средстве просмотра трассировки службы Майкрософт. Вы можете просматривать сообщения по потоку, чтобы просмотреть связанные группы сообщений. Чтобы просматривать по потоку, сначала выберите вкладку Graph, затем щелкните раскрывающееся меню Layout Mode и выберите Thread:
Подробные лог-файлы
Если обычные файлы журналов по-прежнему не предоставляют достаточных сведений для диагностики проблемы, последний способ - включить подробное ведение журнала. Подробные журналы также предпочтительнее для отчетов об ошибках.
Закройте Visual Studio.
Выполните следующую команду в командной строке, чтобы запустить Visual Studio с подробным ведением журнала.
devenv /log
Попытайтесь подключиться к узлу сборки из Visual Studio.
После того, как Visual Studio встретит ошибку подключения, соберите журналы из справка > Xamarin > Zip Logs.
Выполните следующую команду в терминале Mac, чтобы скопировать последние сообщения журнала с сервера SSH в файл на рабочем столе:
grep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
Если эти подробные файлы журналов не предоставляют достаточно подсказок, чтобы устранить проблему напрямую, пожалуйста, создайте новый отчет об ошибке и приложите как файл .zip из шага 5, так и .log файл из шага 6.
Устранение неполадок автоматического конфигурирования Mac
Файлы журнала интегрированной среды разработки
Если вы столкнулись с проблемами при использовании автоматического предоставления Mac, ознакомьтесь с журналами интегрированной среды разработки Visual Studio 2017, хранящимися в %LOCALAPPDATA%\Xamarin\Logs\15.0.
Устранение неполадок при сборке и развертывании
В этом разделе рассматриваются некоторые проблемы, которые могут возникнуть после успешного подключения Visual Studio к узлу сборки.
"Не удается подключиться к Address='192.168.1.2:22' с user='macuser'"
Известные причины:
функции безопасности Xamarin 4.1 . Эта ошибка произойдет, если вы измените версию Xamarin 4.0 после использования Xamarin 4.1 или более поздней версии. В этом случае ошибка будет сопровождаться дополнительным предупреждением "Закрытый ключ зашифрован, но парольная фраза пуста". Это изменение сделано намеренно из-за новой функции безопасности в Xamarin 4.1. рекомендуется исправить: удалить id_rsa и id_rsa.pub из %LOCALAPPDATA%\Xamarin\MonoTouch, а затем снова подключиться к узлу сборки Mac.
ограничение безопасности SSH. Если это сообщение сопровождается дополнительным предупреждением "Не удалось выполнить проверку подлинности пользователя с помощью существующих ключей SSH", это чаще всего означает, что один из файлов или каталогов в полном пути $HOME/.ssh/authorized_keys на Mac имеет разрешение на запись для других или групп. Распространённое исправление: выполните
chmod og-w "$HOME"
в командной строке терминала на Mac. Дополнительные сведения о том, какой конкретный файл или каталог вызывает проблему: запуститеgrep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
в терминале, затем откройте файл sshd.log на рабочем столе и найдите "Отказ в проверке подлинности: неверные права владения или режимы".
Не удается загрузить решения из сетевого ресурса
Решения будут скомпилированы только в том случае, если они находятся в локальной файловой системе Windows или сопоставленном диске.
Решения, сохраненные в сетевой общей папке, могут вызвать ошибки или полностью отказаться от компиляции. Все .sln файлы, используемые в Visual Studio, должны сохраняться в локальной файловой системе Windows.
Следующая ошибка возникает из-за этой проблемы:
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.
Ошибка "Отсутствуют профили подготовки" или "Не удалось создать универсальную библиотеку"
Запустите Xcode на Mac и убедитесь, что учетная запись разработчика Apple вошла в систему, а профиль разработки iOS загружен.
Попытка операции сокета была выполнена в сети, которая недоступна.
Сообщаемые причины:
- Усовершенствование – Эта ошибка может предотвратить успешное выполнение сборок, если Visual Studio использует IPv6-адрес для подключения к узлу сборки. (Подключение узла сборки еще не поддерживает адреса IPv6.)
Подключаемый модуль Xamarin.iOS для Visual Studio не загружается после переустановки в рамках бета- или альфа-канала.
Эта проблема может возникнуть, когда Visual Studio не сможет обновить кэш компонентов MEF. Если это так, установка этого расширения Visual Studio может помочь: https://visualstudiogallery.msdn.microsoft.com/22b94661-70c7-4a93-9ca3-8b6dd45f47cd
Это приведет к очистке кэша компонентов MEF Visual Studio для устранения проблем с повреждением кэша.
Ошибки из-за существующих процессов узла сборки на Компьютере Mac
Процессы от предыдущих подключений хоста сборки иногда могут влиять на поведение текущего активного подключения. Чтобы проверить наличие существующих процессов, закройте Visual Studio и выполните следующие команды в терминале Mac:
ps -A | grep mono
Чтобы убить существующие процессы, используйте следующую команду:
killall mono
Очистка кэша сборки Mac
Если вы устраняете проблему сборки и хотите убедиться, что поведение не связано с какими-либо временными файлами сборки, хранящимися на компьютере Mac, можно удалить папку кэша сборки.
Выполните следующую команду в терминале Mac:
open "$HOME/Library/Caches/Xamarin"
Щелкните папку mtbs и выберите Переместить в корзину:
Связанные ссылки
- Подключение к Mac
- видео агента сборки Xamarin для Mac