Tipy pro řešení potíží Xamarin. Mac
Přehled
Někdy jsme všechno zablokovali při práci na projektu, a to buď na základě neschopnosti získat rozhraní API pro práci, kterou chceme, nebo při pokusu o řešení chyby. Naším cílem v Xamarin je, abyste mohli být v psaní vašich mobilních a desktopových aplikací úspěšné a poskytli jsme nějaké materiály, které vám pomůžou.
U některého z těchto prostředků existují některé kroky přípravy, které vám pomohou rychle vyřešit váš problém:
Určete hlavní příčinu problému, co nejlépe nahlásíte chyby:
"Moje selhání aplikace" se obtížně diagnostikuje. "Moje aplikace selže, když vrátím prázdné pole do tohoto volání" je mnohem snazší pracovat na opravě.
"Nemůžu získat NSTable." je méně užitečné než "v tomto případě by se v tomto případě pravděpodobně nevolala žádná z metod v mém NSTableDelegate."
Pokud je to možné, použijte k tomu malý ukázkový program, který problém zobrazuje. Prozkoumá prostřednictvím stránek zdrojového kódu, který hledá problém, přebírá objednávky o velikosti více času a úsilí.
Informace o tom, jaké změny jste udělali v aplikaci, aby se mohl problém zobrazit, může rychle zúžit zdroj problému. Seznamte se s tím, jestli jste nedávno upgradovali verze Xamarin. Mac, vystřihujte části vaší aplikace, abyste zjistili, co problém způsobilo, nebo otestujete předchozí buildy, abyste zjistili, co změna zavedla. problém může být velmi užitečný.
Co dělat, když vaše aplikace selže bez výstupu
ve většině případů ladicí program v Visual Studio pro Mac zachytí výjimky a chyby ve vaší aplikaci a pomůže vám sledovat hlavní příčinu. Nicméně existují případy, kdy se vaše aplikace na Docku zaznamená, a pak se ukončí s malým nebo žádným výstupem. Tady je několik tipů:
- Problémy při podepisování kódu.
- Některé chyby modulu mono runtime.
- Některé výjimky a chyby v cíli – c.
- Některá selhání se značně blíží době životnosti procesu.
- Některé přetečení zásobníku.
- Verze macOS uvedená v souboru info. plist je novější než aktuálně nainstalovaná verze MacOS nebo není platná.
Ladění těchto programů může být frustrující, protože hledání potřebných informací může být obtížné. Tady je několik přístupů, které vám mohou přispět:
Zajistěte, aby byla verze macOS uvedená v souboru info. plist stejná jako verze MacOS aktuálně nainstalované v počítači.
podívejte se na výstup aplikace Visual Studio pro Mac (zobrazení -rozbalení - výstup aplikace) pro trasování zásobníku nebo výstup červeně od kakaa, který může popisovat výstup.
Spusťte aplikaci z příkazového řádku a podívejte se na výstup (v aplikaci Terminal App) pomocí příkazu:
MyApp.app/Contents/MacOS/MyApp(kdeMyAppje název vaší aplikace)Výstup můžete zvýšit přidáním "MONO_LOG_LEVEL" do příkazu na příkazovém řádku, například:
MONO_LOG_LEVEL=debug MyApp.app/Contents/MacOS/MyAppK procesu se můžete připojit pomocí nativního ladicího programu (
lldb), abyste viděli, jestli poskytují nějaké další informace (vyžaduje se placená licence). Postupujte například takto:lldb MyApp.app/Contents/MacOS/MyAppDo terminálu zadejte.runDo terminálu zadejte.cDo terminálu zadejte.- Ukončit po dokončení ladění.
Jako poslední možnost, před voláním
NSApplication.InitMainmetody (nebo na jiných místech podle potřeby) byste mohli napsat text do souboru ve známém umístění, abyste se mohli rozvést k podrobnostem o tom, jaký krok spuštění spouštíte v problému.
Známé problémy
V následujících oddílech jsou pokryty známé problémy a jejich řešení.
Nepovedlo se připojit k ladicímu programu v aplikacích v izolovaném prostoru
Ladicí program se připojuje k aplikacím Xamarin. Mac prostřednictvím protokolu TCP, což znamená, že ve výchozím nastavení při povolení izolovaného prostoru (sandbox) se nemůže připojit k aplikaci, takže pokud se pokusíte aplikaci spustit bez správných povolených oprávnění, zobrazí se chyba "nelze se připojit k ladicímu programu".
Oprávnění Povolit odchozí připojení k síti (klient) je ten, který je vyžadován pro ladicí program, takže povolení této možnosti umožní normální ladění. Vzhledem k tomu, že nemůžete ladit bez něj, Aktualizovali jsme CompileEntitlements cíl, msbuild aby automaticky přidal toto oprávnění do oprávnění pro všechny aplikace, které jsou v izolovaném prostoru pro sestavení pro ladění. Sestavení vydaných verzí by měla používat oprávnění uvedená v souboru oprávnění, která se nezměnila.
System. NotSupportedException: pro kódování 437 nejsou k dispozici žádná data.
Pokud do aplikace Xamarin. Mac zahrnete knihovny třetích stran, může se při pokusu o zkompilování a spuštění aplikace zobrazit chyba ve formátu System. NotSupportedException: nejsou k dispozici žádná data pro kódování 437. Například knihovny, například Ionic.Zip.ZipFile , mohou vyvolat tuto výjimku během operace.
To je možné vyřešit otevřením možností pro projekt Xamarin. Mac, kliknutím na možnost sestavit mezinárodní sestavení pro Mac a kontrolou západního mezinárodního nastavení:
Kompilace (mm5103) se nezdařila.
K této chybě obvykle dochází, když je vydaná nová verze Xcode a máte nainstalovanou novou verzi, ale ještě ji nespustíte. Předtím, než se pokusíte kompilovat s novou verzí Xcode, je třeba nejprve spustit tuto verzi alespoň jednou.
Při prvním spuštění nové verze Xcode se nainstaluje několik nástrojů příkazového řádku, které vyžaduje Xamarin. Mac. Dále byste měli provést čisté sestavení po aktualizaci Xcode nebo verze Xamarin. Mac.
Pokud tento problém nemůžete vyřešit, uveďte chybu.
Chybí oprávnění. plist
nejnovější verze Visual Studio pro Mac odebrala oddíl oprávnění z editoru Info. plist a umístil ho do samostatných oprávnění. editor plist (pro lepší podporu více platforem pomocí Xamarin. iOS).
při vytvoření nového projektu aplikace Xamarin. Mac, když je nainstalovaná nová Visual Studio pro Mac, se soubor nároks. plist automaticky přidá do stromu projektu:
nároků
Pokud dvakrát kliknete na soubor oprávnění. plist , zobrazí se Editor nároků:
U existujících projektů Xamarin. Mac budete muset ručně vytvořit soubor oprávnění. plist tak, že kliknete pravým tlačítkem na projekt v oblast řešení a vyberete Přidatnový soubor... V dalším kroku vyberte možnost seznam prázdných vlastnostíXamarin. Mac:

Jako Entitlements název zadejte a klikněte na tlačítko Entitlements . Pokud váš projekt dříve zahrnoval soubor nároků, budete vyzváni k jeho přidání do projektu místo vytvoření nového souboru:
podpora Community ve fórech
Komunita vývojářů, kteří používají Xamarin Products, je úžasné a mnoho, navštivte naše fóra Xamarin. Mac a sdílejte prostředí a jejich odbornost. Kromě toho technici Xamarin pravidelně navštěvují fórum, které vám pomůžou.
Archivace chyby
Váš názor je pro nás důležitý. Pokud najdete nějaké problémy s Xamarin. Mac:
- Hledání v úložišti problémů
- před přepnutím na GitHub problémy byly na Bugzillasledovány problémy Xamarin. Vyhledejte prosím problémy, které jsou v něm.
- pokud nemůžete najít vyhovující problém, zajistěte prosím nový problém v úložišti problémů GitHub.
problémy s GitHub jsou všechny veřejné. Komentáře ani přílohy není možné skrýt.
Uveďte co nejvíc z následujících možností:
- Jednoduchý příklad, jak problém reprodukovat. To je neužitečné , pokud je to možné.
- Úplné trasování zásobníku při selhání.
- Kód jazyka C# obklopující chybu.



