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