Aktualisieren vorhandener iOS-Apps

Führen Sie die folgenden Schritte aus, um eine vorhandene Xamarin.iOS-App für die Verwendung der Unified API zu aktualisieren.

Das Aktualisieren einer vorhandenen App zur Verwendung der Unified API erfordert Änderungen an der Projektdatei selbst sowie an den Namespaces und APIs, die im Anwendungscode verwendet werden.

Der Weg zu 64 Bits

Die neuen Unified-APIs sind erforderlich, um 64-Bit-Gerätearchitekturen aus einer mobilen Xamarin.iOS-Anwendung zu unterstützen. Ab dem 1. Februar 2015 erfordert Apple, dass alle neuen App-Übermittlungen an den iTunes App Store 64-Bit-Architekturen unterstützen.

Xamarin bietet Tools für Visual Studio für Mac und Visual Studio zum Automatisieren des Migrationsprozesses von der klassischen API in die Unified-API, oder Sie können die Projektdateien manuell konvertieren. Obwohl die Verwendung der automatischen Tools sehr vorgeschlagen wird, behandelt dieser Artikel beide Methoden.

Bevor Sie beginnen...

Bevor Sie Ihren vorhandenen Code auf die Einheitliche API aktualisieren, wird dringend empfohlen, alle Kompilierungswarnungen zu beseitigen. Viele Warnungen in der klassischen API werden zu Fehlern, sobald Sie zu Unified migriert wurden. Das Beheben dieser Elemente vor dem Start ist einfacher, da die Compilermeldungen aus der klassischen API häufig Hinweise auf das Update bieten.

Automatische Aktualisierung

Nachdem die Warnungen behoben wurden, wählen Sie ein vorhandenes iOS-Projekt in Visual Studio für Mac oder Visual Studio aus, und wählen Sie im Menü "Projekt" die Option "Zu Xamarin.iOS Unified API migrieren" aus. Beispiel:

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

Sie müssen dieser Warnung zustimmen, bevor die automatisierte Migration ausgeführt wird (offensichtlich sollten Sie sicherstellen, dass Sie Sicherungen/Quellcodeverwaltung haben, bevor Sie dieses Abenteuer starten):

Agree to this warning before the automated migration will run

Das Tool automatisiert im Wesentlichen alle Schritte, die im unten dargestellten Abschnitt "Update Manuell " beschrieben sind, und ist die vorgeschlagene Methode zum Konvertieren eines vorhandenen Xamarin.iOS-Projekts in die Unified API.

Schritte zum manuellen Aktualisieren

Nachdem die Warnungen behoben wurden, führen Sie die folgenden Schritte aus, um Xamarin.iOS-Apps manuell zu aktualisieren, um die neue Unified API zu verwenden:

1. Projekttyp und Buildziel aktualisieren

Ändern Sie den Projektgeschmack in Ihren csproj-Dateien von 6BC8ED88-2882-458C-8E55-DFD12B67127B zu FEACFBD2-3405-455C-9665-78FE426C6842. Bearbeiten Sie die Csproj-Datei in einem Text-Editor, und ersetzen Sie das erste Element im <ProjectTypeGuids> Element wie gezeigt:

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

Ändern Sie das Import-Element , das wie gezeigt enthält Xamarin.MonoTouch.CSharp.targetsXamarin.iOS.CSharp.targets :

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

2. Aktualisieren von Projektverweise

Erweitern Sie den Knoten "Verweise" des iOS-Anwendungsprojekts. Zunächst wird ein *broken-Monotouch-Verweis wie dieser Screenshot angezeigt (da wir gerade den Projekttyp geändert haben):

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

Klicken Sie mit der rechten Maustaste auf das iOS-Anwendungsprojekt, um Verweise zu bearbeiten, und klicken Sie dann auf den Monotouchverweis, und löschen Sie es mit der roten Schaltfläche "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

Scrollen Sie nun zum Ende der Referenzliste, und ticken Sie mit der Xamarin.iOS-Assembly .

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

Drücken Sie 'OK ', um die Änderungen der Projektverweise zu speichern.

3. Entfernen von MonoTouch aus Namespaces

Entfernen Sie das MonoTouch-Präfix aus Namespaces in using Anweisungen oder unabhängig davon, wo ein Klassenname vollständig qualifiziert wurde (z. B. MonoTouch.UIKit wird nur UIKit).

4. Neuzuordnungstypen

Systemeigene Typen wurden eingeführt, die einige Typen ersetzen, die zuvor verwendet wurden, z. B. Instanzen von System.Drawing.RectangleF "durch CoreGraphics.CGRect " (z. B.). Die vollständige Liste der Typen finden Sie auf der Seite mit nativen Typen .

5. Fix-Methodenüberschreibungen

Einige UIKit Methoden haben ihre Signatur geändert, um die neuen systemeigenen Typen zu verwenden (z nint. B. ). Wenn benutzerdefinierte Unterklassen diese Methoden außer Kraft setzen, stimmen die Signaturen nicht mehr überein und führen zu Fehlern. Beheben Sie diese Methodenüberschreibungen, indem Sie die Unterklasse so ändern, dass sie mit systemeigenen Typen mit der neuen Signatur übereinstimmt.

Beispiele hierfür sind das Ändern public override int NumberOfSections (UITableView tableView) der Rückgabe nint - und Parametertypen in das Zurückgeben und Ändern von public override int RowsInSection (UITableView tableView, int section)nintParametertypen.

Überlegungen

Die folgenden Überlegungen sollten beim Konvertieren eines vorhandenen Xamarin.iOS-Projekts aus der klassischen API in die neue Unified API berücksichtigt werden, wenn diese App auf einer oder mehreren Komponenten oder NuGet-Paketen basiert.

Komponenten

Jede Komponente, die Sie in Ihre Anwendung aufgenommen haben, muss auch auf die Unified-API aktualisiert werden, oder Sie erhalten einen Konflikt, wenn Sie versuchen, die Kompilierung zu kompilieren. Ersetzen Sie für jede enthaltene Komponente die aktuelle Version durch eine neue Version aus dem Xamarin Component Store, die die Unified API unterstützt, und führen Sie einen sauber Build durch. Jede Komponente, die noch nicht vom Autor konvertiert wurde, zeigt eine 32-Bit-Warnung nur im Komponentenspeicher an.

NuGet-Unterstützung

Wir haben zwar Änderungen an NuGet beigetragen, um mit der Unified API-Unterstützung zu arbeiten, aber es gab keine neue Version von NuGet, sodass wir evaluieren, wie NuGet zur Erkennung der neuen APIs abgerufen wird.

Bis zu diesem Zeitpunkt müssen Sie genau wie die Komponenten jedes NuGet-Paket, das Sie in Ihrem Projekt enthalten haben, zu einer Version wechseln, die die Unified-APIs unterstützt, und anschließend einen sauber Build ausführen.

Wichtig

Wenn ein Fehler in der Form "Fehler 3 Kann nicht sowohl 'monotouch.dll' als auch 'Xamarin.iOS.dll' im selben Xamarin.iOS-Projekt enthalten - auf 'Xamarin.iOS.dll' wird explizit verwiesen, während "monotouch.dll" von 'xxx, Version=0.0.000, Culture=neutral, PublicKeyToken=null'" referenziert wird, nachdem Ihre Anwendung in unified APIs konvertiert wurde, liegt es in der Regel daran, dass eine Komponente oder ein NuGet-Paket im Projekt vorhanden ist, das nicht auf die Unified API aktualisiert wurde. Sie müssen die vorhandene Komponente/NuGet entfernen, auf eine Version aktualisieren, die die Unified-APIs unterstützt, und einen sauber Build ausführen.

Aktivieren von 64-Bit-Builds von Xamarin.iOS-Apps

Für eine mobile Xamarin.iOS-Anwendung, die in die Unified-API konvertiert wurde, muss der Entwickler weiterhin die Erstellung der Anwendung für 64-Bit-Computer über die Optionen der App aktivieren. Ausführliche Anweisungen zum Aktivieren von 64-Bit-Builds von Xamarin.iOS-Apps des 32/64-Bit-Plattformüberlegungsdokuments finden Sie in den Überlegungen zur Aktivierung von 64-Bit-Builds.

Fertigstellen

Unabhängig davon, ob Sie die automatische oder manuelle Methode verwenden, um Ihre Xamarin.iOS-Anwendung aus dem Klassischen in die Unified-APIs zu konvertieren, gibt es mehrere Instanzen, die weitere manuelle Eingriffe erfordern. Informationen zum Aktualisieren von Code in das Unified API-Dokument finden Sie in unserem Tipps für bekannte Probleme und Umgehungen.