Udostępnij za pośrednictwem


Część 1 — omówienie platformy Xamarin Mobile Platform

Platforma Xamarin składa się z wielu elementów, które umożliwiają tworzenie aplikacji dla systemów iOS i Android:

  • Język C# — umożliwia korzystanie ze znanej składni i zaawansowanych funkcji, takich jak Generics, LINQ i Parallel Task Library.
  • Mono .NET Framework — zapewnia międzyplatformową implementację rozbudowanych funkcji w programie .NET Framework firmy Microsoft.
  • Kompilator — w zależności od platformy tworzy aplikację natywną (na przykład iOS) lub zintegrowaną aplikację platformy .NET i środowisko uruchomieniowe (na przykład Android). Kompilator wykonuje również wiele optymalizacji wdrożenia mobilnego, takich jak łączenie nieużywanego kodu.
  • Narzędzia IDE — program Visual Studio na komputerach Mac i w systemie Windows umożliwia tworzenie, kompilowanie i wdrażanie projektów platformy Xamarin.

Ponadto, ponieważ język bazowy to C# z platformą .NET Framework, projekty mogą być ustrukturyzowane w celu udostępniania kodu, który można również wdrożyć w systemie Windows Telefon.

Pod kapturem

Mimo że platforma Xamarin umożliwia pisanie aplikacji w języku C#i współużytkowanie tego samego kodu na wielu platformach, rzeczywista implementacja w każdym systemie jest inna.

Kompilacja

Źródło języka C# umożliwia przejście do aplikacji natywnej na różne sposoby na poszczególne platformy:

  • iOS — język C# jest kompilowany przed czasem (AOT) do języka zestawu ARM. Platforma .NET framework jest dołączona, a nieużywane klasy są usuwane podczas łączenia w celu zmniejszenia rozmiaru aplikacji. Firma Apple nie zezwala na generowanie kodu środowiska uruchomieniowego w systemie iOS, dlatego niektóre funkcje językowe nie są dostępne (zobacz Ograniczenia platformy Xamarin.iOS).
  • Android — język C# jest kompilowany do języka IL i spakowany za pomocą maszyny MonoVM + JIT'ing. Nieużywane klasy w strukturze są usuwane podczas łączenia. Aplikacja działa obok języka Java/ART (środowisko uruchomieniowe systemu Android) i wchodzi w interakcję z typami natywnymi za pośrednictwem interfejsu JNI (zobacz Ograniczenia platformy Xamarin.Android).
  • Windows — język C# jest kompilowany do języka IL i wykonywany przez wbudowane środowisko uruchomieniowe i nie wymaga narzędzi platformy Xamarin. Projektowanie aplikacji systemu Windows zgodnie ze wskazówkami platformy Xamarin ułatwia ponowne użycie kodu w systemach iOS i Android. Platforma uniwersalna systemu Windows ma również opcję .NET Native, która zachowuje się podobnie do kompilacji AOT platformy Xamarin.iOS.

Dokumentacja konsolidatora dla platform Xamarin.iOS i Xamarin.Android zawiera więcej informacji na temat tej części procesu kompilacji.

Należy unikać środowiska uruchomieniowego "kompilacja" — dynamiczne generowanie kodu za pomocą System.Reflection.Emit polecenia .

Jądro firmy Apple uniemożliwia dynamiczne generowanie kodu na urządzeniach z systemem iOS, dlatego emitowanie kodu na bieżąco nie będzie działać w środowisku Xamarin.iOS. Podobnie funkcje środowiska uruchomieniowego języka dynamicznego nie mogą być używane z narzędziami platformy Xamarin.

Niektóre funkcje odbicia działają (na przykład MonoTouch.Dialog używa go dla interfejsu API Emocje ion), ale nie generowania kodu.

Dostęp do zestawu SDK platformy

Platforma Xamarin ułatwia dostęp do funkcji udostępnianych przez zestaw SDK specyficzny dla platformy za pomocą znanej składni języka C#:

  • iOS — Xamarin.iOS uwidacznia struktury zestawu SDK CocoaTouch firmy Apple jako przestrzenie nazw, do których można się odwołać w języku C#. Na przykład struktura UIKit zawierająca wszystkie kontrolki interfejsu użytkownika może być dołączona do prostej using UIKit; instrukcji.
  • Android — Xamarin.Android uwidacznia zestaw SDK systemu Android firmy Google jako przestrzenie nazw, dzięki czemu można odwoływać się do dowolnej części obsługiwanego zestawu SDK za pomocą instrukcji using, na przykład using Android.Views; w celu uzyskania dostępu do kontrolek interfejsu użytkownika.
  • Windows — aplikacje systemu Windows są tworzone przy użyciu programu Visual Studio w systemie Windows. Typy projektów to Windows Forms, WPF, WinRT i platforma uniwersalna systemu Windows (UWP).

Bezproblemowa integracja dla deweloperów

Piękno platformy Xamarin polega na tym, że pomimo różnic w środowisku Xamarin.iOS i Xamarin.Android (w połączeniu z zestawami SDK systemu Windows firmy Microsoft) oferuje bezproblemowe środowisko pisania kodu w języku C#, który można ponownie wykorzystać na wszystkich trzech platformach.

Logika biznesowa, użycie bazy danych, dostęp do sieci i inne typowe funkcje można pisać raz i ponownie używać na każdej platformie, zapewniając podstawy dla interfejsów użytkownika specyficznych dla platformy, które wyglądają i działają jako aplikacje natywne.

Dostępność zintegrowanego środowiska projektowego (IDE)

Programowanie na platformie Xamarin można wykonać w programie Visual Studio na komputerach Mac lub Windows. Wybrane środowisko IDE będzie określane przez platformy, które chcesz kierować.

Ponieważ aplikacje systemu Windows można opracowywać tylko w systemie Windows, aby tworzyć aplikacje dla systemów iOS, Android i Windows, wymagają programu Visual Studio dla systemu Windows. Można jednak udostępniać projekty i pliki między komputerami z systemami Windows i Mac, więc aplikacje dla systemów iOS i Android można tworzyć na komputerach Mac i udostępnionym kodzie można później dodać do projektu systemu Windows.

Wymagania programistyczne dla każdej platformy zostały omówione bardziej szczegółowo w przewodniku wymagania .

iOS

Tworzenie aplikacji systemu iOS wymaga komputera Mac z systemem macOS. Możesz również użyć programu Visual Studio do pisania i wdrażania aplikacji systemu iOS za pomocą platformy Xamarin w programie Visual Studio. Jednak komputer Mac jest nadal potrzebny do celów kompilacji i licencjonowania.

Aby zapewnić kompilator i symulator do testowania, należy zainstalować środowisko IDE Xcode firmy Apple. Możesz testować na własnych urządzeniach bezpłatnie, ale aby tworzyć aplikacje do dystrybucji (na przykład sklep App Store), musisz dołączyć do programu deweloperskiego firmy Apple (99 USD rocznie). Za każdym razem, gdy przesyłasz lub aktualizujesz aplikację, należy ją przejrzeć i zatwierdzić przez firmę Apple, zanim zostanie ona udostępniona klientom do pobrania.

Kod jest napisany za pomocą środowiska IDE programu Visual Studio i układów ekranu można kompilować programowo lub edytować za pomocą programu Xcode na komputerze Mac.

Zapoznaj się z przewodnikiem instalacji platformy Xamarin.iOS, aby uzyskać szczegółowe instrukcje dotyczące konfigurowania.

Android

Tworzenie aplikacji dla systemu Android wymaga zainstalowania zestawów SDK java i Android. Zestawy SDK udostępniają kompilator, emulator i inne narzędzia wymagane do kompilowania, wdrażania i testowania. Java, zestaw SDK systemu Android firmy Google i narzędzia platformy Xamarin można instalować i uruchamiać w systemach Windows i macOS. Zalecane są następujące konfiguracje:

  • Windows 10 z programem Visual Studio 2019
  • macOS Mojave (10.11+) z programem Visual Studio 2019 dla komputerów Mac

Platforma Xamarin udostępnia ujednolicony instalator, który skonfiguruje system przy użyciu wstępnie wymaganych narzędzi Java, Android i Xamarin (w tym projektanta wizualnego układów ekranu). Aby uzyskać szczegółowe instrukcje, zapoznaj się z przewodnikiem instalacji platformy Xamarin.Android.

Aplikacje można kompilować i testować na rzeczywistym urządzeniu bez licencji firmy Google, jednak w celu rozpowszechniania aplikacji za pośrednictwem sklepu (takiego jak Google Play, Amazon lub Barnes & Noble) opłata rejestracyjna może być płatna dla operatora. Sklep Google Play natychmiast opublikuje twoją aplikację, podczas gdy inne sklepy mają proces zatwierdzania podobny do firmy Apple.

Windows

Aplikacje systemu Windows (WinForms, WPF lub UWP) są tworzone za pomocą programu Visual Studio. Nie używają platformy Xamarin bezpośrednio. Kod języka C# można jednak udostępniać w systemach Windows, iOS i Android. Odwiedź Centrum deweloperów firmy Microsoft, aby dowiedzieć się więcej o narzędziach wymaganych do programowania w systemie Windows.

Tworzenie interfejsu użytkownika

Kluczową zaletą korzystania z platformy Xamarin jest to, że interfejs użytkownika aplikacji używa natywnych kontrolek na każdej platformie, tworząc aplikacje, które są nie do odróżnienia od aplikacji napisanej w Objective-C języku Java (odpowiednio dla systemów iOS i Android).

Podczas kompilowania ekranów w aplikacji możesz określić kontrolki w kodzie lub utworzyć kompletne ekrany przy użyciu narzędzi projektowych dostępnych dla każdej platformy.

Programowe tworzenie kontrolek

Każda platforma umożliwia dodawanie kontrolek interfejsu użytkownika do ekranu przy użyciu kodu. Może to być czasochłonne, ponieważ może być trudne do wizualizacji gotowego projektu podczas kodowania współrzędnych pikseli na stałe dla pozycji kontrolnych i rozmiarów.

Programowe tworzenie kontrolek ma jednak korzyści, szczególnie w systemie iOS w przypadku tworzenia widoków, które mogą zmieniać rozmiar lub renderować inaczej w rozmiarach ekranu i Telefon i Tabletu iPad.

Projektant wizualizacji

Każda platforma ma inną metodę wizualnego układania ekranów:

  • iOS — scenorysy zawierają wiele widoków i kontrolek, do których można uzyskać dostęp w programie . Plik scenorysu uwzględniony w projekcie.
  • Android — platforma Xamarin udostępnia projektant interfejsu użytkownika przeciągania i upuszczania systemu Android dla programu Visual Studio.
  • Windows — firma Microsoft udostępnia projektanta interfejsu użytkownika przeciągania i upuszczania w programach Visual Studio i Blend. Układy ekranu są przechowywane jako . Pliki XAML.

Te zrzuty ekranu przedstawiają projektantów ekranu wizualizacji dostępnych na każdej platformie:

These screenshots show the visual screen designers available on each platform

We wszystkich przypadkach elementy tworzone wizualnie można odwoływać się w kodzie.

Zagadnienia dotyczące interfejsu użytkownika

Kluczową zaletą korzystania z platformy Xamarin do tworzenia aplikacji międzyplatformowych jest możliwość korzystania z natywnych zestawów narzędzi interfejsu użytkownika w celu prezentowania użytkownikowi znanego interfejsu. Interfejs użytkownika będzie również działać tak szybko, jak każda inna aplikacja natywna.

Niektóre metafory interfejsu użytkownika działają na wielu platformach (na przykład wszystkie trzy platformy używają podobnej kontrolki przewijania listy), ale aby aplikacja mogła "czuć się" prawidłowo, interfejs użytkownika powinien korzystać z elementów interfejsu użytkownika specyficznych dla platformy, jeśli jest to konieczne. Przykłady metafor interfejsu użytkownika specyficzne dla platformy obejmują:

  • iOS — hierarchiczna nawigacja za pomocą miękkiego przycisku Wstecz, karty w dolnej części ekranu.
  • Android — przycisk wstecz sprzętu/oprogramowania systemowego, menu akcji, karty w górnej części ekranu.
  • Windows — aplikacje systemu Windows mogą być uruchamiane na komputerach stacjonarnych, tabletach (takich jak Microsoft Surface) i telefonach. Urządzenia z systemem Windows 10 mogą mieć na przykład przycisk wstecz sprzętu i dynamiczne kafelki.

Zaleca się zapoznanie się z wytycznymi projektowymi dotyczącymi platform docelowych:

Ponowne użycie biblioteki i kodu

Platforma Xamarin umożliwia ponowne użycie istniejącego kodu C# na wszystkich platformach oraz integrację bibliotek napisanych natywnie dla każdej platformy.

Źródło i biblioteki języka C#

Ponieważ produkty Xamarin używają języka C# i platformy .NET Framework, wiele istniejących kodu źródłowego (zarówno projektów typu open source, jak i w domu) może być ponownie używanych w projektach platformy Xamarin.iOS lub Xamarin.Android. Często źródło można po prostu dodać do rozwiązania Xamarin i będzie działać natychmiast. Jeśli została użyta nieobsługiwana funkcja .NET Framework, niektóre poprawki mogą być wymagane.

Przykłady źródła języka C#, które mogą być używane w środowisku Xamarin.iOS lub Xamarin.Android, to: SQLite-NET, NewtonSoft.JSON i SharpZipLib.

Objective-C Powiązania i powiązania projektów

Platforma Xamarin udostępnia narzędzie o nazwie btouch , które ułatwia tworzenie powiązań, które umożliwiają Objective-C używanie bibliotek w projektach platformy Xamarin.iOS. Aby uzyskać szczegółowe informacje na temat tego, jak to zrobić, zapoznaj się z dokumentacją typów powiązańObjective-C.

Objective-C Przykłady bibliotek, które mogą być używane w środowisku Xamarin.iOS, to: skanowanie kodów kreskowych RedLaser, integracja z usługą Google Analytics i platformą PayPal. Powiązania platformy Xamarin.iOS typu open source są dostępne w witrynie GitHub.

.jar powiązania i powiązania projektów

Platforma Xamarin obsługuje używanie istniejących bibliotek Java na platformie Xamarin.Android. Zapoznaj się z dokumentacją wiązania biblioteki Języka Java, aby uzyskać szczegółowe informacje na temat korzystania z elementu . Plik JAR z platformy Xamarin.Android.

Powiązania platformy Xamarin.Android typu open source są dostępne w witrynie GitHub.

C przez PInvoke

Technologia "Platform Invoke" (P/Invoke) umożliwia kodowi zarządzanemu (C#) wywoływanie metod w bibliotekach natywnych, a także obsługę bibliotek natywnych w celu wywołania z powrotem do kodu zarządzanego.

Na przykład biblioteka SQLite-NET używa takich instrukcji:

[DllImport("sqlite3", EntryPoint = "sqlite3_open", CallingConvention=CallingConvention.Cdecl)]
public static extern Result Open (string filename, out IntPtr db);

Wiąże się to z natywną implementacją SQLite w języku C w systemach iOS i Android. Deweloperzy zaznajomieni z istniejącym interfejsem API języka C mogą utworzyć zestaw klas języka C# do mapowania na natywny interfejs API i korzystać z istniejącego kodu platformy. Istnieje dokumentacja dotycząca łączenia bibliotek natywnych w środowisku Xamarin.iOS. Podobne zasady dotyczą platformy Xamarin.Android.

C++ przez CppSharp

Miguel wyjaśnia CXXI (obecnie o nazwie CppSharp) na swoim blogu. Alternatywą dla powiązania z biblioteką języka C++ jest utworzenie otoki języka C i powiązanie z tym za pośrednictwem metody P/Invoke.