Sdílet prostřednictvím


Aktualizace existujících aplikací pro Mac

Aktualizace existující aplikace tak, aby používala sjednocené rozhraní API, vyžaduje změny samotného souboru projektu a také obory názvů a rozhraní API používané v kódu aplikace.

Cesta k 64 bitům

Nová sjednocená rozhraní API jsou nutná pro podporu 64bitových architektur zařízení z aplikace Xamarin.Mac. Od 1. února 2015 apple vyžaduje, aby 64bitové architektury podporovaly všechny nové odesílání aplikací do Mac App Storu.

Xamarin poskytuje nástroje pro Visual Studio pro Mac i Visual Studio pro automatizaci procesu migrace z klasického rozhraní API do sjednoceného rozhraní API nebo ruční převod souborů projektu. I když je používání automatických nástrojů vysoce navržené, tento článek se zabývá oběma metodami.

Než začnete...

Než aktualizujete stávající kód na sjednocené rozhraní API, důrazně doporučujeme odstranit všechna upozornění kompilace. Po migraci na sjednocené rozhraní API dojde k chybám mnoha upozornění v klasickém rozhraní API. Oprava je před zahájením jednodušší, protože zprávy kompilátoru z klasického rozhraní API často poskytují rady, co se má aktualizovat.

Automatizovaná aktualizace

Po opravení upozornění vyberte existující projekt Mac v Visual Studio pro Mac nebo sadě Visual Studio a v nabídce Projekt zvolte Migrovat na sjednocené rozhraní API Xamarin.Mac. Příklad:

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

Před spuštěním automatizované migrace budete muset souhlasit s tímto upozorněním (samozřejmě byste měli před zahájením tohoto dobrodružství zajistit zálohování nebo správu zdrojového kódu):

Agree to this warning before the automated migration will run

Existují dva podporované typy cílové architektury, které je možné vybrat při použití sjednoceného rozhraní API v aplikaci Xamarin.Mac:

  • Mobilní rozhraní Xamarin.Mac – jedná se o stejnou vyladěnou architekturu .NET, kterou používá Xamarin.iOS a Xamarin.Android, která podporuje podmnožinu celé desktopové architektury. Toto je doporučená architektura, protože poskytuje menší průměrné binární soubory z důvodu nadřízeného chování propojení.
  • Xamarin.Mac .NET 4.5 Framework – tato architektura je opět podmnožinou desktopové architektury. Ale oříznou mnohem méně z celé desktopové architektury než mobilní architektura a měla by "pracovat" s většinou balíčků NuGet nebo knihoven třetích stran. Vývojář tak může používat standardní desktopová sestavení, i když stále používá podporovanou architekturu, ale tato možnost vytváří větší sady aplikací. Toto je doporučená architektura, ve které se používají sestavení .NET třetích stran, která nejsou kompatibilní s architekturou Xamarin.Mac Mobile Framework. Seznam podporovaných sestavení najdete v dokumentaci k sestavením.

Podrobné informace o cílových architekturách a dopadech výběru konkrétního cíle pro vaši aplikaci Xamarin.Mac najdete v naší dokumentaci k cílovým architekturám .

Nástroj v podstatě automatizuje všechny kroky popsané v části Aktualizovat ručně uvedené níže a je navrženou metodou převodu existujícího projektu Xamarin.Mac na sjednocené rozhraní API.

Postup ruční aktualizace

Jakmile jsou upozornění opravená, aktualizujte aplikace Xamarin.Mac ručně pomocí těchto kroků, aby používaly nové sjednocené rozhraní API:

1. Aktualizovat typ projektu a cíl sestavení

Změňte příchuť projektu v souborech csproj z 42C0BBD9-55CE-4FC1-8D90-A7348ABAFB23 na A3F8F2AB-B479-4A4A-A458-A89E7DC349F1. Upravte soubor csproj v textovém editoru a nahraďte první položku v elementu<ProjectTypeGuids>, jak je znázorněno:

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

Změňte element Import, který obsahujeXamarin.Mac.targets, jak Xamarin.Mac.CSharp.targets je znázorněno:

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

Za element přidejte následující řádky kódu <AssemblyName> :

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

Příklad:

Add these lines of code after the <AssemblyName> element

2. Aktualizace odkazů na projekt

Rozbalte uzel Reference projektu aplikace Mac. Zpočátku se zobrazí odkaz *broken- XamMac podobný tomuto snímku obrazovky (protože jsme právě změnili typ projektu):

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

Klikněte na ikonu ozubeného kola vedle položky XamMac a výběrem možnosti Odstranit odeberte poškozený odkaz.

Potom klikněte pravým tlačítkem myši na složku Reference v Průzkumník řešení a vyberte Upravit odkazy. Posuňte se do dolní části seznamu odkazů a umístěte kontrolu vedle Xamarin.Mac.

Scroll to the bottom of the list of references and place a check besides Xamarin.Mac

Stisknutím ok uložte změny odkazů na projekt.

3. Odebrání MonoMacu z oborů názvů

Odeberte předponu MonoMac z oborů názvů v using příkazech nebo tam, kde byl název třídy plně kvalifikovaný (např. MonoMac.AppKit se stane právě AppKit).

4. Přemapovat typy

Byly zavedeny nativní typy , které nahrazují některé typy, které byly dříve použity, například instancemi System.Drawing.RectangleF ( CoreGraphics.CGRect například). Úplný seznam typů najdete na stránce nativních typů .

5. Oprava přepsání metody

Některé AppKit metody se změnily tak, aby používaly nové nativní typy (například nint). Pokud vlastní podtřídy tyto metody přepíšou, podpisy se už nebudou shodovat a budou mít za následek chyby. Opravte přepsání těchto metod změnou podtřídy tak, aby odpovídala novému podpisu pomocí nativních typů.

Důležité informace

Při převodu existujícího projektu Xamarin.Mac z klasického rozhraní API na nové sjednocené rozhraní API je potřeba vzít v úvahu následující aspekty, pokud tato aplikace spoléhá na jednu nebo více komponent nebo balíčků NuGet.

Komponenty

Každá komponenta, kterou jste zahrnuli do aplikace, bude také potřeba aktualizovat na sjednocené rozhraní API nebo při pokusu o kompilaci dojde ke konfliktu. U jakékoli zahrnuté komponenty nahraďte aktuální verzi novou verzí z úložiště komponent Xamarin, která podporuje sjednocené rozhraní API, a proveďte čisté sestavení. Každá komponenta, která ještě nebyla převedena autorem, zobrazí 32bitové upozornění pouze v úložišti komponent.

Podpora NuGetu

I když jsme přispěli změnami NuGetu pro práci s podporou sjednoceného rozhraní API, nebyla k dispozici nová verze NuGetu, takže vyhodnocujeme, jak získat NuGet k rozpoznání nových rozhraní API.

Až do té doby, stejně jako komponenty, budete muset přepnout všechny balíčky NuGet, které jste zahrnuli do projektu, na verzi, která podporuje sjednocená rozhraní API, a následně provést čisté sestavení.

Důležité

Pokud se ve formuláři Chyba 3 nezobrazí monomac.dll ani Xamarin.Mac.dll ve stejném projektu Xamarin.Mac – na Xamarin.Mac.dll se odkazuje explicitně, zatímco "monomac.dll" se po převodu aplikace na sjednocená rozhraní API odkazuje na xxx, Version=0.0.000, Culture=neutral, PublicKeyToken=null, obvykle je to způsobeno tím, že v projektu, který nebyl aktualizován na sjednocené rozhraní API, buď komponentu, nebo balíček NuGet. Budete muset odebrat existující komponentu nebo NuGet, aktualizovat na verzi, která podporuje sjednocená rozhraní API, a provést čisté sestavení.

Povolení 64bitových buildů aplikací Xamarin.Mac

U mobilní aplikace Xamarin.Mac, která byla převedena na sjednocené rozhraní API, musí vývojář stále povolit vytváření aplikace pro 64bitové počítače z možností aplikace. Podrobné pokyny k povolení 64bitových buildů 64bitových buildů aplikací Xamarin.Mac najdete v dokumentu s informacemi o 32/64bitové platformě.

Dokončení

Bez ohledu na to, jestli se rozhodnete použít automatickou nebo ruční metodu k převodu aplikace Xamarin.Mac z modelu Classic na sjednocená rozhraní API, existuje několik instancí, které budou vyžadovat další ruční zásah. Informace o známých problémech a řešení najdete v našem Tipy pro aktualizaci kódu do dokumentu sjednoceného rozhraní API.