Udostępnij za pośrednictwem


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:

Choose Migrate to Xamarin.Mac Unified API from the Project menu

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):

Agree to this warning before the automated migration will run

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:

Edit the csproj file in a text editor, replacing the first item in the ProjectTypeGuids element as shown

Zmień element Import, który zawiera Xamarin.Mac.targets wartość , tak Xamarin.Mac.CSharp.targets jak pokazano:

Change the Import element that contains Xamarin.Mac.targets to Xamarin.Mac.CSharp.targets as shown

Dodaj następujące wiersze kodu po elemecie <AssemblyName> :

<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<TargetFrameworkIdentifier>Xamarin.Mac</TargetFrameworkIdentifier>

Przykład:

Add these lines of code after the <AssemblyName> element

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):

It will initially show a broken- XamMac reference similar to this screenshot

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.

Scroll to the bottom of the list of references and place a check besides 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.