Kann ich eine ältere Version von Xcode oder Xamarin.iOS verwenden?
In der Xamarin-Dokumentation wird davon ausgegangen, dass die neueste Xamarin.iOS- und Xcode-Version verwendet wird, die empfohlen wird. Einige Kunden würden jedoch lieber ältere Xamarin.iOS und/oder Xcode verwenden und möchten Details zu den Folgen wünschen.
Die Versionshinweise enthalten die folgende Warnung:
Warnung
Verwenden einer älteren Xcode-Version
Die Verwendung einer älteren Xcode-Version (als die in den oben genannten Anforderungen erwähnte) ist häufig möglich, aber einige Features sind möglicherweise nicht verfügbar. Auch einige Einschränkungen erfordern möglicherweise Problemumgehungen, z. B.:
- Bei der statischen Datei registrar sind Xcode-Headerdateien zum Erstellen von Anwendungen erforderlich, was zu
MT0091
Fehlern führt,MT4109
wenn APIs fehlen. In den meisten Fällen hilft das Aktivieren des verwalteten Linkers (durch Entfernen der API). - Bitcode-Builds (für tvOS und watchOS) können die Übermittlung an den App Store fehlschlagen, es sei denn, eine Xcode 9.0+-Toolkette wird verwendet.
Weitere Informationen
Microsoft empfiehlt dringend die Verwendung der neuesten Xcode- und neuesten Xamarin.iOS-Version bei der Entwicklung und Übermittlung von Anwendungen. Apple erfordert die Verwendung des neuesten Xcodes beim Übermitteln von Anwendungen.
Beachten Sie, dass die Verwendung des neuesten Xcode nicht verhindert, dass Ihre Anwendung auf ältere iOS-Versionen ausgerichtet ist. Die von Ihnen unterstützten iOS-Versionen basieren auf Ihrem Info.plist-Eintrag und den von Ihrer Anwendung verwendeten APIs.
Es ist möglich, mehrere Versionen von Xcode nebeneinander zu installieren, mit unterschiedlichen Namen wie Xcode101.app und Xcode102.app. Wenn Sie mehrere Versionen verwenden, stellen Sie sicher, dass Sie den aktiven Xcode in Visual Studio für Mac Einstellungen und mit dem xcode-select
Befehlszeilentool festlegen.
Es kann jedoch vorkommen, dass ältere Komponenten verwendet werden müssen. In dieser Dokumentation werden die allgemeinen Herausforderungen beschrieben, mit denen Sie möglicherweise konfrontiert sind, wenn Sie versionen verwenden, die älter als die neueste sind.
Jede Version von Apple ist jedoch einzigartig, und Sie können auf andere Fallstricke stoßen, die hier nicht dokumentiert sind.
Diese Herausforderungen sind manchmal nicht trivial zu lösen, daher bleiben Sie nach Möglichkeit bei der unterstützten Konfiguration der neuesten Xcode und der neuesten Xamarin.iOS.
Verwendung eines alten Xamarin.iOS mit einem alten Xcode
Es ist nicht möglich, Xamarin.iOS und Xcode zu aktualisieren, zumindest für einen gewissen Zeitraum. Der Grenzwert besteht darin, dass Apple irgendwann eine Mindestversion von Xcode benötigt, um Ihre Anwendungen zu übermitteln. An diesem Punkt sollten Sie alle Komponenten (macOS, Xcode und Xamarin.iOS) auf die neuesten Versionen (oder die neue, minimale Version von Xcode aktualisieren, die von Apple und der entsprechenden Xamarin.iOS-Version benötigt wird).
Es ist im Allgemeinen einfacher, schrittweise zu aktualisieren und mit den kleinen Änderungen schritt zu halten. Bei großen Projekten, bei denen Updates schwieriger zu halten sind, kann es sich bei bekannten Arbeitsmappen um einen guten Kompromiss handelt.
Verwendung neuer Xamarin.iOS mit älterem Xcode
Xamarin.iOS unterstützt im Allgemeinen ältere Xcode-Versionen, wenn möglich. Zu den potenziellen Herausforderungen gehören:
- Das neuere Xamarin.iOS unterstützt möglicherweise einige Features und APIs, die nicht im ausgewählten Xcode vorhanden sind.
- Bei der statischen Datei registrar sind Xcode-Headerdateien zum Erstellen von Anwendungen erforderlich, was zu
MT0091
Fehlern führt,MT4109
wenn APIs fehlen.- In den meisten Fällen hilft das Aktivieren des verwalteten Linkers (durch Entfernen der verwalteten Bindungen für die neue API), falls nicht verwendet.
- Bitcode-Builds (für tvOS und watchOS) können die Übermittlung an den App Store fehlschlagen, es sei denn, eine Xcode 9.0+-Toolkette wird verwendet.
Verwendung von neuem Xcode mit älteren Xamarin.iOS
Dieser Anwendungsfall ist wesentlich schwieriger, da Xamarin.iOS die sich ändernden Anforderungen neuer Xcode nicht vorhersagen kann. Updates von macOS können auch Probleme verursachen, und ohne Kompatibilitätspatches können viele Teile von Xamarin.iOS betroffen sein.
Es gibt eine Reihe potenzieller Bereiche, in denen dinge schief gehen können, darunter:
- Inkompatibilitäten mit
mlaunch
:- Die Simulatorunterstützung funktioniert möglicherweise nicht ordnungsgemäß (oder überhaupt)
- Die Geräteunterstützung funktioniert möglicherweise nicht ordnungsgemäß (oder überhaupt)
- Unbekannte Unterstützung für
mtouch
- Keine Unterstützung für neue Frameworks
- Keine Unterstützung für neue Berechtigungen
- Keine Unterstützung für neue oder aktualisierte Tools
- Dies kann sich auch auf die Codesignatur auswirken.
Neue AppStore-Übermittlungsregeln
Apple behält sich das Recht vor, die AppStore-Übermittlungsregeln jederzeit zu aktualisieren. Diese Regeländerungen werden nur manchmal im Voraus angekündigt. Einige dieser Änderungen erfordern toolsing changes to support, which would require an updated Xamarin.iOS component.
Zusätzlich zu den Regeländerungen fügt Apple häufig zusätzliche Überprüfungen zu übermittelten Apps hinzu oder verschärft vorhandene. Einige dieser Tools erfordern Änderungen an unseren Tools (z. B. ein neues Blocklistensymbol). Viele dieser Daten werden zuerst von Kunden gefunden, die übermitteln, da keine Ankündigung (oder Liste) der Regeln vorhanden ist.
Zusammenfassung
Spielen Sie es nach Möglichkeit sicher, indem Sie apples Anleitungen folgen und mit dem neuesten Xcode, der im App Store veröffentlicht wurde, entwickeln und übermitteln.
Verwenden Sie wiederum die neueste Veröffentlichung von Xamarin.iOS. Dadurch werden die neuesten Korrekturen nachverfolgt, die sich auf übermittelte Anwendungen auswirken und die neuesten Regeländerungen einhalten.
Wenn dies nicht machbar ist, sollten Sie eine übereinstimmende ältere Xcode- und Xamarin.iOS-Version verwenden. Dies kann für eine Zeit funktionieren, aber irgendwann wird Apple auf neueren Tools bestehen, so planen sie entsprechend.