Vložené architektury v Xamarin.iOS

Tento dokument popisuje, jak můžou vývojáři aplikací vkládat uživatelské architektury do svých aplikací.

S iOS 8.0 Apple umožnil vytvořit vloženou architekturu pro sdílení kódu mezi rozšířeními aplikací a hlavní aplikací v Xcode.

Xamarin.iOS 9.0 přidává podporu pro využívání těchto vložených architektur (vytvořených pomocí Xcode) v aplikacích Xamarin.iOS. Z jakéhokoli typu projektů Xamarin.iOS nebude možné vytvářet vložené architektury, pouze využívat existující nativní (Objective-C) architektury.

Rozhraní Xamarin.iOS můžete využívat dvěma způsoby:

  • Do nástroje mtouch předejte architekturu tak, že do dalších argumentů mtouch v možnostech sestavení iOS projektu přidáte následující argumenty:

    --framework:/Path/To/My.Framework
    

    Musí se nastavit pro každou konfiguraci projektu.

  • Přidání nativních odkazů z místní nabídky

Klikněte pravým tlačítkem myši na Projekt a přejděte a přidejte nativní odkazy.

Select Add native references in Visual Studio for Mac

To bude fungovat pro všechny konfigurace.

V budoucích verzích Visual Studio pro Mac a Xamarin Tools pro Visual Studio bude možné využívat architektury z integrovaného vývojového prostředí (bez ruční úpravy souborů projektu).

Několik ukázkových projektů najdete na GitHubu.

Omezení

  • Vložené architektury jsou podporovány pouze ve sjednocených projektech.
  • Vložené architektury jsou podporovány pouze v projektech s cílem nasazení minimálně iOS 8.0.
  • Pokud rozšíření vyžaduje vloženou architekturu, musí mít aplikace kontejneru také odkaz na architekturu, jinak architektura nebude zahrnuta do sady aplikací.

Modul runtime Mono

Interně Xamarin.iOS využívá tuto funkci k propojení s modulem Runtime Mono jako architekturou místo statického propojení modulu Runtime Mono s každým rozšířením a aplikací kontejnerů.

To se provádí automaticky, pokud je aplikace kontejneru sjednocená, obsahuje rozšíření a cílové nasazení je iOS 8.0 nebo vyšší.

Aplikace bez rozšíření budou i nadále staticky propojit s modulem Runtime Mono, protože pro použití architektury existuje penalizace velikosti, pokud na ni odkazuje jenom jedna aplikace.

Toto chování může vývojář aplikace přepsat přidáním následujícího argumentu jako dalšího argumentu mtouch v možnostech sestavení iOS projektu:

  • --mono:static: Propojení se statickým modulem runtime Mono.
  • --mono:framework: Propojení s modulem runtime Mono jako architekturou.

Jedním scénářem pro propojení s modulem Mono runtime jako architekturou i pro aplikace bez rozšíření je zmenšení velikosti spustitelného souboru, aby se vyřešila omezení velikosti, která Apple u spustitelného souboru vynucuje. Pro referenci přidává modul runtime Mono přibližně 1,7 MB na architekturu (od Xamarin.iOS 8.12, ale jeho verze se liší mezi verzemi a dokonce i mezi aplikacemi). Architektura Mono přidává přibližně 2,3 MB na architekturu, což znamená, že pro aplikaci s jednou architekturou bez rozšíření se propojení aplikace s modulem Mono runtime jako architekturou zmenší spustitelný soubor o ~1,7 MB, ale přidá architekturu ~2,3 MB, což vede k tomu, že větší aplikace je přibližně 0,6 MB úplně.