Überlegungen zur 32/64-Bit-Plattform
Während iOS und macOS in der Vergangenheit sowohl 32- als auch 64-Bit-Apps unterstützt haben, hat Apple die 32-Bit-Unterstützung schrittweise eingestellt.
Ab iOS 11 werden 32-Bit-Apps nicht mehr gestartet, und alle Übermittlungen an die App Store müssen 64-Bit unterstützen.
Ab Januar 2018 müssen neue Apps, die an die Mac-App Store übermittelt werden, 64-Bit unterstützen, und vorhandene Apps müssen bis Juni 2018 aktualisiert werden.
Die klassische API von Xamarin (XamMac.dll
und monotouch.dll
) unterstützt nur 32-Bit-Anwendungen. Neue Xamarin.iOS- und Xamarin.Mac-Anwendungen verwenden jedoch standardmäßig die einheitliche API (Xamarin.iOS
und Xamarin.Mac
) und können daher bei Bedarf sowohl 32 als auch 64-Bit als Ziel verwenden.
Warnung
Dieser Abschnitt ist aus historischen Gründen enthalten und soll helfen, ältere Xamarin.iOS-Projekte in die einheitliche API zu verschieben und 64-Bit-Unterstützung zu unterstützen. Alle neuen Xamarin.iOS-Projekte verwenden standardmäßig die einheitliche API und die 64-Bit-Zielversion.
Für mobile Xamarin.iOS-Anwendungen, die in die einheitliche API konvertiert wurden, müssen Entwickler die Buildeinstellungen manuell auf die 64-Bit-Zielversion aktualisieren:
Doppelklicken Sie im Projektmappenpad auf das Projekt der App, um das Fenster Projektoptionen zu öffnen.
Wählen Sie iOS-Build aus.
Wählen Sie für den iPhone-Simulator in der Dropdownliste Unterstützte Architekturen entweder x86_64 oder i386 + x86_64 aus:
Wählen Sie für physische Geräte eine der verfügbaren ARM64-Kombinationen aus:
Klicken Sie auf OK.
Erstellen Sie einen bereinigten Build.
ARMv7s wird nur vom A6-Prozessor unterstützt, der im iPhone 5 (oder höher) enthalten ist. ARMv7-Code ist schneller und kleiner als der ARMv6, funktioniert nur mit dem iPhone 3GS und höher und wird von Apple benötigt, wenn das iPad oder eine iOS-Mindestversion von 5.0 als Ziel verwendet wird. ARMv6 funktioniert auf allen Geräten, wird aber nicht mehr vom Compiler unterstützt, der mit Xcode 4.5 und höher ausgeliefert wird.
ARM64 ist erforderlich, um iOS 8 auf iPhone 6 oder anderen 64-Bit-Geräten zu unterstützen, und wird von Apple benötigt, wenn neue oder aktualisierende Anwendungen im iTunes-App Store.
Einen umfassenden Überblick über die Funktionen verschiedener iOS-Geräte finden Sie im Dokument zur Gerätekompatibilität von Apple.
Während der Umstellung von Apple von 32-Bit zu 64-Bit müssen iOS-Apps sowohl auf 32-Bit- als auch auf 64-Bit-Hardware ausgeführt werden. Daher ermöglicht die einheitliche API von Xamarin Entwicklern, beides als Ziel zu verwenden.
Für 32-Bit- und 64-Bit-Architekturen wird die Größe einer Anwendung erheblich erhöht. Dies ermöglicht es neueren Geräten jedoch, optimierten Code auszuführen und gleichzeitig ältere Geräte zu unterstützen.
Wichtig
Wenn Sie beim Übermitteln einer iOS-Anwendung an die iTunes-App Store die folgende Meldung erhalten, "WARNUNG ITMS-9000: Fehlende 64-Bit-Unterstützung. Ab dem 1. Februar 2015 müssen neue iOS-Apps, die in die App Store hochgeladen werden, 64-Bit-Unterstützung enthalten und mit dem iOS 8 SDK erstellt werden, das in Xcode 6 oder höher enthalten ist. Um 64-Bit in Ihrem Projekt zu aktivieren, wird empfohlen, die Xcode-Standardbuildeinstellung "Standardarchitekturen" zu verwenden, um eine einzelne Binärdatei mit 32-Bit- und 64-Bit-Code zu erstellen. Sie müssen die unterstützten Architekturen auf eine der verfügbaren ARM64-Kombinationen (wie oben gezeigt) umstellen, neu kompilieren und erneut übermitteln.
Wichtig
Ab Januar 2018 müssen alle neuen Mac-Apps, die an die Mac-App Store übermittelt werden, 64-Bit unterstützen. Vorhandene Mac-App Store-Apps und deren Updates müssen ab Juni 2018 64-Bit unterstützen. Weitere Informationen finden Sie in der Ankündigung von Apple und in einem Leitfaden, in dem beschrieben wird, wie Sie Ihre Xamarin.Mac-Apps auf 64-Bit aktualisieren.
Die meisten modernen Mac-Computer unterstützen sowohl 32-Bit- als auch 64-Bit-Anwendungen. MacOS 10.6 (Snow Leopard) war das letzte Betriebssystem, das auf 32-Bit-Systemen ausgeführt wurde. Die meisten Macs, die seit 2010 veröffentlicht wurden, unterstützen beide Systeme.
Im Gegensatz zu iOS werden viele der neuen Frameworks, die in den neuesten Versionen von macOS eingeführt wurden, nur im 64-Bit-Modus unterstützt (CloudKit, EventKit, GameController, LocalAuthentication, MediaLibrary, MultipeerConnectivity, NotificationCenter, GLKit, SpriteKit, Social und MapKit, unter anderem).
Mit der einheitlichen API können Entwickler auswählen, welche Art von Anwendungen sie erstellen möchten: 32-Bit oder 64-Bit.
32-Bit-Anwendungen werden sowohl auf 32-Bit- als auch auf 64-Bit-Mac-Computern ausgeführt, verfügen über einen auf 32 Bit beschränkten Adressraum und erfordern, dass alle Bibliotheken 32 Bits sind.
In der Regel verwenden Sie diesen Modus, wenn Sie über 32-Bit-Abhängigkeiten verfügen, die nicht im 64-Bit-Modus ausgeführt werden, wenn Sie einen kleineren Download wünschen oder wenn keine Leistungsvorteile beim Wechsel zu 64-Bit vorliegen.
Dieser Modus ist eingeschränkt, da Sie nicht in der Lage sind, viele Frameworks zu verwenden, die in macOS Mavericks und macOS Yosemite verfügbar sind.
64-Bit-Anwendungen werden nur auf 64-Bit-Mac-Geräten ausgeführt.
Für Mac ist dies die bevorzugte Betriebsart, da die meisten Macs, die heute verwendet werden, den 64-Bit-Modus unterstützen, und Sie haben Zugriff auf den vollständigen Satz von Frameworks, die von Apple bereitgestellt werden.
Informationen zum Erstellen einer 64-Bit-App mit Xamarin.Mac finden Sie im Leitfaden Aktualisieren von Xamarin.Mac Unified-Anwendungen auf 64-Bit-Anwendungen .