Aktualizowanie istniejących aplikacji dla komputerów Mac
Zaktualizowanie istniejącej aplikacji w celu korzystania z ujednoliconego interfejsu API wymaga zmian w samym pliku projektu oraz przestrzeni nazw i interfejsów API używanych w kodzie aplikacji.
Droga do 64 bitów
Nowe ujednolicone interfejsy API są wymagane do obsługi architektur urządzeń 64-bitowych z poziomu aplikacji platformy Xamarin.Mac. Od 1 lutego 2015 r. firma Apple wymaga, aby wszystkie nowe aplikacje przesyłane do sklepu Mac App Store obsługiwały architektury 64-bitowe.
Platforma Xamarin udostępnia narzędzia zarówno dla Visual Studio dla komputerów Mac, jak i programu Visual Studio w celu zautomatyzowania procesu migracji z klasycznego interfejsu API do ujednoliconego interfejsu API lub ręcznego konwertowania plików projektu. Chociaż korzystanie z narzędzi automatycznych jest zdecydowanie sugerowane, w tym artykule omówiono obie metody.
Przed rozpoczęciem...
Przed zaktualizowaniem istniejącego kodu do ujednoliconego interfejsu API zdecydowanie zaleca się wyeliminowanie wszystkich ostrzeżeń kompilacji. Wiele ostrzeżeń w klasycznym interfejsie API stanie się błędami po przeprowadzeniu migracji do ujednoliconej wersji. Naprawianie ich przed rozpoczęciem jest łatwiejsze, ponieważ komunikaty kompilatora z klasycznego interfejsu API często zawierają wskazówki dotyczące aktualizacji.
Automatyczne aktualizowanie
Po naprawieniu ostrzeżeń wybierz istniejący projekt mac w programie Visual Studio dla komputerów Mac lub Visual Studio i wybierz pozycję Migruj do ujednoliconego interfejsu API platformy Xamarin.Mac z menu Projekt. Na przykład:
Przed uruchomieniem automatycznej migracji musisz wyrazić zgodę na to ostrzeżenie (oczywiście przed rozpoczęciem tej przygody należy upewnić się, że masz kopie zapasowe/kontrolę źródła):
Istnieją dwa obsługiwane typy platform docelowych, które można wybrać podczas korzystania z ujednoliconego interfejsu API w aplikacji platformy Xamarin.Mac:
- Xamarin.Mac Mobile Framework — jest to ten sam dostrojony program .NET framework używany przez platformy Xamarin.iOS i Xamarin.Android obsługujący podzbiór pełnej struktury pulpitu . Jest to zalecana struktura, ponieważ zapewnia mniejsze średnie pliki binarne z powodu doskonałego zachowania łączenia.
- Xamarin.Mac .NET 4.5 Framework — ta struktura jest ponownie podzbiorem struktury Desktop . Jednak przycina znacznie mniej pełnej struktury pulpitu niż struktura Mobile i powinna "po prostu pracować" z większością pakietów NuGet lub bibliotek innych firm. Dzięki temu deweloper może korzystać ze standardowych zestawów klasycznych w dalszym ciągu korzystających z obsługiwanej platformy, ale ta opcja generuje większe pakiety aplikacji. Jest to zalecana struktura, w której są używane zestawy .NET innych firm, które nie są zgodne z platformą Xamarin.Mac Mobile Framework. Aby uzyskać listę obsługiwanych zestawów, zobacz dokumentację zestawów .
Aby uzyskać szczegółowe informacje na temat platform docelowych i implikacji wybierania określonego miejsca docelowego dla aplikacji Xamarin.Mac, zapoznaj się z naszą dokumentacją platform docelowych.
Narzędzie w zasadzie automatyzuje wszystkie kroki opisane w poniższej sekcji Aktualizowanie ręcznie i jest sugerowaną metodą konwertowania istniejącego projektu platformy Xamarin.Mac na ujednolicony interfejs API.
Kroki ręcznej aktualizacji
Ponownie po naprawieniu ostrzeżeń wykonaj następujące kroki, aby ręcznie zaktualizować aplikacje platformy Xamarin.Mac do korzystania z nowego ujednoliconego interfejsu API:
1. Aktualizowanie typu projektu i celu kompilacji
Zmień smak projektu w plikach csproj z 42C0BBD9-55CE-4FC1-8D90-A7348ABAFB23
na A3F8F2AB-B479-4A4A-A458-A89E7DC349F1
. Edytuj plik csproj w edytorze tekstów, zastępując pierwszy element w <ProjectTypeGuids>
elemencie, jak pokazano poniżej:
Zmień element Import, który zawiera Xamarin.Mac.targets
wartość , tak Xamarin.Mac.CSharp.targets
jak pokazano:
Dodaj następujące wiersze kodu po elemecie <AssemblyName>
:
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<TargetFrameworkIdentifier>Xamarin.Mac</TargetFrameworkIdentifier>
Przykład:
2. Aktualizowanie odwołań do projektu
Rozwiń węzeł Odwołania projektu aplikacji dla komputerów Mac. Początkowo zostanie wyświetlone odwołanie *broken- XamMac podobne do tego zrzutu ekranu (ponieważ właśnie zmieniliśmy typ projektu):
Kliknij ikonę koła zębatego obok pozycji XamMac i wybierz pozycję Usuń, aby usunąć uszkodzone odwołanie.
Następnie kliknij prawym przyciskiem myszy folder Odwołania w Eksplorator rozwiązań i wybierz polecenie Edytuj odwołania. Przewiń w dół listy odwołań i umieść sprawdzanie oprócz platformy Xamarin.Mac.
Naciśnij przycisk OK , aby zapisać zmiany odwołań do projektu.
3. Usuwanie aplikacji MonoMac z przestrzeni nazw
Usuń prefiks MonoMac z przestrzeni nazw w using
instrukcjach lub wszędzie tam, gdzie nazwa klasy została w pełni kwalifikowana (np. MonoMac.AppKit
staje się tylko AppKit
).
4. Ponowne mapowanie typów
Wprowadzono typy natywne, które zastępują niektóre typy, które były wcześniej używane, takie jak wystąpienia System.Drawing.RectangleF
elementu z CoreGraphics.CGRect
(na przykład). Pełną listę typów można znaleźć na stronie typów natywnych.
5. Naprawianie przesłonięć metod
Niektóre AppKit
metody zmieniły podpis, aby używać nowych typów natywnych (takich jak nint
). Jeśli niestandardowe podklasy zastąpią te metody, sygnatury nie będą już zgodne i spowodują błędy. Napraw te przesłonięcia metod, zmieniając podklasę tak, aby odpowiadała nowemu podpisowi przy użyciu typów natywnych.
Kwestie wymagające rozważenia
Podczas konwertowania istniejącego projektu platformy Xamarin.Mac z klasycznego interfejsu API na nowy ujednolicony interfejs API należy wziąć pod uwagę następujące zagadnienia, jeśli ta aplikacja korzysta z co najmniej jednego składnika lub pakietu NuGet.
Składniki
Każdy składnik uwzględniony w aplikacji będzie również musiał zostać zaktualizowany do ujednoliconego interfejsu API lub wystąpi konflikt podczas próby skompilowania. W przypadku dowolnego dołączonego składnika zastąp bieżącą wersję nową wersją ze sklepu składników Xamarin, który obsługuje ujednolicony interfejs API, i wykonaj czystą kompilację. Każdy składnik, który nie został jeszcze przekonwertowany przez autora, wyświetli ostrzeżenie tylko 32-bitowe w magazynie składników.
Pomoc techniczna narzędzia NuGet
Chociaż wprowadziliśmy zmiany w usłudze NuGet do pracy z obsługą ujednoliconego interfejsu API, nie wprowadzono nowej wersji narzędzia NuGet, dlatego oceniamy, jak umożliwić nuGet rozpoznawanie nowych interfejsów API.
Do tego czasu, podobnie jak w przypadku składników, musisz przełączyć dowolny pakiet NuGet uwzględniony w projekcie do wersji obsługującej ujednolicone interfejsy API i wykonać czystą kompilację później.
Ważne
Jeśli wystąpi błąd w formularzu "Błąd 3 Nie można dołączyć zarówno "monomac.dll" jak i "Xamarin.Mac.dll" w tym samym projekcie platformy Xamarin.Mac — "Xamarin.Mac.dll" jest jawnie przywołyny, Podczas gdy element "monomac.dll" odwołuje się do elementu "xxx, Version=0.0.000, Culture=neutral, PublicKeyToken=null" po przekonwertowaniu aplikacji na ujednolicone interfejsy API, zwykle wynika to z posiadania składnika lub pakietu NuGet w projekcie, który nie został zaktualizowany do ujednoliconego interfejsu API. Musisz usunąć istniejący składnik/NuGet, zaktualizować go do wersji obsługującej ujednolicone interfejsy API i wykonać czystą kompilację.
Włączanie 64-bitowych kompilacji aplikacji platformy Xamarin.Mac
W przypadku aplikacji mobilnej Xamarin.Mac, która została przekonwertowana na ujednolicony interfejs API, deweloper nadal musi włączyć tworzenie aplikacji dla 64-bitowych maszyn z opcji aplikacji. Szczegółowe instrukcje dotyczące włączania kompilacji 64-bitowych aplikacji platformy Xamarin.Macmożna znaleźć w dokumencie 32/64 bitowych zagadnień dotyczących platformy, aby uzyskać szczegółowe instrukcje dotyczące włączania kompilacji 64-bitowych.
Kończenie
Niezależnie od tego, czy zdecydujesz się użyć metody automatycznej lub ręcznej, aby przekonwertować aplikację Xamarin.Mac z klasycznej na ujednolicone interfejsy API, istnieje kilka wystąpień, które będą wymagały dalszej, ręcznej interwencji. Zapoznaj się z naszymi Wskazówki dotyczącymi aktualizowania kodu do ujednoliconego interfejsu API, aby zapoznać się ze znanymi problemami i obejść problemy.