Kompilowanie dla różnych urządzeń na platformie Xamarin.iOS

Właściwości kompilacji pliku wykonywalnego można skonfigurować na stronie właściwości kompilacji systemu iOS projektu, która znajduje się po kliknięciu prawym przyciskiem myszy nazwy projektu i przeglądania pozycji Opcje > kompilacji systemu iOS w Visual Studio dla komputerów Mac i Właściwości w programie Visual Studio:

Oprócz opcji konfiguracji dostępnych w interfejsie użytkownika można również przekazać własny zestaw opcji wiersza polecenia do narzędzia kompilacji platformy Xamarin.iOS (mtouch).

Opcje zestawu SDK

Visual Studio dla komputerów Mac umożliwia skonfigurowanie dwóch ważnych właściwości związanych z zestawem SDK: wersji zestawu SDK systemu iOS używanej do kompilowania oprogramowania i elementu docelowego wdrożenia (lub minimalnej wymaganej wersji systemu iOS).

Opcja wersji zestawu SDK systemu iOS umożliwia korzystanie z różnych wersji opublikowanego zestawu SDK firmy Apple. Spowoduje to przekierowanie platformy Xamarin.iOS do kompilatorów, konsolidatorów i bibliotek, do których powinien się odwoływać podczas kompilacji. Kliknij prawym przyciskiem myszy projekt i wybierz pozycję Opcje, a następnie pozycję Kompilacja systemu iOS w oknie opcji:

Choose the SDK version on the options window

Ustawienie Docelowy wdrożenia służy do wybierania minimalnej wymaganej wersji systemu operacyjnego, na którym zostanie uruchomiona aplikacja. Jest on ustawiany w pliku Info.plist projektu. Należy wybrać minimalną wersję zawierającą wszystkie interfejsy API, które należy uruchomić aplikację.

Set the deployment target in the Info.plist file

Ogólnie rzecz biorąc, interfejs API platformy Xamarin.iOS uwidacznia wszystkie metody dostępne w najnowszej wersji zestawu SDK, a w razie potrzeby udostępniamy właściwości wygody, które umożliwiają wykrywanie, czy funkcja jest dostępna w czasie wykonywania (na przykład UIDevice.UserInterfaceIdiom i UIDevice.IsMultitaskingSupported zawsze pracujemy w środowisku Xamarin.iOS, wykonujemy całą pracę w tle).

Łączenie

Zobacz naszą dedykowaną stronę w konsolidatorze, aby dowiedzieć się więcej o tym, jak konsolidator pomaga zmniejszyć rozmiar plików wykonywalnych i dowiedzieć się, jak efektywnie z niego korzystać.

Aparat generowania kodu

Począwszy od platformy Xamarin.iOS 4.0, istnieją dwa zaplecza generowania kodu do platformy Xamarin.iOS. Zwykły aparat generowania kodu Mono i jeden oparty na kompilatorze optymalizacji maszyny wirtualnej LLVM. Każdy silnik ma swoje zalety i wady.

Zazwyczaj podczas procesu programowania prawdopodobnie będziesz używać aparatu generowania kodu Mono, ponieważ pozwoli to na szybkie iterowanie. W przypadku kompilacji wydania i wdrożenia sklepu AppStore należy przełączyć się do aparatu generowania kodu LLVM.

Optymalizacja aparatu zaplecza maszyny WIRTUALNEJ LLVM generuje zarówno szybszy, jak i ściślejszy kod niż aparat Mono, kosztem długich czasów kompilacji.

Można je włączyć w opcjach kompilacji systemu iOS w programie Visual Studio dla komputerów Mac lub Visual Studio.

Enabling L L V M in Visual Studio for Mac.

Enabling L L V M in Visual Studio.

Obsługa architektury

ARMv6 (Xamarin.iOS nieobsługiwane wsparcie dla armv6 w wersji 8.10)

  • i Telefon (oryginalny), 3G
  • iPod 1, druga generacja

ARMv7

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

ARMv7s

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

Jeśli docelowy jest tylko procesor ARMv7s, wygenerowany kod będzie nieco szybszy, ale nie będzie już działać w systemach ARMv7 lub ARMv6, chyba że skompilujesz plik binarny fat zawierający wiele plików wykonywalnych w pakiecie.

ARM64 (Xamarin.iOS rozpoczął obsługę usługi ARM64 w wersji 8.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 (wszystkie)

Należy pamiętać, że wszystkie kompilacje przesłane do sklepu App Store muszą zawierać obsługę 64-bitową. Jest to wymaganie ustawione przez firmę Apple. Ponadto system iOS 11 obsługuje tylko aplikacje 64-bitowe.

Obsługa kciuka ARM-2

Thumb to bardziej kompaktowy zestaw instrukcji używany przez procesory ARM. Włączając obsługę kciuka, można zmniejszyć rozmiar pliku wykonywalnego kosztem wolniejszych czasów wykonywania. Kciuk jest obsługiwany w systemach ARMv7 i ARMv7.

Użycie platformy warunkowej

Jeśli projekt chce korzystać z niektórych funkcji w nowszych wersjach systemu iOS, może być konieczne warunkowe poleganie na niektórych nowych platformach. Najlepszym przykładem tego rozwiązania jest użycie usługi iAd w przypadku korzystania z systemu iOS 4.0 lub nowszego, ale nadal obsługuje urządzenia w wersji 3.x. Aby to osiągnąć, musisz poinformować platformę Xamarin.iOS, że musisz połączyć się ze strukturą iAd "słabo". Słabe powiązania zapewniają, że platforma jest ładowana tylko na żądanie przy pierwszym wymaganiu klasy ze struktury.

W tym celu należy wykonać następujące czynności:

  • Otwórz opcje projektu i przejdź do okienka Kompilacja systemu iOS.
  • Dodaj '-gcc_flags "-weak_framework iAd"' do opcji dodatkowych dla każdej konfiguracji, dla której chcesz słabo połączyć:

Additional Options

Oprócz tego należy chronić użycie typów z uruchamiania w starszych wersjach systemu iOS, gdzie mogą nie istnieć. Istnieje kilka metod, które należy wykonać, ale jednym z nich jest analizowanie UIDevice.CurrentDevice.SystemVersion.