Kompilace pro různá zařízení v Xamarin.iOS

Vlastnosti sestavení spustitelného souboru je možné nakonfigurovat na stránce vlastností sestavení iOS v Projectu, která se nachází tak, že kliknete pravým tlačítkem na název projektu a přejdete na Možnosti > sestavení iOS v Visual Studio pro Mac a Vlastnosti v sadě Visual Studio:

Kromě možností konfigurace dostupných v uživatelském rozhraní můžete také předat vlastní sadu možností příkazového řádku nástroji pro sestavení Xamarin.iOS (mtouch).

Možnosti sady SDK

Visual Studio pro Mac umožňuje nakonfigurovat dvě důležité vlastnosti související se sadou SDK: verzi sady SDK pro iOS použitou k sestavení softwaru a cíle nasazení (nebo minimální požadované verze iOS).

Možnost verze sady SDK pro iOS umožňuje používat různé verze publikované sady SDK společnosti Apple, která přesměruje Xamarin.iOS na kompilátory, linkery a knihovny, na které by se měly odkazovat během sestavení. Klikněte pravým tlačítkem myši na projekt a zvolte Možnosti a potom v okně možností build iOS:

Choose the SDK version on the options window

Nastavení Cíl nasazení slouží k výběru minimální požadované verze operačního systému, na kterém bude vaše aplikace spuštěna. Toto nastavení je nastavené v souboru Info.plist projektu. Měli byste vybrat minimální verzi, která má všechna rozhraní API, která potřebujete ke spuštění aplikace.

Set the deployment target in the Info.plist file

Obecně platí, že rozhraní API Xamarin.iOS zveřejňuje všechny metody dostupné v nejnovější verzi sady SDK a v případě potřeby poskytujeme vlastnosti usnadnění, které umožňují zjistit, UIDevice.UserInterfaceIdiom jestli je funkce dostupná za běhu (například a UIDevice.IsMultitaskingSupported vždy pracujeme na Xamarin.iOS, děláme všechno na pozadí).

Propojení

Další informace o tom, jak linker pomáhá zmenšit velikost vašich spustitelných souborů, a zjistit, jak ho efektivně používat, najdete na naší vyhrazené stránce.

Modul generování kódu

Počínaje Xamarin.iOS 4.0 existují dva back-endy generování kódu pro Xamarin.iOS. Běžný modul generování kódu Mono a jeden založený na LLVM Optimalizace kompilátoru. Každý motor má své výhody a nevýhody.

Obvykle během procesu vývoje budete pravděpodobně používat modul generování kódu Mono, protože vám umožní rychle iterovat. Pro sestavení verzí a nasazení AppStore budete chtít přepnout na modul generování kódu LLVM.

Počítač LLVM pro optimalizaci back-endového modulu vytváří rychlejší i přísnější kód než modul Mono za cenu dlouhých časů kompilace.

Tyto možnosti můžete povolit v možnostech sestavení pro iOS v Visual Studio pro Mac nebo sadě Visual Studio.

Enabling L L V M in Visual Studio for Mac.

Enabling L L V M in Visual Studio.

Podpora architektury

ARMv6 (Xamarin.iOS přestal podporovat ARMv6 s v8.10)

  • i Telefon (původní), 3G
  • iPod 1st, 2. generace

ARMv7

  • i Telefon 3GS, 4, 4S
  • iPad 1, 2, 3, Mini
  • iPod 3, 4, 5. generace

ARMv7s

  • i Telefon 5
  • i Telefon 5c
  • iPad 4

Pokud cílíte pouze na procesor ARMv7s, bude kód vygenerovaný mírně rychlejší, ale nebude se spouštět v systémech ARMv7 nebo ARMv6, pokud zkompilujete binární soubor fat obsahující více spustitelných souborů v balíčku.

ARM64 (Xamarin.iOS začal podporovat ARM64 v8.6)

  • i Telefon 5s
  • i Telefon SE
  • i Telefon 6, 6 Plus
  • i Telefon 6s, 6s Plus
  • i Telefon 7, 7 Plus
  • i Telefon 8, 8 Plus
  • i Telefon X
  • iPad Air
  • iPad Air 2
  • iPad Mini 2, 3, 4
  • iPad Pro (vše)

Upozorňujeme, že všechna sestavení odeslaná do App Storu musí obsahovat 64bitovou podporu, což je požadavek nastavený společností Apple. IOS 11 navíc podporuje jenom 64bitové aplikace.

Podpora ARM Thumb-2

Palec je kompaktnější instrukční sada používaná procesory ARM. Povolením podpory Thumb můžete zmenšit velikost spustitelného souboru na úkor pomalejší doby provádění. Palec je podporován v ARMv7 a ARMv7s.

Použití podmíněné architektury

Pokud váš projekt chce využívat některé funkce v novějších verzích iOS, budete možná muset podmíněně spoléhat na určité nové architektury. Základním příkladem toho je, že chcete použít iAd při spuštění v iOSu 4.0 nebo novějším, ale stále podporují zařízení 3.x. K tomu musíte dát Xamarin.iOS vědět, že potřebujete propojit s architekturou iAd slabě. Slabé vazby zajišťují, že se architektura načte pouze na vyžádání při prvním vyžadování třídy z rozhraní.

K tomu byste měli provést následující kroky:

  • Otevřete možnosti projektu a přejděte do podokna sestavení pro iOS.
  • Přidejte '-gcc_flags "-weak_framework iAd"' do dalších možností pro každou konfiguraci, na které chcete slabě propojit:

Additional Options

Kromě toho budete muset chránit využití typů před spouštěním ve starších verzích iOSu, kde nemusí existovat. Existuje několik metod, jak toho dosáhnout, ale jeden z nich parsuje UIDevice.CurrentDevice.SystemVersion.