Ř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:

  1. 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é.
  2. 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ě:

    Set access for Only these users

  3. Zkontrolujte, jestli brána firewall umožňuje příchozí připojení přes port 22 – výchozí hodnota pro SSH:

    Check that the firewall allows incoming connections through port 22

    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 nebo mono-sgen32 příjem příchozích připojení. Nezapomeňte kliknout na Povolit v tomto dialogovém okně:

    Click Allow on this dialog

  4. 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í.

  5. 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:

    Getting the account name from the Terminal app

  6. 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.

    The IP address in the System Preferences app

  7. Jakmile potvrdíte IP adresu Počítače Mac, zkuste ping tuto adresu ve cmd.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.

  8. 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 do ssh Počítače Mac pomocí uživatelského jména a IP adresy:

    ssh amyb@10.1.8.95
    

  9. 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.

  10. 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
    
  11. 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 nakonfigurovali pfctl .

  12. 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ťte grep 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.

    1. Potvrďte umístění souboru sshd_config spuštěním ls /etc/ssh/sshd_config a ls /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ář".

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

    2. Spuštěním cp /etc/ssh/sshd_config "$HOME/Desktop/" v terminálu zkopírujte soubor na plochu.

    3. Otevřete soubor z plochy v textovém editoru. Můžete například spustit open -a TextEdit "$HOME/Desktop/sshd_config" v terminálu.

    4. Do dolní části souboru přidejte následující řádek:

      UseDNS no
      
    5. Odeberte všechny řádky, které říkají UseDNS yes , aby se nové nastavení projevilo.

    6. Uložte soubor.

    7. 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.

    8. 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.

  1. V terminálu na Macu spusťte následující příkaz:

    open "$HOME/Library/Caches/Xamarin"
    
  2. Stiskněte control a klikněte na složku XMA a vyberte Přesunout do koše:

    Move the XMA folder to Trash

  3. 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:

  1. V nabídkách vyberte Zobrazit > výstup nebo klikněte na kartu Výstup .
  2. Klikněte na Zobrazit výstup z rozevírací nabídky.
  3. Vyberte Xamarin.

Select Xamarin in the Output tab

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:

  1. 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.

  2. Pokus o připojení k hostiteli sestavení

  3. Jakmile visual Studio dojde k chybě připojení, shromážděte protokoly z protokolů Xamarin > ZIP nápovědy>:

    Collect the logs from Help > Xamarin > Zip Logs

  4. 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 :

    Select the svclog file

  5. 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:

    Click the Layout Mode drop-down menu and select Thread

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.

  1. Ukončete Visual Studio.

  2. Spusťte příkazový řádek pro vývojáře.

  3. 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
    
  4. Pokus o připojení k hostiteli sestavení ze sady Visual Studio

  5. Jakmile visual Studio dojde k chybě připojení, shromážděte protokoly z protokolů Xamarin > ZIP nápovědy>.

  6. 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ťte grep 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:

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

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

Running commands in Terminal on the Mac

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í.

  1. V terminálu na Macu spusťte následující příkaz:

    open "$HOME/Library/Caches/Xamarin"
    
  2. Stiskněte a klikněte na složku mtbs a vyberte Přesunout do koše:

    Move the mtbs folder to Trash