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:
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):
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:
Změňte element Import, který obsahujeXamarin.MonoTouch.CSharp.targets
, jak Xamarin.iOS.CSharp.targets
je znázorněno:
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):
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.
Nyní přejděte na konec seznamu odkazů a zaškrtněte sestavení Xamarin.iOS .
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.