Udostępnij za pośrednictwem


Odwołania natywne w projektach systemów iOS, Mac i powiązań

Odwołania natywne umożliwiają osadzanie struktury natywnej w projekcie Xamarin.iOS lub Xamarin.Mac lub projekcie powiązania.

Ponieważ system iOS 8.0 można było utworzyć osadzoną platformę do udostępniania kodu między rozszerzeniami aplikacji a główną aplikacją w środowisku Xcode. Korzystając z funkcji Natywna dokumentacja, będzie można korzystać z tych osadzonych struktur (utworzonych za pomocą środowiska Xcode) w środowisku Xamarin.iOS.

Ważne

Nie będzie można tworzyć osadzonych struktur z dowolnego typu projektów Xamarin.iOS lub Xamarin.Mac, odwołania natywne zezwalają tylko na użycie istniejących struktur natywnych (Objective-C).

Terminologia

W systemie iOS 8 (lub nowszym) platformy embedded mogą być osadzone statycznie połączone i dynamicznie połączone struktury. Aby prawidłowo je rozproszyć, należy umieścić je w strukturach "fat", które zawierały wszystkie ich wycinki dla każdej architektury urządzenia, którą chcesz obsługiwać w aplikacji.

Struktury statyczne a dynamiczne

Struktury statyczne są połączone w czasie kompilacji, gdzie struktury dynamiczne są połączone w czasie wykonywania i można je modyfikować bez ponownego łączenia. Jeśli przed systemem iOS 8 użyto dowolnego programu Framework innej firmy, używasz struktury statycznej , która została skompilowana w aplikacji. Aby uzyskać więcej informacji, zobacz dokumentację programowania bibliotek dynamicznych firmy Apple.

Embedded a System Frameworks

Osadzone struktury są uwzględniane w pakiecie aplikacji i są dostępne tylko dla określonej aplikacji za pośrednictwem piaskownicy. Struktury systemowe są przechowywane na poziomie systemu operacyjnego i są dostępne dla wszystkich aplikacji na urządzeniu. Obecnie tylko firma Apple ma możliwość tworzenia struktur na poziomie systemu operacyjnego.

Struktury elastyczne a fat

Struktury elastyczne zawierają tylko skompilowany kod dla określonej architektury systemu, w której struktury Fat Framework zawierają kod dla wielu architektur. Każda baza kodu specyficzna dla architektury skompilowana w strukturze jest nazywana fragmentatorem. Na przykład gdyby istniała struktura skompilowana dla dwóch architektur symulatora systemu iOS (i386 i X86_64), będzie zawierać dwa wycinki.

Jeśli podjęto próbę dystrybucji tej przykładowej struktury za pomocą aplikacji, będzie ona działać poprawnie w symulatorze, ale nie powiedzie się na urządzeniu, ponieważ struktura nie zawiera żadnych wycinków specyficznych dla kodu dla urządzenia z systemem iOS. Aby zapewnić, że struktura będzie działać we wszystkich wystąpieniach, konieczne będzie również uwzględnienie wycinków specyficznych dla urządzenia, takich jak arm64, armv7 i armv7.

Praca z osadzonymi strukturami

Istnieją dwa kroki, które należy wykonać, aby pracować z platformami Embedded Framework w aplikacji platformy Xamarin.iOS lub Xamarin.Mac: Tworzenie struktury fat framework i osadzanie struktury.

Tworzenie struktury tłuszczu

Jak wspomniano powyżej, aby móc korzystać z platformy Embedded Framework w aplikacji, musi to być struktura fat framework obejmująca wszystkie architektury systemowe Wycinki dla urządzeń, na których będzie działać aplikacja.

Gdy środowisko Framework i aplikacja zużywające znajdują się w tym samym projekcie Xcode, nie jest to problem, ponieważ program Xcode utworzy zarówno platformę, jak i aplikację przy użyciu tych samych ustawień kompilacji. Ponieważ aplikacje platformy Xamarin nie mogą tworzyć struktur osadzonych, nie można użyć tej techniki.

Aby rozwiązać ten problem, lipo narzędzie wiersza polecenia może służyć do scalania co najmniej dwóch struktur w jedną strukturę tłuszczu zawierającą wszystkie niezbędne wycinki. Aby uzyskać więcej informacji na temat pracy z poleceniem lipo , zobacz naszą dokumentację Łączenie bibliotek natywnych.

Osadzanie struktury

Poniższy krok jest wymagany do osadzenia struktury w projekcie Xamarin.iOS lub Xamarin.Mac przy użyciu odwołań natywnych:

  1. Utwórz nowy lub otwórz istniejący projekt Xamarin.iOS, Xamarin.Mac lub Binding.

  2. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy nazwę projektu i wybierz polecenie Dodaj>odwołanie natywne:

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

  3. W oknie dialogowym Otwieranie wybierz nazwę struktury natywnej, którą chcesz osadzić, i kliknij przycisk Otwórz:

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

  4. Struktura zostanie dodana do drzewa projektu:

    The framework will be added to the projects tree

Po skompilowaniu projektu struktura natywna zostanie osadzona w pakiecie aplikacji.

Rozszerzenia aplikacji i osadzone struktury

Wewnętrznie platforma Xamarin.iOS może skorzystać z tej funkcji, aby połączyć się ze środowiskiem uruchomieniowym Mono jako strukturą (gdy docelowy wdrożenie to >= iOS 8.0), co znacznie zmniejsza rozmiar aplikacji dla aplikacji z rozszerzeniami (ponieważ środowisko uruchomieniowe Mono będzie uwzględniane tylko raz dla całego pakietu aplikacji, zamiast raz dla aplikacji kontenera i raz dla każdego rozszerzenia).

Rozszerzenia będą łączyć się ze środowiskiem uruchomieniowym Mono jako strukturą, ponieważ wszystkie rozszerzenia wymagają systemu iOS 8.0.

Aplikacje, które nie mają rozszerzeń i aplikacji przeznaczonych dla systemu iOS

Podsumowanie

W tym artykule przedstawiono szczegółowe informacje na temat osadzania natywnej struktury w aplikacji platformy Xamarin.iOS lub Xamarin.Mac.