Nativní odkazy v projektech pro iOS, Mac a vazby

Nativní odkazy umožňují vložit nativní architekturu do projektu Xamarin.iOS nebo Xamarin.Mac nebo vazby projektu.

Vzhledem k tomu, že iOS 8.0 je možné vytvořit vloženou architekturu pro sdílení kódu mezi rozšířeními aplikací a hlavní aplikací v Xcode. Pomocí funkce Nativní referenční informace bude možné využívat tyto vložené architektury (vytvořené pomocí Xcode) v Xamarin.iOS.

Důležité

Vložené architektury nebude možné vytvářet z jakéhokoli typu projektů Xamarin.iOS nebo Xamarin.Mac, nativní odkazy umožňují pouze spotřebu stávajících nativních (Objective-C) architektur.

Terminologie

V iOSu 8 (a novějších) můžou být vložené vložené staticky propojené i dynamicky propojené architektury. Abyste je mohli správně distribuovat, musíte je vytvořit do "tlustých" architektur, které obsahovaly všechny jejich řezy pro každou architekturu zařízení, kterou chcete ve své aplikaci podporovat.

Statické a dynamické architektury

Statické architektury jsou propojeny v době kompilace, kdy jsou dynamická rozhraní propojena za běhu a lze je upravit bez opětovného propojení. Pokud jste před iOSem 8 použili jakoukoli architekturu třetí strany, používali jste statickou architekturu, která byla zkompilována do vaší aplikace. Další podrobnosti najdete v dokumentaci k programování dynamické knihovny společnosti Apple.

Vložené vs. systémové architektury

Vložené architektury jsou součástí sady aplikací a jsou přístupné jenom pro vaši konkrétní aplikaci prostřednictvím sandboxu. Systémové architektury jsou uložené na úrovni operačního systému a jsou k dispozici pro všechny aplikace na zařízení. V současné době má možnost vytvářet architektury na úrovni operačního systému pouze Apple.

Tenká vs. tlustá architektura

Dynamické architektury obsahují pouze zkompilovaný kód pro konkrétní systémovou architekturu, kde Fat Frameworks obsahují kód pro více architektur. Každý základ kódu specifický pro architekturu zkompilovaný do architektury se označuje jako řez. Pokud bychom například měli architekturu zkompilovanou pro dvě architektury simulátoru iOS (i386 a X86_64), obsahovala by dvě řezy.

Pokud jste se pokusili distribuovat tuto ukázkovou architekturu s vaší aplikací, spustila by se správně v simulátoru, ale na zařízení selže, protože rozhraní neobsahuje žádné řezy specifické pro kód pro zařízení s iOSem. Aby bylo zajištěno, že architektura bude fungovat ve všech instancích, bude také nutné zahrnout řezy specifické pro zařízení, jako jsou arm64, armv7 a armv7s.

Práce s vloženými architekturami

Aby bylo možné pracovat s vloženými architekturami v aplikaci Xamarin.iOS nebo Xamarin.Mac, musíte provést dva kroky: Vytvoření architektury Fat Framework a vložení rozhraní.

Vytvoření architektury Fat Framework

Jak je uvedeno výše, aby bylo možné využívat vloženou architekturu ve vaší aplikaci, musí to být Fat Framework, který zahrnuje všechny systémové architektury Řezy pro zařízení, na kterých bude vaše aplikace běžet.

Pokud je architektura a aplikace využívající ve stejném projektu Xcode, nejedná se o problém, protože Xcode sestaví architekturu i aplikaci pomocí stejného nastavení sestavení. Vzhledem k tomu, že aplikace Xamarin nemůžou vytvářet vložené architektury, nelze tuto techniku použít.

K vyřešení tohoto problému lipo lze nástroj příkazového řádku použít ke sloučení dvou nebo více architektur do jednoho fat Framework obsahujícího všechny potřebné řezy. Další informace o práci s příkazem lipo najdete v naší dokumentaci k propojení nativních knihoven .

Vložení architektury

Následující krok je nutný k vložení architektury do projektu Xamarin.iOS nebo Xamarin.Mac pomocí nativních odkazů:

  1. Vytvořte nový nebo otevřete existující projekt Xamarin.iOS, Xamarin.Mac nebo Binding.

  2. V Průzkumník řešení klikněte pravým tlačítkem na název projektu a vyberte Přidat>nativní odkaz:

    In the Solution Explorer, right-click on the project name and select Add Native Reference

  3. V dialogovém okně Otevřít vyberte název nativní architektury, kterou chcete vložit, a klikněte na tlačítko Otevřít :

    Select the name of the Native Framework to embed and click the Open button

  4. Architektura se přidá do stromu projektu:

    The framework will be added to the projects tree

Při kompilaci projektu se nativní architektura vloží do sady aplikací.

Rozšíření aplikací a vložené architektury

Interně Xamarin.iOS může tuto funkci využít k propojení s modulem Runtime Mono jako s architekturou (pokud je >cílem nasazení = iOS 8.0), čímž se výrazně zmenšuje velikost aplikace pro aplikace s rozšířeními (protože modul runtime Mono bude zahrnut pouze jednou pro celou sadu aplikací, nikoli jednou pro aplikaci kontejneru a jednou pro každé rozšíření).

Rozšíření budou propojena s modulem Runtime Mono jako architekturou, protože všechna rozšíření vyžadují iOS 8.0.

Aplikace, které nemají rozšíření a aplikace, které cílí na iOS

Shrnutí

Tento článek se podrobně podíval na vložení nativní architektury do aplikace Xamarin.iOS nebo Xamarin.Mac.