Kann ich eine ältere Version von Xcode oder Xamarin.iOS verwenden?

In der Xamarin-Dokumentation wird davon ausgegangen, dass die neuesten Xamarin.iOS- und Xcode-Versionen verwendet werden, was empfohlen wird. Einige Kunden würden es jedoch vorziehen, ältere Xamarin.iOS und/oder Xcode zu verwenden, und wünschen sich Details zu den Folgen.

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) ist häufig möglich, aber einige Features sind möglicherweise nicht verfügbar. Außerdem können einige Einschränkungen Problemumgehungen erfordern, z. B.:

  • Das statische registrar erfordert Xcode-Headerdateien, um Anwendungen zu erstellen, was zu MT0091 fehlern führt MT4109 , wenn APIs fehlen. In den meisten Fällen hilft die Aktivierung des verwalteten Linkers (durch Entfernen der API).
  • Bitcodebuilds (für tvOS und watchOS) können bei der Übermittlung an die App Store fehlschlagen, es sei denn, es wird eine Xcode 9.0+-Toolkette verwendet.

Weitere Informationen

Microsoft empfiehlt dringend, beim Entwickeln und Übermitteln von Anwendungen die neueste Xcode-Version und die neueste Xamarin.iOS-Version zu verwenden. Apple erfordert die Verwendung des neuesten Xcode 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 APIs, die Ihre Anwendung verwendet.

Es ist möglich, mehrere Versionen von Xcode nebeneinander mit unterschiedlichen Namen wie Xcode101.app und Xcode102.app zu installieren. Wenn Sie mehrere Versionen verwenden, stellen Sie sicher, dass Sie den aktiven Xcode in Visual Studio für Mac Einstellungen und mit dem xcode-selectBefehlszeilentool festlegen.

Seltene Umstände erfordern jedoch möglicherweise die Verwendung älterer Komponenten. In dieser Dokumentation werden die allgemeinen Herausforderungen beschrieben, die bei der Verwendung von Versionen auftreten können, die älter als die neuesten sind.

Jedes Release 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 des neuesten Xcode und der neuesten Xamarin.iOS.

Verwendung eines alten Xamarin.iOS mit einem alten Xcode

Es ist möglich, Xamarin.iOS und Xcode nicht zu aktualisieren, zumindest für einen längeren 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 Ihre Komponenten (macOS, Xcode und Xamarin.iOS) auf die neueste Version (oder die neue, von Apple erforderliche Mindestversion von Xcode und die entsprechende Xamarin.iOS-Version) aktualisieren.

Es ist in der Regel einfacher, nach und nach zu aktualisieren und mit den kleinen Änderungen Schritt zu halten. Bei großen Projekten, bei denen Updates schwieriger zu halten sind, kann es ein guter Kompromiss sein, beim bekannten Arbeitssatz zu bleiben.

Verwendung des neuen Xamarin.iOS mit älterem Xcode

Xamarin.iOS unterstützt im Allgemeinen ältere Xcode-Versionen, wann immer dies möglich ist. Einige mögliche Herausforderungen sind:

  • Das neuere Xamarin.iOS unterstützt möglicherweise einige Features und APIs, die im ausgewählten Xcode nicht vorhanden sind.
  • Das statische registrar erfordert Xcode-Headerdateien, um Anwendungen zu erstellen, was zu MT0091 fehlern führt MT4109 , wenn APIs fehlen.
    • In den meisten Fällen hilft die Aktivierung des verwalteten Linkers (durch Entfernen der verwalteten Bindungen für die neue API), wenn er nicht verwendet wird.
  • Bitcodebuilds (für tvOS und watchOS) können bei der Übermittlung an die App Store fehlschlagen, es sei denn, es wird eine Xcode 9.0+-Toolkette verwendet.

Verwendung des neuen Xcode mit älterem Xamarin.iOS

Dieser Anwendungsfall ist erheblich schwieriger, da Xamarin.iOS die sich ändernden Anforderungen des neuen Xcode nicht vorhersagen kann. Updates von macOS können ebenfalls Probleme verursachen, und ohne Kompatibilitätspatches könnten viele Teile von Xamarin.iOS betroffen sein.

Es gibt eine Reihe von potenziellen Bereichen, in denen Probleme auftreten können, einschließlich:

  • Inkompatibilitäten mit mlaunch:
    • 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 Tooländerungen zur Unterstützung, die eine aktualisierte Xamarin.iOS-Komponente erfordern.

Zusätzlich zu den Regeländerungen fügt Apple den übermittelten Apps häufig zusätzliche Überprüfungen hinzu oder verschärft vorhandene Apps. Einige davon erfordern Änderungen in unseren Tools (z. B. neue Blocklistesymbole). Viele davon werden zuerst von Kunden gefunden, die einreichen, da es keine Ankündigung (oder Liste) der Regeln gibt.

Zusammenfassung

Gehen Sie nach Möglichkeit auf Nummer sicher, indem Sie die Anweisungen von Apple befolgen und mit dem neuesten Xcode, der auf der App Store veröffentlicht wurde, entwickeln und übermitteln.

Verwenden Sie wiederum die neueste Xamarin.iOS-Version. Dadurch werden die neuesten Fehlerbehebungen nachverfolgt, die sich möglicherweise auf übermittelte Anwendungen auswirken und den neuesten Regeländerungen entsprechen.

Wenn dies nicht möglich ist, sollten Sie eine passende ältere Version von Xcode und Xamarin.iOS verwenden. Dies kann eine Zeit lang funktionieren, aber irgendwann wird Apple auf neueren Tools bestehen, also planen Sie entsprechend.