Aktualizace existujících aplikací pro iOS

Následujícím postupem aktualizujte existující aplikaci Xamarin.iOS tak, aby používala sjednocené rozhraní API.

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á k podpoře 64bitových architektur zařízení z mobilní aplikace Xamarin.iOS. Od 1. února 2015 apple vyžaduje, aby všechna nová odeslání aplikací do iTunes App Storu podporovala 64bitové architektury.

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 pro iOS v Visual Studio pro Mac nebo sadě Visual Studio a v nabídce Projekt zvolte Migrovat na sjednocené rozhraní API Xamarin.iOS. Příklad:

Choose Migrate to Xamarin.iOS 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

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

Postup ruční aktualizace

Jakmile jsou upozornění opravená, aktualizujte aplikace Xamarin.iOS 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 6BC8ED88-2882-458C-8E55-DFD12B67127B na FEACFBD2-3405-455C-9665-78FE426C6842. 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.MonoTouch.CSharp.targets, jak Xamarin.iOS.CSharp.targets je znázorněno:

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

2. Aktualizace odkazů na projekt

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

It will initially show a broken- monotouch reference similar to this screenshot because the project type changed

Klikněte pravým tlačítkem myši na projekt aplikace pro iOS a upravte odkazy, klikněte na odkaz monotouch a odstraňte ho pomocí červeného tlačítka X.

Right-click on the iOS application project to Edit References, then click on the monotouch reference and delete it using the red X button

Nyní přejděte na konec seznamu odkazů a zaškrtněte sestavení Xamarin.iOS .

Now scroll to the end of the references list and tick the Xamarin.iOS assembly

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

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

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

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é UIKit 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ů.

Mezi příklady patří změna public override int NumberOfSections (UITableView tableView) návratu nint a změna návratových typů i typů public override int RowsInSection (UITableView tableView, int section) parametrů na nint.

Důležité informace

Při převodu existujícího projektu Xamarin.iOS 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 ve formuláři "Chyba 3 nemůže obsahovat monotouch.dll" i "Xamarin.iOS.dll" ve stejném projektu Xamarin.iOS – na Xamarin.iOS.dll se odkazuje explicitně, zatímco "monotouch.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.iOS

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

Dokončení

Bez ohledu na to, jestli se rozhodnete použít automatickou nebo ruční metodu k převodu aplikace Xamarin.iOS 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.