Řešení potíží s Připojení hostitele sestavení Xamarin.iOS
Tato příručka obsahuje postup řešení potíží, ke kterým může dojít pomocí nového správce připojení, včetně problémů s připojením a SSH.
Umístění souboru protokolu
- Mac –
~/Library/Logs/Xamarin.Messaging-[VERSION.BUILD]
- Windows –
%LOCALAPPDATA%\Xamarin\Logs
Soubory protokolu lze najít tak, že v sadě Visual Studio přejdete na nápovědu > k protokolům Xamarin > Zip.
Kde je hostitelská aplikace sestavení Xamarinu?
Hostitel sestavení Xamarin ze starších verzí Xamarin.iOS se už nevyžaduje. Visual Studio teď automaticky nasadí agenta přes vzdálené přihlášení a spustí ho na pozadí. Není k dispozici žádná další aplikace, která se bude spouštět na počítačích Mac nebo Windows.
Řešení potíží se vzdáleným přihlášením
Důležité
Tyto kroky řešení potíží jsou primárně určené pro problémy, ke kterým dochází při počátečním nastavení v novém systému. Pokud jste připojení dříve používali úspěšně v určitém prostředí a pak připojení náhle nebo přerušovaně přestalo fungovat, můžete (ve většině případů) přeskočit přímo na kontrolu, jestli některé z následujících postupů pomůže:
- Ukončete zbývající procesy, jak je popsáno níže v části Chyby kvůli existujícím procesům hostitele sestavení.
- Vymažte agenty, jak je popsáno v části Vymazání agentů Broker, IDB, Build a Designer, a pak použijte kabelové připojení k internetu a připojte se přímo přes IP adresu, jak je popsáno v části Nejde se připojit k MacBuildHost.local. Zkuste to prosím znovu..
Pokud žádný z těchto možností problém nevyřeší, postupujte podle pokynů v kroku 9 a vytvořte novou zprávu o chybě.
Zkontrolujte, jestli máte na Macu nainstalované kompatibilní verze Xamarin.iOS. Chcete-li to provést v sadě Visual Studio 2017, ujistěte se, že jste ve stabilním distribučním kanálu v Visual Studio pro Mac. V sadě Visual Studio 2015 a starších verzích se ujistěte, že jste ve stejném distribučním kanálu v obou prostředích IDEs.
- V Visual Studio pro Mac přejděte na Visual Studio pro Mac > Vyhledat Aktualizace... a zobrazte nebo změňte kanál aktualizace.
- V sadě Visual Studio 2015 a starších verzích zkontrolujte distribuční kanál v části Možnosti > nástrojů > Xamarin > Jiné.
Ujistěte se, že je na Macu povolené vzdálené přihlášení . Nastavte přístup jenom pro tyto uživatele a ujistěte se, že je váš uživatel Mac zahrnutý v seznamu nebo skupině:
Zkontrolujte, jestli brána firewall umožňuje příchozí připojení přes port 22 – výchozí hodnota pro SSH:
Pokud jste zakázali automaticky povolit podepsaný software přijímat příchozí připojení, OS X zobrazí během procesu párování dialogové okno s žádostí o povolení
mono-sgen
nebomono-sgen32
příjem příchozích připojení. Nezapomeňte kliknout na Povolit v tomto dialogovém okně:Ověřte, že jste přihlášeni k uživatelskému účtu na počítači Mac a máte aktivní relaci grafického uživatelského rozhraní.
Ujistěte se, že se připojujete k Macu pomocí uživatelského jména , nikoli pomocí celého jména. Tím se zabrání známému omezení pro celé názvy, které obsahují zvýrazněné znaky.
Uživatelské jméno najdete spuštěním
whoami
příkazu v Terminal.app.Například na následujícím snímku obrazovky bude název účtu amyb a ne Amy Burns:
Zkontrolujte správnost IP adresy, kterou používáte pro Mac. IP adresu najdete v části Předvolby > systému sdílení > vzdáleného přihlášení na Macu.
Jakmile potvrdíte IP adresu Počítače Mac, zkuste
ping
tuto adresu vecmd.exe
Windows:ping 10.1.8.95
Pokud příkaz ping selže, pak mac není směrovatelný z počítače s Windows. Tento problém bude potřeba vyřešit na úrovni konfigurace místní sítě mezi 2 počítači. Ujistěte se, že oba počítače jsou ve stejné místní síti.
Dále otestujte, jestli
ssh
se klient z OpenSSH může úspěšně připojit k Macu z Windows. Jedním ze způsobů instalace tohoto programu je instalace Gitu pro Windows. Pak můžete spustit příkazový řádek Git Bash a pokusit se dossh
Počítače Mac pomocí uživatelského jména a IP adresy:ssh amyb@10.1.8.95
Pokud krok 8 proběhne úspěšně, můžete zkusit spustit jednoduchý příkaz, jako je
ls
připojení:ssh amyb@10.1.8.95 'ls'
Měl by se zobrazit seznam obsahu domovského adresáře na Macu.
ls
Pokud příkaz funguje správně, ale připojení sady Visual Studio stále selže, můžete zkontrolovat část Známé problémy a omezení týkající se komplikací specifických pro Xamarin. Pokud žádný z těchto problémů neodpovídá vašemu problému, založte novou zprávu o chybě v komunitě vývojářů tak, že v sadě Visual Studio pošlete >> zprávu o problému a připojíte protokoly popsané v části Kontrola podrobných souborů protokolu.Pokud krok 8 selže, můžete v Terminálu na Macu spustit následující příkaz, abyste zjistili, jestli server SSH přijímá všechna připojení:
ssh localhost
Pokud krok 8 selže, ale krok 10 proběhne úspěšně, je pravděpodobné, že kvůli konfiguraci sítě není port 22 na hostiteli buildu Mac přístupný z Windows. Mezi možné problémy s konfigurací patří:
Nastavení brány firewall OS X zakáže připojení. Nezapomeňte pečlivě zkontrolovat krok 3.
V některých případech může konfigurace jednotlivých aplikací pro bránu firewall OS X skončit také v neplatném stavu, kdy nastavení zobrazená v předvolbách systému neodráží skutečné chování. Odstranění konfiguračního souboru (/Library/Preferences/com.apple.alf.plist) a restartování počítače může pomoct obnovit výchozí chování. Jedním ze způsobů, jak odstranit soubor, je zadat /Library/Preferences v části Přejít > do složky ve Finderu a pak přesunout soubor com.apple.alf.plist do koše.
Nastavení brány firewall jednoho ze směrovačů mezi Počítačem Mac a počítačem s Windows blokuje připojení.
Samotný Systém Windows zakáže odchozí připojení ke vzdálenému portu 22. To by bylo neobvyklé. Bránu Windows Firewall je možné nakonfigurovat tak, aby nepovolil odchozí připojení, ale výchozí nastavení je povolit všechna odchozí připojení.
Hostitel sestavení Mac zakáže přístup k portu 22 ze všech externích hostitelů prostřednictvím
pfctl
pravidla. To není pravděpodobné, pokud nevíte, že jste v minulosti nakonfigurovalipfctl
.
Pokud krok 8 selže a krok 10 selže, je pravděpodobné, že proces serveru SSH na Macu není spuštěný nebo není nakonfigurovaný tak, aby se aktuální uživatel přihlásil. V tomto případě nezapomeňte před prozkoumání složitějších možností pečlivě zkontrolovat nastavení vzdáleného přihlášení z kroku 2.
Známé problémy a omezení
Poznámka:
Tato část platí jenom v případě, že jste se úspěšně připojili k hostiteli sestavení Mac pomocí uživatelského jména a hesla počítače Mac pomocí klienta OpenSSH SSH, jak je popsáno v krocích 8 a 9 výše.
Neplatné přihlašovací údaje Zkuste to znovu.
Známé příčiny:
- Omezení – Tato chyba se může zobrazit při pokusu o přihlášení k hostiteli sestavení pomocí celého názvu účtu, pokud název obsahuje zvýrazněný znak. Jedná se o omezení SSH.NET knihovny , kterou Xamarin používá pro připojení SSH. Alternativní řešení: Viz krok 5 výše.
Nejde se ověřit pomocí klíčů SSH. Nejprve se zkuste přihlásit pomocí přihlašovacích údajů.
Známá příčina:
- Omezení zabezpečení SSH – Tato zpráva nejčastěji znamená, že jeden ze souborů nebo adresářů v plně kvalifikované cestě $HOME/.ssh/authorized_keys na Macu má povolená oprávnění k zápisu pro ostatní členy nebo členy skupiny . Běžná oprava: Spusťte
chmod og-w "$HOME"
na příkazovém řádku terminálu na Macu. Podrobnosti o tom, který konkrétní soubor nebo adresář způsobuje problém, spusťtegrep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
v terminálu a otevřete soubor sshd.log z plochy a vyhledejte "Ověřování odmítnuto: chybné vlastnictví nebo režimy".
"Pokoušíte se připojit..." nikdy se nedokončí
- Chyba – K tomuto problému může dojít v Xamarinu 4.1, pokud je přihlašovací prostředí v místní nabídce Upřesnit možnosti pro uživatele Mac v předvolbách > systému a skupinách nastaveno na jinou hodnotu než /bin/bash. (Od Xamarinu 4.2 tento scénář místo toho vede k chybové zprávě "Nepovedlo se připojit".) Alternativní řešení: Změňte přihlašovací prostředí zpět na původní výchozí hodnotu /bin/bash.
"Nelze se připojit k MacBuildHost.local. Zkuste to znovu.
Nahlášené příčiny:
Chyba – Několik uživatelů vidělo tuto chybovou zprávu spolu s podrobnější chybou v souborech protokolu "Při konfiguraci SSH pro uživatele došlo k neočekávané chybě ... Při pokusu o přihlášení k hostiteli sestavení pomocí uživatelského účtu domény služby Active Directory nebo jiné domény adresářové služby vypršel časový limit. Alternativní řešení: Přihlaste se k hostiteli sestavení pomocí místního uživatelského účtu.
Chyba – Někteří uživatelé viděli tuto chybu při pokusu o připojení k hostiteli sestavení poklikáním na název počítače Mac v dialogovém okně připojení. Možné alternativní řešení: Ručně přidejte Mac pomocí IP adresy.
Chyba – Někteří uživatelé narazili na tuto chybu při použití bezdrátového síťového připojení mezi hostitelem buildu Mac a Windows. Možné alternativní řešení: Přesuňte oba počítače do kabelového síťového připojení.
Chyba – V Xamarinu 4.0 se tato zpráva zobrazí vždy, když soubor $HOME/.bashrc na Macu obsahuje chybu. (Počínaje Xamarinem 4.1 už chyby v souboru .bashrc neovlivní proces připojení.) Alternativní řešení: Přesuňte soubor .bashrc do záložního umístění (nebo ho odstraňte, pokud víte, že ho nepotřebujete).
Chyba – Tato chyba se může zobrazit, pokud je přihlašovací prostředí v místní nabídce Upřesnit možnosti pro uživatele Mac v předvolbách > systému a skupinách nastaveno na jinou hodnotu než /bin/bash. Alternativní řešení: Změňte přihlašovací prostředí zpět na původní výchozí hodnotu /bin/bash.
Omezení – Tato chyba se může zobrazit, pokud je hostitel buildu Mac připojený ke směrovači, který nemá přístup k internetu (nebo pokud Mac používá server DNS, který vyprší, když se zobrazí výzva k zpětnému vyhledávání DNS počítače s Windows). Načtení otisku prstu SSH v sadě Visual Studio trvá přibližně 30 sekund a nakonec se nepodaří připojit.
Možné alternativní řešení: Do souboru sshd_config přidejte "UseDNS no". Před změnou nezapomeňte o tomto nastavení SSH přečíst. Viz příklad unix.stackexchange.com/questions/56941/what-is-the-point-of-sshd-usedns-option.
Následující kroky popisují jeden způsob, jak změnit nastavení. Abyste mohli provést kroky, musíte být přihlášeni k účtu správce na Macu.
Potvrďte umístění souboru sshd_config spuštěním
ls /etc/ssh/sshd_config
als /etc/sshd_config
v příkazovém řádku terminálu. Pro všechny zbývající kroky nezapomeňte použít umístění, které nevrací "Žádný takový soubor nebo adresář".Spuštěním
cp /etc/ssh/sshd_config "$HOME/Desktop/"
v terminálu zkopírujte soubor na plochu.Otevřete soubor z plochy v textovém editoru. Můžete například spustit
open -a TextEdit "$HOME/Desktop/sshd_config"
v terminálu.Do dolní části souboru přidejte následující řádek:
UseDNS no
Odeberte všechny řádky, které říkají
UseDNS yes
, aby se nové nastavení projevilo.Uložte soubor.
Spuštěním v terminálu zkopírujte
sudo cp "$HOME/Desktop/sshd_config" /etc/ssh/sshd_config
upravený soubor zpět na místo. Pokud se zobrazí výzva, zadejte heslo.Zakažte a znovu povolte vzdálené přihlášení v části Předvolby > systému sdílení > vzdáleného přihlášení a restartujte server SSH.
Vymazání agentů zprostředkovatele, IDB, sestavení a návrháře na Macu
Pokud soubory protokolu při instalaci, nahrávání nebo spuštění některého z agentů Mac ukazují problém, můžete zkusit odstranit složku mezipaměti XMA a vynutit tak opětovné nahrání sady Visual Studio.
V terminálu na Macu spusťte následující příkaz:
open "$HOME/Library/Caches/Xamarin"
Stiskněte control a klikněte na složku XMA a vyberte Přesunout do koše:
Ve Windows je také mezipaměť, kterou může pomoct vymazat. Otevřete příkazový řádek jako Správa istrator ve Windows:
del %localappdata%\Temp\Xamarin\XMA
Zprávy upozornění
Tato část popisuje několik zpráv, které se můžou zobrazit ve výstupních oknech a protokolech, které můžete obvykle ignorovat.
"Došlo k neshodě mezi nainstalovaným Xamarin.iOS ... a místní Xamarin.iOS
Pokud jste potvrdili, že mac i Windows se aktualizují na stejný distribuční kanál Xamarinu, toto upozornění je ignorovatelné.
Spuštění příkazu ls /usr/bin/mono se nezdařilo: ExitStatus=1
Tato zpráva je ignorovatelná, pokud mac běží OS X 10.11 (El Capitan) nebo novější. Tato zpráva není problém s OS X 10.11, protože Xamarin také kontroluje /usr/local/bin/mono, což je správné umístění pro mono
OS X 10.11.
Služba Bonjour MacBuildHost neodpověděla svou IP adresou.
Tato zpráva je ignorovatelná, pokud si nevšimnete, že dialogové okno připojení nezobrazuje IP adresu hostitele buildu Mac. Pokud v dialogovém okně chybí IP adresa, můžete mac přidat ručně.
Neplatný uživatel z verze 10.1.8.95 a input_userauth_request: neplatný uživatel [předběžné ověření]"
Tyto zprávy si můžete všimnout, pokud se podíváte do sshd.log. Tyto zprávy jsou součástí normálního procesu připojení. Zobrazí se, protože Xamarin používá uživatelské jméno dočasně při načítání otisku prstu SSH.
Okno výstupu a soubory protokolu
Pokud visual Studio při připojování k hostiteli sestavení dojde k chybě, 2 umístění ke kontrole dalších zpráv: okno Výstup a soubory protokolu.
Okno Výstup
Okno Výstup je nejlepším místem, kde začít. Zobrazí zprávy o hlavních krocích připojení a chybách. Zobrazení zpráv Xamarinu v okně Výstup:
- V nabídkách vyberte Zobrazit > výstup nebo klikněte na kartu Výstup .
- Klikněte na Zobrazit výstup z rozevírací nabídky.
- Vyberte Xamarin.
Soubory protokolu
Pokud okno Výstup neobsahuje dostatek informací k diagnostice problému, jsou soubory protokolu dalším místem, kde je potřeba hledat. Soubory protokolu obsahují další diagnostické zprávy, které se nezobrazují v okně Výstup. Zobrazení souborů protokolu:
Spusťte Visual Studio.
Důležité
Upozorňujeme, že .svclogs nejsou ve výchozím nastavení povolené. Abyste k nim měli přístup, budete muset spustit Visual Studio s podrobnými protokoly, jak je vysvětleno v průvodci protokoly verzí. Další informace najdete v tématu Řešení potíží s rozšířeními s blogem protokolu aktivit.
Pokus o připojení k hostiteli sestavení
Jakmile visual Studio dojde k chybě připojení, shromážděte protokoly z protokolů Xamarin > ZIP nápovědy>:
Když otevřete soubor .zip, zobrazí se seznam souborů podobný následujícímu příkladu. U chyb připojení jsou nejdůležitější soubory *Ide.log a *Ide.svclog . Tyto soubory obsahují stejné zprávy ve dvou mírně různých formátech. .svclog je XML a je užitečný, pokud chcete procházet zprávy. .log je prostý text a je užitečný, pokud chcete zprávy filtrovat pomocí nástrojů příkazového řádku.
Pokud chcete procházet všechny zprávy, vyberte a otevřete soubor .svclog :
Soubor .svclog se otevře v prohlížeči Microsoft Service Trace Viewer. Zprávy můžete procházet podle vlákna a zobrazit související skupiny zpráv. Pokud chcete procházet vlákno, nejprve vyberte kartu Graf a potom klikněte na rozevírací nabídku Režim rozložení a vyberte Vlákno:
Podrobné soubory protokolu
Pokud normální soubory protokolu stále neposkytují dostatek informací k diagnostice problému, je jedním z posledních postupů, jak se pokusit povolit podrobné protokolování. Podrobné protokoly jsou také upřednostňované u zpráv o chybách.
Ukončete Visual Studio.
Spusťte příkazový řádek pro vývojáře.
Spuštěním následujícího příkazu na příkazovém řádku spusťte Visual Studio s podrobným protokolováním:
devenv /log
Pokus o připojení k hostiteli sestavení ze sady Visual Studio
Jakmile visual Studio dojde k chybě připojení, shromážděte protokoly z protokolů Xamarin > ZIP nápovědy>.
Spuštěním následujícího příkazu v terminálu na Macu zkopírujte všechny nedávné zprávy protokolu ze serveru SSH do souboru na ploše:
grep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
Pokud tyto podrobné soubory protokolu neposkytují dostatek vodítek k přímému vyřešení problému, vytvořte novou zprávu o chybě a připojte .zip soubor z kroku 5 i soubor .log z kroku 6.
Řešení potíží s automatickým zřizováním pro Mac
Soubory protokolů integrovaného vývojového prostředí (IDE)
Pokud při používání automatického zřizování Mac narazíte na potíže, podívejte se na protokoly integrovaného vývojového prostředí sady Visual Studio 2017 uložené v %LOCALAPPDATA%\Xamarin\Logs\15.0.
Řešení potíží s chybami sestavení a nasazení
Tato část popisuje několik problémů, ke kterým může dojít po úspěšném připojení sady Visual Studio k hostiteli sestavení.
"Nejde se připojit k adrese ='192.168.1.2:22' s user='macuser'"
Známé příčiny:
Funkce zabezpečení Xamarin 4.1 – K této chybě dojde , pokud po použití Xamarinu 4.1 nebo vyššího downgrade na Xamarin 4.1 nebo vyšší. V takovém případě bude tato chyba doprovázena dalším upozorněním " Privátní klíč je šifrovaný, ale přístupové heslo je prázdné". Jedná se o úmyslnou změnu z důvodu nové funkce zabezpečení v Xamarinu 4.1. Doporučená oprava: Odstraňte id_rsa a id_rsa.pub z %LOCALAPPDATA%\Xamarin\MonoTouch a pak se znovu připojte k hostiteli sestavení Mac.
Omezení zabezpečení SSH – Pokud je tato zpráva doprovázena dalším upozorněním "Nelze ověřit uživatele pomocí existujících klíčů ssh", nejčastěji to znamená, že jeden ze souborů nebo adresářů v plně kvalifikované cestě $HOME/.ssh/authorized_keys na Macu má povolená oprávnění k zápisu pro jiné členy nebo členy skupiny . Běžná oprava: Spusťte
chmod og-w "$HOME"
na příkazovém řádku terminálu na Macu. Podrobnosti o tom, který konkrétní soubor nebo adresář způsobuje problém, spusťtegrep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
v terminálu a otevřete soubor sshd.log z plochy a vyhledejte "Ověřování odmítnuto: chybné vlastnictví nebo režimy".
Řešení nelze načíst ze sdílené síťové složky.
Řešení budou zkompilována pouze v případě, že jsou v místním systému souborů Windows nebo namapované jednotce.
Řešení uložená ve sdílené síťové složce můžou vyvolat chyby nebo úplně odmítnout kompilaci. Všechny soubory .sln použité v sadě Visual Studio by měly být uloženy v místním systému souborů Systému Windows.
Kvůli tomuto problému se vyvolá následující chyba:
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.
Chybějící zřizovací profily nebo chyba "Nepodařilo se vytvořit knihovnu fat"
Na Macu spusťte Xcode a ujistěte se, že je váš vývojářský účet Apple přihlášený a že se stáhne váš vývojový profil pro iOS:
Operace soketu se pokusila o nedostupnou síť.
Nahlášené příčiny:
- Vylepšení – Tato chyba může zabránit úspěšným sestavením, když Visual Studio používá adresu IPv6 pro připojení k hostiteli sestavení. (Připojení hostitele sestavení zatím nepodporuje adresy IPv6.)
Modul plug-in Xamarin.iOS sady Visual Studio se po přeinstalaci beta/alfa kanálu nepodaří načíst
K tomuto problému může dojít v případě, že se sadě Visual Studio nepodaří aktualizovat mezipaměť součástí MEF. V takovém případě vám může pomoct instalace tohoto rozšíření sady Visual Studio: https://visualstudiogallery.msdn.microsoft.com/22b94661-70c7-4a93-9ca3-8b6dd45f47cd
Tím vymažete mezipaměť součástí sady Visual Studio MEF, aby se vyřešily problémy s poškozením mezipaměti.
Chyby způsobené existujícími procesy hostitele sestavení na macu
Procesy z předchozích připojení hostitele sestavení můžou někdy kolidovat s chováním aktuálního aktivního připojení. Pokud chcete zkontrolovat všechny existující procesy, zavřete Visual Studio a pak v terminálu Mac spusťte následující příkazy:
ps -A | grep mono
K ukončení existujících procesů použijte následující příkaz:
killall mono
Vymazání mezipaměti sestavení systému Mac
Pokud řešíte problém se sestavením a chcete se ujistit, že chování nesouvisí s žádným dočasným souborem sestavení uloženým na Macu, můžete odstranit složku mezipaměti sestavení.
V terminálu na Macu spusťte následující příkaz:
open "$HOME/Library/Caches/Xamarin"
Stiskněte a klikněte na složku mtbs a vyberte Přesunout do koše: