Xcode 27.1 beta: Ihre App im iPhone Duo Simulator

Xcode 27.1 beta (27A9269) erschien am Freitag, dem 18. September 2026, mit dem ersten iOS-27.1-SDK und einem iPhone Duo Gerätetyp für den Simulator, vier Tage nach Xcode 27.0. Das SDK trägt jede iPhone Duo API, die Apples Vorbereitungsleitfaden nennt, das Profil des Gerätetyps definiert die beiden Displays mit 1398 mal 2034 und 2007 mal 2853 Pixeln bei 3x, also 466 mal 678 und 669 mal 951 Punkten, und die Simulator-Runtime ist ein eigener Download, den Xcode bei Bedarf holt. Apples eigene Notes führen drei Dinge auf, die der Simulator noch nicht kann, und eine gegen das 27.1-SDK gelinkte Probe-App, durch die drei Posen in Device Hub geschickt, füllt geschlossen ein Display mit 466 mal 678 Punkten, die Leisten an der hinteren Kante, und offen eines mit 951 mal 669, dort regular in beiden Size Classes, meldet den Falz als Division und Kamera und Statusspalte als Okklusionen und lässt UIScreen.main weiterhin für das äußere Display antworten, während die App auf dem inneren läuft. (Korrigiert am 2. Oktober: Bis dahin stand in diesem Absatz, die Probe-App sehe keine reservierten Regionen; diese Probe-App war als iOS-27.0-App gelinkt worden.)1245613

Das Wichtigste in Kürze

  • Termine und Builds. Apples Releases-Feed datiert Xcode 27.1 beta (27A9269) auf Freitag, den 18. September. xcodebuild -version gibt Xcode 27.1 und Build version 27A9269 aus; die SDKs für iPhoneOS und iPhoneSimulator melden sich beide als iOS 27.1, Build 24A94403; der Swift-Compiler nennt dieselbe Versionszeichenfolge swiftlang-6.4.0.34.1 wie Xcode 27.0 und der Linker dasselbe ld-27037.1. Das xip ist 2.027.292.809 Byte groß, die entpackte App 3,6 GiB, und sie installiert sich neben Xcode 27.0, ohne es zu ersetzen.14 (11. Oktober: Xcode 27.1 RC (27A9275) folgte am 5. Oktober, und App Store Connect nimmt seine Builds neben TestFlight auch für den App Store an.14) (15. Oktober: Xcode 27.1 erschien als Release, Build 27A9275, der Build des RC, und der Eintrag von App Store Connect für diesen Tag nimmt seine Builds für den Store unter diesem Namen an.15)
  • Die Duo-APIs stecken im SDK. Die zehn Namen, die meine Prüfung am 17. September im 27.0-SDK nicht finden konnte, sind im 27.1-SDK alle vorhanden, darunter ArrangementView und reservedRegions(kind:options:layoutDirectionBehavior:) in SwiftUICore, toolbarVerticalBehavior(_:) in SwiftUI sowie UIArrangementViewController, preferredVerticalBarBehavior und verticalBarEdge in UIKit. SwiftUI kennzeichnet sie mit @available(anyAppleOS 27.1, *); die Header von UIKit versehen den Arrangement-Controller und die Methoden für reservierte Regionen mit API_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1)), also mit zwei Plattformen mehr, als die Dokumentationsseiten nennen.4
  • Das Simulator-Profil schreibt die Displaygrößen fest. Der Gerätetyp iPhone Duo (iPhone19,4, Produktklasse V68, Modellnummer A3447) definiert zwei integrierte Displays: primary mit 1398 mal 2034 Pixeln, Scale 3, und primary-1 mit 2007 mal 2853 Pixeln, Scale 3, bei einer nativen Ausrichtung von 270. Durch drei geteilt sind das 466 mal 678 und 669 mal 951 Punkte, wobei der innere Wert genau die Zahl ist, die mein Duo-Beitrag für Entwickler am 10. September aus der Screenshot-Größe in App Store Connect abgeleitet hatte. Das Profil verlangt Runtime 27.1 oder neuer.5
  • Was der Simulator mit einer echten App macht (korrigiert am 2. Oktober). Device Hub bietet drei Posen an, Closed (geschlossen), Book (Buchstellung) und Open (offen), dazu Rotate Right (nach rechts drehen). Eine gegen das 27.1-SDK gelinkte Probe-App bekommt geschlossen das ganze äußere Display, 466 mal 678 Punkte, compact in der Breite, mit Toolbar und Tab-Leiste senkrecht an der hinteren Kante, toolbarVerticalEdge auf trailing und zwei aktiven Okklusionen, nämlich Kamera und Statusspalte. Offen bekommt sie das ganze innere Display, quer als native Ausrichtung mit 951 mal 669 Punkten, regular in beiden Size Classes, wieder mit senkrechten Leisten und einer inaktiven, 40 Punkte breiten Division in der Mitte, die in der Pose Book aktiv wird; gedreht 669 mal 951 mit waagerechten Leisten. UIScreen.main.bounds meldet weiterhin 466 mal 678, während die App auf dem inneren Display läuft. Bis zum 2. Oktober nannte dieser Punkt die Displaygrößen, 466 mal 678 und 951 mal 669, offen mit Safe-Area-Insets von 34 an jeder Seite, eine waagerechte Toolbar und in keiner Pose reservierte Regionen; der Haupttext nannte die Fläche, die die Probe-App gemessen hatte, 80 Punkte schmaler als das Display (geschlossen 386 Punkte, offen 803 innerhalb der Insets von 34 Punkten). All das stammte von einer Probe-App, die versehentlich als iOS-27.0-App gelinkt worden war: Es ist das, was das 27.0-SDK bekommt, und das Update unten enthält beide Builds.61213
  • Was die Beta noch nicht kann. Apples Notes nennen drei Grenzen, den langen ersten Start, fehlendes StandBy und die meisten App-Extensions: „Initial Simulator launch can take several minutes.“ (187708500), „StandBy is unavailable in the iPhone Duo Simulator runtime.“ (187708663) und „Running and debugging most app extensions is unavailable in the iPhone Duo Simulator runtime.“ (187708767). Dazu kommen zwei Known Issues zu Mac Catalyst für alle, deren App auch auf dem Mac erscheint, und eine Sache, die Apple nicht aufführt: Der Download der Runtime scheiterte bei mir im ersten Anlauf mit Download failed. und gelang erst im zweiten.23

Update vom 2. Oktober: Die Probe-App vom September war als iOS-27.0-App gelinkt

Die Simulator-Ergebnisse, die dieser Beitrag vom 21. September bis zum 2. Oktober trug, waren richtig gemessen und falsch beschrieben. Sie zeigen, was der iPhone Duo Simulator mit einer App macht, die gegen das iOS-27.0-SDK gebaut ist. Ich habe sie als das dargestellt, was er mit einer gegen 27.1 gebauten App macht.

Was schiefging. Die Probe-App war eine einzelne Swift-Datei, kompiliert durch einen direkten Aufruf von swiftc -sdk <iPhoneSimulator27.1.sdk>. Dieses Flag erreicht den Compiler. Den Link-Schritt erreicht es nicht; dort griff der Treiber auf das macOS-SDK innerhalb desselben Xcode zurück und schrieb dessen Version ins Binary: LC_BUILD_VERSION las sich als sdk 27.0. Nach dieser Zahl entscheidet iOS, welche Verhaltensweisen eine App bekommt. Am 2. Oktober erneut ausgeführt, gibt derselbe Befehl die Ursache als Warnung aus, „using sysroot for ‘macOS 27.0’ but targeting ‘arm64-apple-ios27.1.0-simulator’“ (Sysroot für macOS 27.0 verwendet, Ziel aber arm64-apple-ios27.1.0-simulator); falls er das im September ebenfalls ausgegeben hat, habe ich es nicht als Ursache von irgendetwas gelesen.13

Wie es auffiel. Am 2. Oktober habe ich eine echte App, gebaut von Xcode 27.1 beta mit demselben SDK, auf demselben Simulator laufen lassen. Ihre Toolbar und Tab-Leiste standen senkrecht an der Seite des äußeren Displays, wo die Leisten der Probe-App quer oben gelegen hatten. otool -l auf beiden Binarys zeigte sdk 27.1 bei der App und sdk 27.0 bei einer Probe-App, die auf dem Septemberweg neu gebaut war. Mit gesetztem SDKROOT neu gebaut, liest sich die Probe-App als sdk 27.1 und verhält sich wie die App. Und eine schlichte Fassung der Probe-App, von Xcode 27.0 selbst gegen das echte iOS-27.0-SDK kompiliert, bekommt dieselben Fenster wie die falsch gestempelte, die Zahlen vom September geben also ein faires Bild eines 27.0-Builds.13

Der neue Lauf. Dieselbe Quelle, auf beide Arten gelinkt, in jeder Pose, auf derselben Xcode 27.1 beta (27A9269) und Runtime (24A94401):13

Pose Gelinkt als SDK 27.0 Gelinkt als SDK 27.1
Closed Fenster 386 mal 678 Punkte neben einer schwarzen Leiste; Leisten waagerecht; toolbarVerticalEdge nil; keine Regionen Fenster 466 mal 678, das ganze Display; Toolbar und Tab-Leiste senkrecht an der hinteren Kante; toolbarVerticalEdge trailing; zwei aktive Okklusionen
Closed, gedreht Fenster 678 mal 386; Leisten waagerecht; keine Regionen Fenster 678 mal 466; compact in beiden Size Classes; Leisten senkrecht; zwei aktive Okklusionen, Kamera und Statusspalte
Open Fenster 871 mal 669; Leisten waagerecht; keine Regionen Fenster 951 mal 669; Leisten senkrecht; eine inaktive Division, eine inaktive und eine aktive Okklusion
Open, gedreht Fenster 669 mal 871; Leisten waagerecht; keine Regionen Fenster 669 mal 951; Leisten waagerecht; toolbarVerticalEdge nil; dieselben drei Regionen, gedreht
Book wie Open wie Open, mit aktiver Division
Book, gedreht wie Open, gedreht wie Open, gedreht, mit aktiver Division

Was zurückgenommen wird. Drei Aussagen, die jeweils für den 27.0-Build zutrafen und für einen mit 27.1 gestempelten Build nicht: dass die Toolbar nie senkrecht zeichnete; dass reservedRegions in keiner Pose etwas zurückgab; und dass der Simulator der App nur den Bildschirm neben der Statusleiste gab. Eine vierte lag beim Grund falsch: Ich schrieb, das geteilte Arrangement „stays side by side even though the container is now taller than it is wide“ (bleibt nebeneinander, obwohl der Container jetzt höher als breit ist), wenn gedreht. Die Arrangement View der Probe-App war innerhalb dieses Bildschirms selbst breiter als hoch, und sie teilt nach ihrer eigenen Form; ein Arrangement, das das gedrehte Display füllt, stapelt übereinander, wie Apples Leitfaden es ankündigt. Eine fünfte: „Das Wichtigste in Kürze“ nannte die Displaygrößen, 466 mal 678 und 951 mal 669, wo der Haupttext die von der Probe-App gemessene Fläche nannte, 80 Punkte schmaler (geschlossen 386 Punkte, offen 803 innerhalb der Insets von 34 Punkten); der 27.0-Build hatte nie das ganze Display.713

Was bestehen bleibt. Alles außerhalb des Simulator-Abschnitts: Termine und Builds, die Symboltabelle des SDK, das Geräteprofil mit seinen Pixel- und Punktgrößen, der Runtime-Download, Apples Known Issues. Innerhalb davon: die Displaygrößen, die Size Classes, die Posen, die Device Hub anbietet, der Absturz durch screenConfig und die Falle mit UIScreen.main, die der neue Lauf unter dem Stempel 27.1 reproduziert hat. Die Notiz vom 24. September, die dieses Update ersetzt, vermutete, die Nullen kämen vom zu frühen Lesen der Regionen, und versprach einen neuen Lauf bei mehreren Scharnierwinkeln. Die Vermutung war falsch: Der 27.0-Build bekommt keine, egal wie lange er fragt. Die Beobachtung, die sie von Molzahn zitierte, gilt: Die korrekt gelinkte Probe-App las in ihren ersten sechs bis neun Auswertungen keine Regionen und danach alle. Die Läufe bei verschiedenen Scharnierwinkeln wurden nicht gemacht.1213

Falls Sie nach diesem Beitrag eine eigene Probe-App gebaut haben, prüfen Sie sie: otool -l <app>/<binary> | grep -A4 LC_BUILD_VERSION. Ein von Xcode gebautes Projekt wird korrekt gestempelt. Eine von Hand kompilierte Datei braucht ein auf das Simulator-SDK exportiertes SDKROOT, bevor swiftc läuft. Das durchgearbeitete Beispiel, bei dem das ans Licht kam, enthält den Dreiervergleich, zusätzlich mit einem Stempel für iOS 26.

Update vom 26. Oktober: Das Telefon ist mit 27.1 erschienen, und die Nummern des Release-SDK

Das iPhone Duo kam am Freitag, dem 23. Oktober, mit iOS 27.1 in die Stores, laut Apples Newsroom und Apples Seite zu den Sicherheitsupdates, die „iOS 27.1“ allein für „iPhone Duo“ führt, ohne veröffentlichte CVE-Einträge; ein Eintrag zu iOS 27.1 erreichte den Releases-Feed nie, eine Release-Notes-Seite zu 27.1 erschien nie, und der Index führt 27 und 27.2. Auf diesem Mac, mit Xcode 27.1 (27A9275), seit dem 15. Oktober das Release, weisen sich die SDKs iPhoneOS und iPhoneSimulator als iOS 27.1, Build 24A94232, aus, eine niedrigere Nummer als die oben festgehaltene 24A94403 der Beta, und die Simulator-Runtime für iOS 27.1 ist 24A94425, die xcrun simctl list runtimes -j mit einem einzigen unterstützten Gerätetyp führt, iPhone Duo; simctl create eines iPhone 16 Pro auf dieser Runtime scheitert mit „Incompatible device.“ iOS 27.2 erschien heute, am 26. Oktober (24B119, mit einem zweiten iOS-27.2-Build, 24B91020, in derselben Minute), und die Notes zum Xcode 27.2 RC (27B48, 19. Oktober) enthalten vier Einträge zum iPhone Duo: „Fixed: In the iPhone Duo simulator, an app using CameraCaptureAccessory can use both displays at the same time without an active camera capture session.“ (Im iPhone-Duo-Simulator kann eine App mit CameraCaptureAccessory beide Displays gleichzeitig nutzen, ohne aktive Kameraaufnahme-Sitzung.) (190155353); „When switching between the inner and outer display of the iPhone Duo simulator, modifier keys such as Shift and Command might stop working.“ (Beim Wechsel zwischen innerem und äußerem Display des iPhone-Duo-Simulators funktionieren Modifikatortasten wie Umschalt und Befehl womöglich nicht mehr.) (189465196), mit dem Workaround „Click with the mouse on the currently visible screen.“ (mit der Maus auf den gerade sichtbaren Bildschirm klicken); und zwei Known Issues, die aus den Betas übernommen sind und jetzt beide unter Device Hub stehen: Screenshots, die „black for up to a few minutes after booting the device“ (bis zu einige Minuten nach dem Booten des Geräts schwarz) sind (187146039), und Bedienungshilfen, die „cannot convey screen content on an iPhone Duo within Device Hub“ (Bildschirminhalte eines iPhone Duo in Device Hub nicht vermitteln können) (187148389). Der Mac-Catalyst-Eintrag zu „APIs specific to iOS 27.1“ (APIs, die nur iOS 27.1 betreffen) ist unverändert. Ein UIKit-Eintrag in den iOS-27.2-Notes nennt 27.1, Standard-Layoutränder von null für UIView; eine Probe-App aus einer einzigen Quelldatei, auf der 27.1-Runtime in einem iPhone-Duo-Simulator ausgeführt, meldet 8 Punkte, wenn ihr LC_BUILD_VERSION mit sdk 27.0 gestempelt ist (die Falle beim Kompilieren von Hand, vor der das Update vom 2. Oktober oben warnt), und null, wenn er mit sdk 27.1 gestempelt ist; die Änderung hängt also am SDK, gegen das das Binary linkt, ebenso wie am Betriebssystem. Der Beitrag zu den Release Notes von iOS 27.2 hat die Tabelle.16

Was steckt in der Beta?

Apples Releases-Feed führt „Xcode 27.1 beta (27A9269)“ am Freitag, dem 18. September, um 10:00 Uhr PT auf und am selben Nachmittag ein „TestFlight Update“; die Release Notes von App Store Connect zu diesem Tag sagen, dass sich ab sofort Apps für internes und externes Testen einreichen lassen, die mit Xcode 27.1 beta gegen das SDK für iOS 27.1 beta oder iPadOS 27.1 beta gebaut wurden: „You can now submit apps built with Xcode 27.1 beta using the SDK for iOS 27.1 beta or iPadOS 27.1 beta for internal and external testing.“1 Der Abschnitt Overview der Release Notes benennt die SDK-Reihe: „Xcode 27.1 beta includes Swift 6.4 and SDKs for iOS 27.1, iPadOS 27, tvOS 27, watchOS 27, macOS 27, and visionOS 27. Xcode 27.1 beta supports on-device debugging in iOS 17 and later, tvOS 17 and later, watchOS 10 and later, and visionOS. Xcode 27.1 beta requires a Mac running macOS Tahoe 26.6 or later.“2 Lesen Sie diese Liste so, wie sie dasteht: iOS ist die einzige Plattform auf 27.1, die SDKSettings.plist des SDK meldet selbst Version 27.1, und App Store Connect nennt dasselbe SDK „iPadOS 27.1 beta“, eine Unstimmigkeit, die auch der Xcode-27-Beitrag mit sich trägt.

Der Download fällt kleiner aus, als die Versionsnummer vermuten lässt. Das xip ist 2.027.292.809 Byte groß, von Apple unter seinem Software-Update-Zertifikat signiert, und entpackt sich zu einer App von 3,6 GiB, genauso groß wie Xcode 27.0; xip --expand in einen Ordner, eine Umbenennung nach /Applications/Xcode-27.1-beta.app und ein darauf zeigendes DEVELOPER_DIR sind die komplette Installation für die Arbeit auf der Kommandozeile. Der erste xcodebuild-Aufruf unter der Beta verbrachte danach rund zwei Minuten damit, die mitgelieferten Pakete CoreTypes.pkg und XcodeSystemResources.pkg von sich aus zu installieren, also den Schritt, den xcodebuild -runFirstLaunch ausdrücklich ausführt, und das zweite dieser Pakete ist es, das den iPhone Duo Gerätetyp ablegt.4 Was die App nicht enthält, ist eine Simulator-Runtime. Die Beta findet die iOS-Runtimes, die auf diesem Mac schon liegen, 27.0 darunter, und keine für 27.1; xcodebuild -downloadPlatform iOS benennt unter der Beta das fehlende Stück als „iOS 27.1 Simulator (24A94401)“ und holt es als Cryptex-Disk-Image über Apples Mobile-Asset-Dienst, während die Disk-Images auf der Downloadseite für Entwickler bei der iOS 18.2 Simulator Runtime enden.34 Der erste Versuch endete in DVTDownloadable: Download Failed mit Error Domain=DVTDownloadableErrorDomain Code=41 "Download failed."; der zweite, mit -buildVersion 24A94401, meldete die Runtime mit 7,85 GB, lief durch, und simctl list runtimes führte danach „iOS 27.1 (27.1 - 24A94401)“ auf. Planen Sie den Plattenplatz dafür ein: Die Runtime ist viermal so groß wie der Xcode-Download.3

Das äußere Display des iPhone Duo Simulators beim ersten Start unter iOS 27.1 beta: ein dunkler Home-Bildschirm mit einem Einstellungssymbol oben links, Uhr und WLAN-Status untereinander am rechten Rand, eine Dock-Kachel rechts und ein Suchen-Button unten rechts

Das äußere Display des iPhone Duo Simulators beim ersten Start, 1398 mal 2034 Pixel: Die Statusanzeigen laufen am rechten Rand entlang, also auf der Seite, auf der Apples Human Interface Guidelines Dynamic Island und Statusleiste beim iPhone Duo verorten.10

Wie bekommen Sie den iPhone-Duo-Simulator?

Drei Schritte, und keiner davon ist ein Download-Button auf einer Webseite. Apple liefert den Simulator nur innerhalb von Xcode aus, und nur innerhalb der 27.1-Beta: Die Notes zur 27.2-Beta enthalten einen Hinweis, der lautet: „Download Xcode 27.1 beta to get the iOS SDK and simulator support for iPhone Duo.“ (Laden Sie Xcode 27.1 beta, um das iOS-SDK und die Simulator-Unterstützung für das iPhone Duo zu erhalten.)8 (11. Oktober: Xcode 27.1 RC (27A9275) ist am 5. Oktober erschienen, und seine Notes führen dieselben Known Issues zum iPhone-Duo-Simulator auf; die Beta ist also nicht mehr das einzige Xcode 27.1, dessen Notes den Duo-Simulator abdecken. Den RC habe ich nicht installiert.14) (15. Oktober: Xcode 27.1 erschien als Release, Build 27A9275, der Build des RC, mit denselben zwei Known Issues zum Duo-Simulator in seinen Notes; installiert habe ich es nicht.15)

  1. Xcode 27.1 beta (27A9269) aus den Entwickler-Downloads, in Apples Releases-Feed auf Freitag, den 18. September datiert. Entpacken Sie das xip, verschieben Sie die App unter einem versionierten Namen wie /Applications/Xcode-27.1-beta.app neben Xcode 27.0 und richten Sie DEVELOPER_DIR für die Arbeit auf der Kommandozeile darauf; die Beta verlangt macOS Tahoe 26.6 oder neuer.12
  2. Die iOS-27.1-Runtime, die das xip nicht enthält. Führen Sie xcodebuild -downloadPlatform iOS mit auf die Beta gesetztem DEVELOPER_DIR aus; der Befehl lädt die 27.1-Runtime, die den Gerätetyp iPhone Duo bootfähig macht, und Apples Notes warnen, dass der erste Start des Simulators zusätzlich zum Download „can take several minutes“ (mehrere Minuten dauern kann). Mein erster Versuch schlug fehl, die Wiederholung klappte; versuchen Sie es also erneut, bevor Sie nach der Ursache suchen.23
  3. Device Hub, wo das Gerät und seine Posen zu finden sind. Fügen Sie das iPhone-Duo-Gerät hinzu oder wählen Sie es aus, booten Sie es und nutzen Sie die Posen-Buttons Closed, Book und Open sowie Rotate Right; simctl hat keinen Befehl für Posen. Die Größen und Screenshots pro Pose weiter unten stammen aus genau diesem Weg.6

Von Apple gibt es keine Browser-Version. Eine Seite, die man unter „iPhone Duo simulator online“ findet, führt nicht Apples iOS-27.1-Runtime aus; was immer sie zeichnet, ist also nicht die Quelle der Size Classes, der reservierten Regionen oder des Verhaltens des äußeren Displays, die hier gemessen wurden. Für einen Layout-Check ohne die Runtime hat Xcode in dieser Beta im Previews-Canvas eine Gruppe Display für das alternative Display bekommen.2

Enthält das 27.1-SDK die Duo-APIs?

Am 17. September habe ich das iOS-27.0-SDK nach den Namen aus Apples Leitfaden „Preparing your app for iPhone Duo“ durchsucht und keinen der zehn gerätespezifischen Namen gefunden. Dieselbe Suche gegen das 27.1-SDK, auf demselben Weg, nämlich als reine Textsuche in den Modul-Interfaces und Headern, findet sie alle. Die Zeilen sind die gesuchten Teilstrings: Sieben davon tragen neun der zehn Namen, weil sich die beiden reservedRegions-Methoden und die beiden axisBehavior-Mitglieder jeweils eine Zeile teilen, und die anderen drei sind die Typen hinter den Namen, also ReservedRegion, ToolbarVerticalBehavior für toolbarVerticalBehavior(_:) und UIVerticalBarBehavior für preferredVerticalBarBehavior:4

Gesuchter Teilstring SwiftUICore-Interface SwiftUI-Interface UIKit-Interface UIKit-Header
ArrangementView 45 0 19 4 Dateien
UIArrangementViewController 0 0 19 4 Dateien
ReservedRegion 16 0 15 3 Dateien
reservedRegions 2 0 5 1 Datei
ToolbarVerticalBehavior 0 5 0 0
UIVerticalBarBehavior 0 0 0 1 Datei
verticalBarEdge 0 0 0 1 Datei
toolbarVerticalEdge 1 0 0 0
axisBehavior 0 2 0 1 Datei
preferredVerticalBarBehavior 0 0 0 1 Datei

Zwei Details dieser Tabelle entscheiden darüber, wie Sie den Code schreiben. Die SwiftUI-Typen liegen in SwiftUICore, dem Modul, das import SwiftUI re-exportiert, ein gewöhnlicher Import findet sie also; und die Verfügbarkeitsattribute widersprechen der Dokumentation, was die Plattformen angeht. Das SwiftUICore-Interface deklariert ArrangementView und das SwiftUI-Interface toolbarVerticalBehavior(_:), beide unter @available(anyAppleOS 27.1, *), Apples Kurzform für jede Plattform in dieser Version, während UIArrangementViewController.h und die reservedRegionsOfKind:-Methoden in UIView.h API_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1)) mit API_UNAVAILABLE(watchos) tragen; in UIVerticalBarEdge.h tragen das Enum und das Trait verticalBarEdge dasselbe Paar, während die Fälle Leading und Trailing API_AVAILABLE(ios(27.1)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos, tvos) tragen. Apples Dokumentationsseiten führen für alle fünf nur iOS 27.1 und iPadOS 27.1 auf, als Beta markiert.47 Schreiben Sie gegen iOS und lassen Sie sich den Rest vom Compiler sagen.

Die drei Namen aus dem Leitfaden, die schon im 27.0-SDK lagen, sind unverändert: presentationPlacement(_:) sitzt weiterhin unter @available(anyAppleOS 27.0, *), backgroundExtensionEffect() ist seit iOS 26 da, und von den beiden ToolbarItemPlacement-Fällen, die der Leitfaden nennt, sitzt topBarPinnedTrailing unter @available(iOS 27.0, visionOS 27.0, *), während cancellationAction über die Verfügbarkeit des Typs hinaus keine eigene trägt.4

Was sagt das Simulator-Profil über die beiden Displays?

Der Gerätetyp, den Apple für die Beta installiert, iPhone Duo.simdevicetype, ist ein schlichtes Bundle unter /Library/Developer/CoreSimulator/Profiles/DeviceTypes, und seine beiden Property-Lists beantworten Fragen, die das Datenblatt offengelassen hatte.5

profile.plist liefert die Identität: Modellbezeichner iPhone19,4, Produktklasse V68, ein Alias com.apple.CoreSimulator.SimDeviceType.V68, minRuntimeVersion 27.1 und eine Regel, das Gerät für Runtimes ab 27.1 standardmäßig anzulegen. capabilities.plist liefert die Hardware: Modellnummer A3447, HomeButtonType 2, DeviceSupportsDynamicIsland true, DeviceSupportsEnhancedMultitasking false, IsLargeFormatPhone true, ein CompatibleDeviceFallback von iPhone18,3, einen Geräte-Eckenradius von 59 und ein displays-Array mit zwei integrierten und drei virtuellen Einträgen.5

Display im Profil Pixel Scale Punkte Native Ausrichtung Eckenradien Farbraum
primary („LCD“, Bildschirm 1) 1398 mal 2034 3 466 mal 678 0 8, 59, 8, 59 P3
primary-1 („LCD-1“, Bildschirm 3) 2007 mal 2853 3 669 mal 951 270 55 an allen vieren sRGB

Die erste Zeile ist das äußere Display und deckt sich Pixel für Pixel mit Apples Datenblatt. Die zweite ist das innere Display, und seine Pixelzahl ist die Screenshot-Größe aus App Store Connect, 2007 mal 2853, und nicht die 1878 mal 2670 des Panels: Der Simulator rendert das innere Display mit 669 mal 951 Punkten bei 3x, also genau die Rechnung, die mein Duo-Beitrag für Entwickler am 10. September angestellt und ausdrücklich als Schlussfolgerung gekennzeichnet hatte. Apples eigenes Profil trägt die Zahl jetzt. Die native Ausrichtung von 270 Grad sagt, dass das innere Display quer nativ ist, 951 Punkte breit und 669 hoch, wenn das Telefon offen liegt, was zu Apples Maßen für das geöffnete Gerät passt. Die beiden übrigen Zahlen sind Simulatorwerte und keine Hardwarewerte: Beide Displays stehen mit 460 Pixeln pro Zoll und 60 Hz im Profil, während das Datenblatt dem inneren Panel 430 ppi gibt, hdpi ist also als Platzhalter zu lesen.5

Das Profil liefert auch die Formen mit. Jedes Display verweist auf eine Framebuffer-Maske, ein PDF der sichtbaren Fläche. Die Maske des äußeren Displays hat asymmetrische Ecken, im Profil 8 an der einen Längsseite und 59 an der anderen, nach meiner Lesart liegt der kleine Radius an der Seite, die auf das mittige Scharnier trifft, das Apples Design-Leitfaden beschreibt; die Maske des inneren Displays ist ein schlichtes abgerundetes Rechteck mit dem Profilwert 55 und ohne Aussparung für die Frontkamera, die Verdeckung durch die Kamera kommt also zur Laufzeit aus der API für reservierte Regionen und nicht aus der Form des Framebuffers.510

Was zeigt der Simulator?

Das Gerät bootet geschlossen. Beim ersten Start zeigt das äußere Display den Home-Bildschirm, der Framebuffer des inneren Displays ist an, aber schwarz, und simctl io enumerate führt beide integrierten Bildschirme unter den Namen aus dem Profil auf, primary mit 1398 mal 2034 und primary-1 mit 2007 mal 2853, neben den üblichen virtuellen.6 Die Posen leben in Device Hub. Bei ausgewähltem Duo-Gerät zeigt dessen Fenster Rotate Right, Closed, Book und Open als Buttons, die sich über die Accessibility-API drücken lassen, und genau so ist alles in diesem Abschnitt entstanden; simctl hat keinen Befehl für Posen.6

Die Probe-App ist eine SwiftUI-App aus einer einzigen Datei: eine Tab View mit einem Navigation Stack und fünf Toolbar-Elementen darin, eine Anzeige für Geometrie, Size Classes, den Umgebungswert toolbarVerticalEdge, das Scharnier und die reservierten Regionen beider Arten mit includeInactive, dazu eine ArrangementView im geteilten Stil. Sie liest die Regionen bei jeder Auswertung ihres Body und wertet einmal pro Sekunde neu aus. Die Zahlen unten stammen aus dem neuen Lauf vom 2. Oktober, gelinkt gegen das 27.1-SDK; die Läufe vom September, versehentlich als 27.0 gelinkt, folgen unter einer eigenen Überschrift.13

Gelinkt gegen das 27.1-SDK

Closed. Die App bekommt das ganze äußere Display: Ihr Fenster misst 466 mal 678 Punkte, compact in der Breite und regular in der Höhe. Toolbar und Tab-Leiste stehen an der hinteren Kante unter der Uhr, toolbarVerticalEdge steht auf trailing, und das UIKit-Trait verticalBarEdge liest sich als Rohwert 2. Der Inhalt im Navigation Stack misst 382 mal 562 Punkte, mit Safe-Area-Insets von 82 oben, 34 unten und 84 an der hinteren Seite, und diese 84 sind die Leiste. Gemeldet werden zwei Okklusionen, beide aktiv: eine 37 Punkte im Quadrat, wo die äußere Kamera sitzt, und eine mit 84 mal 170, die Kamera und Statusspalte oberhalb der Leisten abdeckt. Eine Division meldet dieses Display nicht. Auf die Seite gedreht misst es 678 mal 466, compact in beiden Size Classes, mit den Leisten weiterhin an der hinteren Kante.13

Die Probe-App auf dem äußeren Display des iPhone Duo Simulators, gelinkt gegen das 27.1-SDK: Inhaltsgröße 382 mal 562 Punkte, Size Classes compact und regular, toolbarVerticalEdge trailing, Scharnier geschlossen, zwei aktive Okklusionen, ein geteiltes Arrangement übereinander, und am rechten Rand eine Spalte mit Uhr und WLAN-Status, vier Toolbar-Buttons und drei Tab-Buttons

Closed, 27.1-SDK: das ganze Display mit 466 mal 678 Punkten, die Leisten an der hinteren Kante.

Open. Die App wechselt in ihrer nativen Querlage auf das innere Display: ein Fenster mit 951 mal 669 Punkten, regular in beiden Size Classes, die Leisten weiterhin senkrecht an der hinteren Kante. Der Inhalt misst 867 mal 553, mit denselben drei Insets. Drei Regionen kommen zurück. Eine 40 Punkte breite Division läuft über die volle Höhe durch die Mitte des Bildschirms, von x 455 bis 495, mit Rändern von 20 Punkten auf jeder Seite, und sie ist inaktiv: Das Telefon liegt flach. Eine inaktive Okklusion mit 58 mal 37 markiert die innere Kamera, die laut Apples Guidelines „stays hidden until the camera is active.“ (verborgen bleibt, bis die Kamera aktiv ist).10 Eine aktive Okklusion mit 84 mal 120 deckt die Statusspalte ab. Das geteilte Arrangement stellt seine beiden Bereiche nebeneinander und teilt die Breite gleichmäßig.13

Die Probe-App auf dem inneren Display in der Pose Open, gelinkt gegen das 27.1-SDK: Inhaltsgröße 867 mal 553 Punkte, Size Classes regular und regular, toolbarVerticalEdge trailing, Scharnier ganz geöffnet bei 180 Grad, eine inaktive Division bei x 455 mit 40 Punkten Breite, eine inaktive und eine aktive Okklusion, ein geteiltes Arrangement nebeneinander, und die Leisten in einer Spalte am rechten Rand

Open, 27.1-SDK: 951 mal 669 Punkte, der Falz gemeldet als inaktive Division durch die Mitte.

Book. Die Pose Book in Device Hub meldet das Scharnier als teilweise geöffnet, bei 127 Grad. Das Fenster ändert seine Größe nicht. Was sich ändert, ist die Division: derselbe Rahmen, jetzt aktiv. Das geteilte Arrangement reagiert, indem es seine Trennlinie auf den Falz legt und das 40 Punkte breite Band leer lässt, sodass der primäre Bereich bei x 455 endet und der sekundäre bei 495 beginnt. Ein in dieser Pose präsentiertes Sheet rückt aus der Mitte in die vordere Hälfte.13

Die Probe-App auf dem inneren Display in der Pose Book, gelinkt gegen das 27.1-SDK: Scharnier teilweise geöffnet bei 127 Grad, eine aktive Division, und die beiden Bereiche des geteilten Arrangements, getrennt durch ein leeres Band in der Mitte des Bildschirms

Book, 27.1-SDK: Die Division ist aktiv, und das geteilte Arrangement lässt den Falz frei.

Gedreht. Rotate Right bei geöffnetem Telefon ergibt ein Fenster mit 669 mal 951 Punkten, weiterhin regular in beiden Size Classes, und die Leisten werden wieder waagerecht: toolbarVerticalEdge ist nil, die Toolbar sitzt oben neben der Uhr, die Tab-Leiste schwebt unten. Das deckt sich mit Apples Design-Leitfaden, der auf dem inneren Display im Hochformat „standard horizontal bars“ (die üblichen waagerechten Leisten) beibehält.10 Dieselben drei Regionen werden im gedrehten Koordinatenraum gemeldet: Die Division ist jetzt ein waagerechtes, 40 Punkte hohes Band quer durch die Mitte, inaktiv im flachen Zustand und aktiv in Book. Die Arrangement View der Probe-App, innerhalb dieses Bildschirms breiter als hoch, bleibt nebeneinander.13

Die Probe-App auf dem ins Hochformat gedrehten inneren Display, gelinkt gegen das 27.1-SDK: Inhaltsgröße 669 mal 734 Punkte, Size Classes regular und regular, toolbarVerticalEdge nil, eine waagerechte Toolbar oben neben der Uhr, eine schwebende Tab-Leiste unten, eine inaktive Division und zwei Okklusionen

Offen und gedreht, 27.1-SDK: waagerechte Leisten, der Falz jetzt ein waagerechtes Band.

Zwei Dinge gelten in jeder Pose. Die Regionen kommen spät: Bei jedem Start lasen die ersten sechs bis neun Auswertungen des Body der Probe-App keine, und jede danach las alle, eine View, die einmal fragt, beim ersten Layoutdurchlauf, bekommt also eine leere Antwort. Sven-Eric Molzahns DuoProbe-Fixture hat genau das am 20. September dokumentiert („reservedRegions is empty on the first geometry evaluation and populated on a later one“, also leer bei der ersten Geometrieauswertung und bei einer späteren gefüllt), zusammen mit dem 40 Punkte breiten Band, und SwiftLees Simulator-Leitfaden vom 22. September ergänzt, „Holding Option ⌥ reveals a slider that you can use to control the hinge angle of the device with precision“ (wer Option ⌥ gedrückt hält, bekommt einen Schieberegler, mit dem sich der Scharnierwinkel des Geräts präzise steuern lässt), den ich nicht benutzt habe.12 Und UIScreen.main.bounds antwortet mit 466 mal 678 Punkten, dem äußeren Display, während die App auf dem inneren läuft, genau die Falle, vor der Apples Leitfaden warnt, wenn er sagt, Layoutberechnungen seien „based on your scene or containing view’s bounds rather than screen dimensions“ anzustellen: Der Hauptbildschirm ist nicht der Bildschirm, auf dem Sie sind. Der eigene Bildschirm der Window Scene meldet das Display, auf dem die App tatsächlich läuft.713

Ein Weg zu den anderen Posen funktioniert nicht. simctl io screenConfig kann einen Bildschirm ausschalten, und das äußere Display auszuschalten, während das innere anblieb, öffnete das Telefon nicht; es brachte die System-Shell des Simulators zum Absturz, simctl launch scheiterte danach mit „The system shell probably crashed.“, und es brauchte einen Neustart. Die Posen leben im Fenster von Device Hub.6

Gelinkt gegen das 27.0-SDK

Das sind die Zahlen, die dieser Abschnitt bis zum 2. Oktober trug, gemessen am 19. und 20. September mit einer Probe-App, die einen Navigation Stack und keine Tab View hatte, und am 2. Oktober mit der aktuellen erneut gemessen. Sie beschreiben, was eine mit Xcode 27.0 gebaute App auf diesem Simulator bekommt.613

Geschlossen ist das Fenster auf einem 466 Punkte breiten Display 386 Punkte breit: Das System behält die 80 Punkte breite Leiste für sich, zeichnet dort Uhr und Status auf Schwarz, und die Toolbar der App liegt quer oben. Offen misst das Fenster 871 mal 669, rechts fehlen dieselben 80 Punkte, und die Safe-Area-Insets betragen 34 an jeder Seite. Offen und gedreht gehen die 80 Punkte stattdessen oben ab. In jeder Pose entsprechen die Size Classes denen des 27.1-Builds, toolbarVerticalEdge ist nil, verticalBarEdge liest sich als Rohwert 0, und beide Abfragen nach reservierten Regionen liefern leere Arrays, auch mit inaktiven Regionen und egal wie lange die Probe-App weiterfragt; Book ist von Open nicht zu unterscheiden.

Die Probe-App vom September auf dem äußeren Display des iPhone Duo Simulators, gelinkt als SDK 27.0: oben rechts eine Toolbar mit Teilen-Symbol, Auslassungspunkten für weitere Aktionen und einem Häkchen, darunter die Werte Größe 386 mal 510 Punkte, Size Classes compact und regular, toolbarVerticalEdge nil, divisions 0 und occlusions 0, ein geteiltes Arrangement mit der primären Ansicht über der sekundären, und Uhr sowie WLAN-Status untereinander auf einer schwarzen Leiste am rechten Rand

Closed, gelinkt als 27.0: Die App endet an der Leiste, und ihre Toolbar bleibt waagerecht.

Die Probe-App vom September auf dem inneren Display in der Pose Open, gelinkt als SDK 27.0: Größe 803 mal 515 Punkte, Size Classes regular und regular, toolbarVerticalEdge nil, divisions 0 und occlusions 0, ein geteiltes Arrangement mit primärer und sekundärer Ansicht nebeneinander, die Toolbar oben rechts, und Uhr sowie WLAN-Status in einer schwarzen Leiste am rechten Rand

Open, gelinkt als 27.0: regular in beiden Dimensionen, die Leiste vom System behalten.

Die Probe-App vom September auf dem ins Hochformat gedrehten inneren Display, gelinkt als SDK 27.0: Größe 669 mal 703 Punkte, Size Classes regular und regular, das geteilte Arrangement nebeneinander, und Uhr sowie WLAN-Status in einem schwarzen Band über die gesamte Oberkante

Gedreht, gelinkt als 27.0: Das Band über die Oberkante gehört dem System.

Was die Beta noch nicht kann

Apple führt in den Notes der Beta selbst unter Simulator, Known Issues, drei Grenzen auf, den langen ersten Start, fehlendes StandBy und die meisten App-Extensions: „Initial Simulator launch can take several minutes.“ (187708500), „StandBy is unavailable in the iPhone Duo Simulator runtime.“ (187708663) und „Running and debugging most app extensions is unavailable in the iPhone Duo Simulator runtime.“ (187708767).2 Die StandBy-Grenze zählt für alle, deren Widgets oder Live Activities dafür gedacht sind: Apples Ankündigung sagt, das Telefon „enters StandBy on either the outer or inner display“ und nennt es einen „hub for widgets“, der Duo-Beitrag für Entwickler beschreibt, was dort erscheint, und solange keine spätere Beta die Grenze aufhebt, bleibt StandBy auf diesem Gerät etwas, das Sie auf Hardware prüfen müssen (15. Oktober: Die Notes des Release führen die Einschränkung weiterhin15).11

Zwei weitere stehen unter Mac Catalyst, Known Issues, und sie treffen jede App, die diese APIs übernimmt und auch für den Mac baut: „Projects that use APIs specific to iOS 27.1 show compile errors when building for Mac Catalyst (“undeclared identifier”, “not found”, “has no member”, “cannot find”, etc). (185924957)“, mit Apples Workaround #if !targetEnvironment(macCatalyst) in Swift oder #if !TARGET_OS_MACCATALYST in Objective-C, und „Projects that target iOS 27.1 show no Mac Catalyst run destination available. (187046347)“, mit „Add a Mac Catalyst 27.0 minimum deployment in target settings.“ als Workaround.2 Die Notes der Xcode 27.2 beta ergänzen ein drittes aus der Gegenrichtung: „macOS, watchOS, tvOS, and visionOS SDKs in Xcode 27.2 incorrectly report 27.1 as a valid deployment target,“ und „Mac Catalyst builds with a 27.1 or 27.2 deployment target may be unable to use newly introduced API.“ (187160501).8

Was ich diese Woche tun würde

  1. Installieren Sie die Beta neben Xcode 27.0 statt darüber: das xip entpacken, die App umbenennen und DEVELOPER_DIR für Builds auf der Kommandozeile darauf zeigen lassen; nichts in den Notes der Beta ändert die 27.0-Toolchain, und Compiler wie Linker tragen identische Versionszeichenfolgen.4
  2. Starten Sie den Download der Runtime, bevor Sie sie brauchen, mit xcodebuild -downloadPlatform iOS unter der Beta, und wiederholen Sie ihn, wenn er scheitert; erst die Runtime macht den iPhone Duo Gerätetyp bootfähig, und Apple warnt, dass der erste Start obendrein Minuten dauert.23
  3. Bauen Sie einmal gegen das 27.1-SDK mit eingeschlossenem Mac-Catalyst-Target und lesen Sie die beiden Diagnosen, die Apple nennt, bevor Sie entscheiden, ob Sie die neue API mit #if !targetEnvironment(macCatalyst) einzäunen oder das Catalyst-Minimum auf 27.0 heben.2
  4. Nehmen Sie die Zahlen aus dem Profil als die Größen, gegen die Sie previewen und testen: 466 mal 678 Punkte geschlossen, 669 mal 951 offen, mit quer nativem inneren Display. Der Previews-Eintrag der Beta ergänzt eine Gruppe Display in der Auswahl der Canvas-Overrides, „for previewing content on a device’s alternative display.“ (182598534)25
  5. Lesen Sie die reservierten Regionen dort, wo sie erneut gelesen werden: im Body der View über den Geometry Proxy oder bei jeder Geometrieänderung, nie einmalig beim ersten Layout. reservedRegions(kind:options:layoutDirectionBehavior:) mit .includeInactive gab in den ersten sechs bis neun Auswertungen der Probe-App nichts zurück und bei jeder späteren jede Region, die das Display hat (geschlossen Kamera und Statusspalte; offen Falz, innere Kamera und Statusspalte), ein aus dem ersten Durchlauf zwischengespeicherter Wert ist also für die gesamte Lebensdauer der View ein leeres Array. Und bevor Sie irgendetwas davon trauen, prüfen Sie, ob der Build mit dem 27.1-SDK gestempelt ist: otool -l <app>/<binary> | grep -A4 LC_BUILD_VERSION.713

Häufige Fragen

Gibt es den iPhone Duo Simulator in Xcode 27.1 beta?

Ja. Die Beta installiert einen Gerätetyp iPhone Duo, com.apple.CoreSimulator.SimDeviceType.iPhone-Duo, dessen Profil eine iOS-27.1-Runtime verlangt, die Xcode separat über xcodebuild -downloadPlatform iOS lädt. Apples Notes warnen, dass der erste Start „can take several minutes“ (mehrere Minuten dauern kann) und dass StandBy und die meisten App-Extensions in dieser Runtime nicht verfügbar sind.235

Wie bekomme ich den iPhone-Duo-Simulator?

Installieren Sie Xcode 27.1 beta, laden Sie unter der Beta mit xcodebuild -downloadPlatform iOS die iOS-27.1-Runtime und wählen Sie in Device Hub das iPhone-Duo-Gerät, wo die Posen als Buttons bereitstehen. Die 27.2-Beta enthält ihn nicht; Apples Notes zur 27.2 verweisen für „the iOS SDK and simulator support for iPhone Duo.“ (das iOS-SDK und die Simulator-Unterstützung für das iPhone Duo) auf die 27.1-Beta.238 (11. Oktober: Xcode 27.1 RC (27A9275) ist am 5. Oktober erschienen, und seine Notes führen dieselben Known Issues zum iPhone-Duo-Simulator auf; die Beta ist also nicht mehr das einzige Xcode 27.1, dessen Notes den Duo-Simulator abdecken. Den RC habe ich nicht installiert.14) (15. Oktober: Xcode 27.1 erschien als Release, Build 27A9275, der Build des RC, mit denselben zwei Known Issues zum Duo-Simulator in seinen Notes; installiert habe ich es nicht.15)

Gibt es einen iPhone-Duo-Simulator online?

Nicht von Apple. Der Simulator steckte bis zum RC nur in Xcode 27.1 beta und läuft auf Apples iOS-27.1-Runtime; eine Browserseite unter diesem Namen zeichnet etwas anderes. Für einen schnellen Layout-Check bietet der Previews-Canvas der Beta eine Gruppe Display für das alternative Display.2 (11. Oktober: Xcode 27.1 RC (27A9275) ist am 5. Oktober erschienen, und seine Notes führen dieselben Known Issues zum iPhone-Duo-Simulator auf; die Beta ist also nicht mehr das einzige Xcode 27.1, dessen Notes den Duo-Simulator abdecken. Den RC habe ich nicht installiert.14) (15. Oktober: Xcode 27.1 erschien als Release, Build 27A9275, der Build des RC, mit denselben zwei Known Issues zum Duo-Simulator in seinen Notes; installiert habe ich es nicht.15)

Wie installiere ich Xcode 27.1 beta neben Xcode 27?

Entpacken Sie das xip mit xip --expand, verschieben Sie die entstandene App auf einen versionierten Namen wie /Applications/Xcode-27.1-beta.app und setzen Sie DEVELOPER_DIR für xcodebuild, xcrun und swiftc auf deren Ordner Contents/Developer. Die Beta verlangt macOS Tahoe 26.6 oder neuer, dieselbe Untergrenze wie Xcode 27.0.24

Wie groß ist das innere Display des iPhone Duo in Punkten?

669 mal 951 Punkte, laut dem Geräteprofil des Simulators, das das innere Display als 2007 mal 2853 Pixel bei Scale 3 mit quer nativer Ausrichtung definiert; das äußere Display hat 466 mal 678 Punkte aus 1398 mal 2034 Pixeln bei Scale 3.5

Ändert Xcode 27.1 beta das iOS-27.0-SDK oder die Xcode-27-Toolchain?

Nein. Compiler und Linker von Swift melden dieselben Versionszeichenfolgen wie Xcode 27.0, und die Release Notes der Beta haben drei Abschnitte, Mac Catalyst, Previews und Simulator, von denen keiner die Toolchain berührt. Das iOS-27.1-SDK kommt hinzu und weist sich im Geräte- wie im Simulator-SDK als Build 24A94403 aus.24

Wann erscheint das iPhone Duo, und mit welchem System?

Am 23. Oktober, mit iOS 27.1, laut Apples Meldung vom 16. September: „When iPhone Duo becomes available on October 23, it will run iOS 27.1.“9 (26. Oktober: So kam es, und iOS 27.1 erschien auf keinem anderen Gerät; Apples Sicherheitsseite führt es allein für das iPhone Duo, und die 27.1-Simulator-Runtime auf diesem Mac akzeptiert nur den Gerätetyp iPhone Duo.16)

Verwandtes auf dieser Website: Der Duo-Beitrag für Entwickler hat die Zahlen aus dem Datenblatt und die API-Liste, die dieser Beitrag gegen das SDK prüft, der Beitrag zum Design für das iPhone Duo liest Apples Design-Leitfaden, die Checkliste zum skalierbaren iPhone ist die Layout-Arbeit, in die die Zahlen des Profils fließen, der Xcode-27-Hub trägt die datierten Beta-Abschnitte, der Beitrag zu den Xcode-27-Buildfehlern behandelt die Toolchain, die diese Beta unangetastet lässt, und der Beitrag zu den Release Notes von iOS 27 verfolgt die 27.x-Builds.

Quellen


  1. Apple, Releases, RSS-Feed abgerufen am 19. September 2026: „Xcode 27.1 beta (27A9269)“ mit dem Datum Fri, 18 Sep 2026 10:00:00 PDT und „TestFlight Update“ mit dem Datum Fri, 18 Sep 2026 14:00:00 PDT. Apple, Release Notes von App Store Connect, 18. September 2026, TestFlight-Eintrag, vollständig zitiert. ↩↩↩↩

  2. Apple, Xcode 27.1 Beta Release Notes, am 19. September 2026 über den JSON-Endpunkt der Dokumentation abgerufen: Overview, zitiert; Mac Catalyst, Known Issues 185924957 und 187046347 mitsamt ihren Workarounds, zitiert; Previews, New Features 182598534, zitiert; Simulator, Known Issues 187708500, 187708663 und 187708767, zitiert. Weitere Abschnitte enthalten die Notes nicht. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  3. Runtime-Download des Autors auf macOS 26.6.2 (25G83) am 19. September 2026, mit DEVELOPER_DIR auf Xcode 27.1 beta: xcodebuild -downloadPlatform iOS gab für die installierte 27.0-Runtime „iOS is already downloaded.“ aus und dann „Downloading iOS 27.1 Simulator (24A94401) (arm64)“, gefolgt von DVTDownloadable: Download Failed. Downloadable: DVTDownloadable(identifier: 0a4e7582-0061-5907-bea9-fe234c1f9392, version: 27.1.0.1, category: simulator, contentType: cryptexDiskImage, downloadMethod: mobileAsset, platform: com.apple.platform.iphoneos) und Error Domain=DVTDownloadableErrorDomain Code=41 "Download failed."; der zweite Anlauf, xcodebuild -downloadPlatform iOS -buildVersion 24A94401, gab „Downloading iOS 27.1 Simulator (24A94401) (arm64): 0.0% (66 kB of 7.85 GB)“ aus und lief durch, woraufhin xcrun simctl list runtimes „iOS 27.1 (27.1 - 24A94401) - com.apple.CoreSimulator.SimRuntime.iOS-27-1“ führte. Apples Downloadseite für Entwickler, am selben Tag angemeldet nach „Simulator Runtime“ durchsucht, führt keine Disk-Images, die neuer wären als die iOS 18.2 Simulator Runtime. ↩↩↩↩↩↩↩

  4. Untersuchung von /Applications/Xcode-27.1-beta.app durch den Autor am 19. September 2026: xcodebuild -version gibt Xcode 27.1 und Build version 27A9269 aus; xcrun --sdk iphoneos --show-sdk-version und xcrun --sdk iphonesimulator --show-sdk-version geben beide 27.1 aus; die SystemVersion.plist beider SDKs trägt ProductBuildVersion 24A94403 und ProductVersion 27.1; xcrun swift --version gibt Apple Swift version 6.4 (swiftlang-6.4.0.34.1 clang-2100.3.34.1) aus und xcrun ld -v gibt ld-27037.1 aus, dieselben Versionszeichenfolgen, die Xcode 27.0 (27A266a) auf demselben Mac ausgibt. Xcode_27.1_beta.xip ist 2.027.292.809 Byte groß; pkgutil --check-signature meldet „signed Apple Software“ mit einer Zertifikatskette für Software-Updates; du -sk meldet für die entpackte App 3.813.336 KB gegenüber 3.804.188 KB für Xcode 27.0 (27A266a), entpackt unter /Applications/Xcode-27.app. Die Trefferzahlen sind grep -c für den Teilstring in SwiftUICore.swiftmodule/arm64e-apple-ios.swiftinterface, SwiftUI.swiftmodule/arm64e-apple-ios.swiftinterface und UIKit.swiftmodule/arm64e-apple-ios.swiftinterface im iPhoneOS-SDK sowie Dateizahlen aus grep -rl über UIKit.framework/Headers; die Verfügbarkeitsattribute stammen aus denselben Dateien: @available(anyAppleOS 27.1, *) über public struct ArrangementView< im SwiftUICore-Interface und über der extension SwiftUICore.View, die func toolbarVerticalBehavior deklariert, API_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1)) gefolgt von API_UNAVAILABLE(watchos) in UIArrangementViewController.h, an beiden reservedRegionsOfKind:-Deklarationen in UIView.h sowie am Enum UIVerticalBarEdge und am Trait verticalBarEdge, und API_AVAILABLE(ios(27.1)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos, tvos) an dessen Fällen UIVerticalBarEdgeLeading und UIVerticalBarEdgeTrailing; @available(anyAppleOS 27.0, *) über func presentationPlacement; @available(iOS 27.0, visionOS 27.0, *) über public static let topBarPinnedTrailing und kein Attribut über public static let cancellationAction. Erster Start: Das erste xcodebuild -version unter dem DEVELOPER_DIR der Beta lief über ein Timeout von zwei Minuten hinaus, und /var/log/install.log verzeichnet, wie xcodebuild am 19. September um 16:01:54 eine PackageKit-Installation einreiht, die CoreTypes.pkg und XcodeSystemResources.pkg aus Xcode-27.1-beta.app/Contents/Resources/Packages entpackt und um 16:03:04 endet; xcodebuild -checkFirstLaunchStatus lieferte danach 0. ↩↩↩↩↩↩↩↩↩↩↩

  5. /Library/Developer/CoreSimulator/Profiles/DeviceTypes/iPhone Duo.simdevicetype, installiert von Xcode 27.1 beta und am 19. September 2026 mit plutil -convert xml1 gelesen. profile.plist: modelIdentifier iPhone19,4, productClass V68, aliases com.apple.CoreSimulator.SimDeviceType.V68, minRuntimeVersion 27.1, createByDefaultForRuntimeVersions versionMin 27.1. capabilities.plist: ModelNumber A3447, ThinningProductType iPhone19,4, CompatibleDeviceFallback iPhone18,3, DeviceCornerRadius 59, HomeButtonType 2, DeviceSupportsDynamicIsland true, DeviceSupportsEnhancedMultitasking false, IsLargeFormatPhone true; ScreenDimensionsCapability main-screen-width 1398, main-screen-height 2034, main-screen-pitch 460, main-screen-scale 3; displays: primary (displayName LCD, screenID 1, width 1398, height 2034, scale 3, hdpi und vdpi 460, refreshRate 60, nativeOrientation 0, cornerRadiusUL 8, UR 59, LL 8, LR 59, colorspace P3) und primary-1 (displayName LCD-1, screenID 3, width 2007, height 2853, scale 3, hdpi und vdpi 460, refreshRate 60, nativeOrientation 270, alle vier Eckenradien 55, colorspace sRGB), dazu external-0 (TVOut), wireless0 (carPlay) und resizable (scene). Die beiden PDFs hinter framebufferMaskIdentifier wurden mit qlmanage gerendert und angesehen; Apples Datenblattwerte für die Panels stehen im Duo-Beitrag für Entwickler. xcrun simctl list devicetypes führt unter der Beta „iPhone Duo (com.apple.CoreSimulator.SimDeviceType.iPhone-Duo)“. ↩↩↩↩↩↩↩↩↩

  6. Läufe des Autors auf macOS 26.6.2 (25G83) am 19. und 20. September 2026. Gerät: simctl create "Duo-27.1" com.apple.CoreSimulator.SimDeviceType.iPhone-Duo com.apple.CoreSimulator.SimRuntime.iOS-27-1, gebootet mit simctl boot und simctl bootstatus -b (rund eine Minute auf diesem Mac); simctl io <udid> enumerate führt zwei Ports com.apple.framebuffer.display der Display-Klasse 0 mit 1398 mal 2034 und 2007 mal 2853 auf und unter Connected Screens „LCD-1“ mit dem Gerätenamen primary-1, Screen-ID 3, Pixelgröße {2007, 2853}. Probe-App: DuoProbe, eine SwiftUI-App aus einer Datei, gebaut mit xcrun swiftc -sdk <iPhoneSimulator.sdk> -target arm64-apple-ios27.1-simulator -parse-as-library unter Xcode 27.1 beta, installiert mit simctl install, gestartet mit simctl launch --console-pty, Screenshots mit simctl io <udid> screenshot --mask=alpha --display=primary und --display=primary-1. Konsolenzeilen der geschlossenen Pose: DUOPROBE screen=(466.0, 678.0) scale=3.0 idiom=0 model=iPhone name=Duo-27.1; DUOPROBE size=386x510 h=compact v=regular verticalEdge=nil safe=EdgeInsets(top: 134.0, leading: 0.0, bottom: 34.0, trailing: 0.0); DUOPROBE uikit bounds=(354.0, 44.0) divisions=0 occlusions=0 verticalBarEdge=UIVerticalBarEdge(rawValue: 0); keine Zeilen division[ oder occlusion[. Der Screenshot mit --display=primary-1 ist schwarz. Bildschirmstrom: simctl io <udid> screenConfig --display=primary power off gab „Screen 1 power state set to off“ aus; das nächste simctl launch scheiterte mit FBSOpenApplicationServiceErrorDomain Code 5, „The system shell probably crashed.“; simctl shutdown und boot stellten das Gerät wieder her. Posenläufe am 20. September in zwei Serien, beide mit Druck auf Rotate Right, Closed, Book und Open über die Accessibility-API mit der Aktion AXPress auf den Buttons, die Device Hub für das ausgewählte Gerät anbietet, und beide getrieben vom Kommandozeilenwerkzeug simctl der 27.2 beta, mit dem DEVELOPER_DIR, das diese Skripte setzen, gegen Runtime, Gerätetyp und Device Hub der 27.1 beta. In der ersten Serie lief die Probe-App aus der vorherigen Pose noch, als der nächste Button gedrückt wurde, wurde dann beendet und neu gestartet, mit zwölf Sekunden mitgeschnittener Konsole und Screenshots beider Displays; die gedrehten Messwerte weiter oben und die Übergangszeilen stammen daraus. In der zweiten Serie wurde die Probe-App nach jeder Aufnahme beendet, sodass beim Druck auf den nächsten Button keine App im Vordergrund war; die Screenshots vor dem Neustart stammen daraus. Open: DUOPROBE size=803x515 h=regular v=regular verticalEdge=nil safe=EdgeInsets(top: 134.0, leading: 34.0, bottom: 20.0, trailing: 34.0), DUOPROBE uikit bounds=(771.0, 44.0) divisions=0 occlusions=0 verticalBarEdge=UIVerticalBarEdge(rawValue: 0) und DUOPROBE screen=(466.0, 678.0); der Screenshot mit --display=primary-1 zeigt die Probe-App, der mit --display=primary zeigt Schwarz. Book: dieselben drei Zeilen nach dem Neustart; der Screenshot des inneren Displays, aufgenommen nach dem Druck und vor dem Neustart, ohne laufende App, zeigt den Home-Bildschirm. Closed: die Zeilen der geschlossenen Pose von oben. Nach Rotate Right, Open: DUOPROBE size=669x703 h=regular v=regular verticalEdge=nil safe=EdgeInsets(top: 134.0, leading: 0.0, bottom: 34.0, trailing: 0.0) und uikit bounds=(637.0, 44.0), mit dem Screenshot des inneren Displays im Hochformat. Kein Lauf gab eine Zeile division[ oder occlusion[ aus. Ein gedrehter geschlossener Zustand tauchte nur als Übergangszeile während eines Posenwechsels auf, DUOPROBE size=610x232 h=compact v=compact ... screen=(678.0, 466.0), und ist oben nicht mitgezählt. Dieser Build war mit sdk 27.0 gestempelt; siehe das Update vom 2. Oktober und Fußnote 13. ↩↩↩↩↩↩↩

  7. Apple, am 19. September 2026 abgerufene Dokumentations-JSON zu ArrangementView, UIArrangementViewController, reservedRegions(kind:options:layoutDirectionBehavior:), reservedRegions(kind:options:) und toolbarVerticalBehavior(_:): Die Plattformverfügbarkeit jeder Seite nennt iOS 27.1 und iPadOS 27.1, als Beta markiert. Apple, Preparing your app for iPhone Duo, am selben Tag abgerufen, für die Namen, die der Leitfaden verwendet. ↩↩↩↩

  8. Apple, Xcode 27.2 Beta Release Notes, abgerufen am 19. September 2026, SDK, Known Issues, 187160501, zitiert; erneut abgerufen am 26. September 2026 für den Hinweis in der Overview, „Download Xcode 27.1 beta to get the iOS SDK and simulator support for iPhone Duo.“, zitiert. ↩↩↩

  9. Apple, „Get ready with the latest beta releases“, News, 16. September 2026, „Note about iOS 27.1 and iPhone Duo“, zitiert. ↩

  10. Apple, Designing for iPhone Duo, Human Interface Guidelines, am 20. September 2026 über den JSON-Endpunkt der Dokumentation abgerufen: „Controls on the side include both system and app elements: the Dynamic Island, the status bar, the toolbar (including navigation buttons), and the tab bar.“ und „A hinge in the center lets people open and close the device“; erneut abgerufen am 2. Oktober 2026, Abschnitt Vertical controls: „The exception is the inner display in portrait, which has enough vertical space to keep standard horizontal bars.“; Abschnitt Anatomy: „The inner camera is behind the display and stays hidden until the camera is active.“ ↩↩↩↩

  11. Apple Newsroom, Apple unveils iPhone Duo, 9. September 2026, abgerufen am 20. September 2026: „Set iPhone Duo down and it enters StandBy on either the outer or inner display“ und „hub for widgets“, zitiert aus dem Absatz zu StandBy. ↩

  12. Sven-Eric Molzahn, iphone-duo-probe, GitHub-README, abgerufen am 24. September 2026 (letzter Commit am 20. September 2026): „Two caveats before reaching for it: reservedRegions is empty on the first geometry evaluation and populated on a later one“ und „Half-folded, inner display, content 867 × 575, hinge band at x 455.5…495.5“, zitiert. Antoine van der Lee, iPhone Duo Simulator: Testing and optimizing your SwiftUI app, SwiftLee, 22. September 2026, zitiert. ↩↩↩

  13. Neuer Lauf des Autors am 2. Oktober 2026: macOS 27.0 (26A428), Xcode 27.1 beta (27A9269), die iOS-27.1-Runtime (24A94401), derselbe Simulator Duo-27.1. Probe-App: DuoProbe2, eine Swift-Datei, ein TabView, dessen erster Tab einen NavigationStack mit fünf Toolbar-Elementen enthält, die im Text beschriebenen Anzeigen und eine UIKit-View, die ihr Fenster, den Bildschirm ihrer Window Scene, UIScreen.main und das Trait verticalBarEdge protokolliert. Zweimal aus dieser Datei gegen das 27.1-Simulator-SDK gebaut, wobei dem Linker gesagt wurde, welche SDK-Version er eintragen soll (-Xlinker -platform_version -Xlinker ios-simulator -Xlinker 27.1 -Xlinker 27.0 und ... 27.1); otool -l gab sdk 27.0 und sdk 27.1 aus. Ein dritter Build auf dem Septemberweg, swiftc -sdk <iPhoneSimulator27.1.sdk> bei nicht gesetztem SDKROOT, gab clang: warning: using sysroot for 'macOS 27.0' but targeting 'arm64-apple-ios27.1.0-simulator' aus und war mit sdk 27.0 gestempelt; mit auf das Simulator-SDK exportiertem SDKROOT stempelt derselbe Befehl sdk 27.1. Die echte App, die den Unterschied aufdeckte, ist Kiradex (941 Apps), gebaut von Xcode 27.1 beta: minos 27.0, sdk 27.1. Konsolenzeilen, Stempel 27.1, geschlossen: size=382x562 ... h=compact v=regular verticalEdge=trailing safe=EdgeInsets(top: 82.0, leading: 0.0, bottom: 34.0, trailing: 84.0) divisions=0 occlusions=2, occlusion[0] active=true frame=(399,-52 37x37), occlusion[1] active=true frame=(382,-82 84x170), window=(466.0, 678.0), verticalBarEdge=2; geschlossen und gedreht: size=594x350 ... h=compact v=compact verticalEdge=trailing, window=(678.0, 466.0); offen: size=867x553 ... h=regular v=regular verticalEdge=trailing ... divisions=1 occlusions=2, division[0] active=false frame=(455,-82 40x669) margins=EdgeInsets(top: 0.0, leading: 20.0, bottom: 0.0, trailing: 20.0), occlusion[0] active=false frame=(677,-61 58x37), occlusion[1] active=true frame=(867,-82 84x120), window=(951.0, 669.0), hinge=fullyOpen 180 deg; Book: dasselbe mit division[0] active=true und hinge=partiallyOpen 127 deg, dazu mainScreen=(466.0, 678.0) neben sceneScreen=(951.0, 669.0); offen und gedreht: size=669x734 ... verticalEdge=nil safe=EdgeInsets(top: 134.0, leading: 0.0, bottom: 83.0, trailing: 0.0) divisions=1 occlusions=2, division[0] active=false frame=(0,321 669x40), occlusion[0] active=false frame=(611,543 37x58), occlusion[1] active=true frame=(535,-134 134x82), window=(669.0, 951.0), mainScreen=(466.0, 678.0), verticalBarEdge=0; Book und gedreht: dasselbe mit division[0] active=true. Die Rahmen sind in den Koordinaten der Anzeige-View angegeben, deren Ursprung 82 oder 134 Punkte unter der Oberkante des Fensters liegt. Stempel 27.0: window=(386.0, 678.0) geschlossen, (871.0, 669.0) offen und in Book, (669.0, 871.0) offen und gedreht, (678.0, 386.0) geschlossen und gedreht, mit verticalEdge=nil, verticalBarEdge=0 und divisions=0 occlusions=0 in jeder Zeile. PlainProbe, dieselbe Tab View, derselbe Navigation Stack und dieselbe Toolbar ohne irgendetwas aus dem 27.1-SDK, kompiliert von Xcode 27.0 (27A266a) gegen dessen eigenes iOS-27.0-SDK (otool: minos 27.0, sdk 27.0): window=(386.0, 678.0) geschlossen und (871.0, 669.0) offen. Bei jedem Start mit 27.1 protokollierten die ersten sechs bis neun Auswertungen divisions=0 occlusions=0, bevor die Regionen erschienen, drei davon, bevor die View eine Größe hatte. Die Okklusion der Kamera wurde mit Apples Rahmen-PNG „Outer Closed Portrait“ verglichen, dessen Kameraaussparung bei 3x quer von 400,3 bis 436,3 Punkten und senkrecht von 29,7 bis 65,7 reicht; die Okklusion reicht in Fensterpunkten von 399 bis 436 und von 30 bis 67, an jeder Kante innerhalb von 1,3 Punkten. Die Positionen der Bereiche wurden aus den Aufnahmen gemessen: flach der primäre von x 8 bis 433,7 und der sekundäre von 433,7 bis 859; in Book der primäre bis 455,7, ein leeres Band bis 495,7, der sekundäre bis 859. Das Sheet der Probe-App maß offen 653x501 und zentriert, in Book 459x501 an der vorderen Kante. Mit einer Startoption, die die Arrangement View der Probe-App den Inhaltsbereich füllen lässt, zeigte das gedrehte Display den primären Bereich über dem sekundären, und .split.axes(.horizontal) zeigte nur den primären Bereich. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  14. Apple, Releases, RSS-Feed abgerufen am 11. Oktober 2026: „Xcode 27.1 RC (27A9275)“ datiert Mon, 05 Oct 2026 10:00:00 PDT. Apple, App Store Connect release notes, abgerufen am 11. Oktober 2026, Eintrag vom 5. Oktober 2026: „You can now upload apps built with Xcode 27.1 RC using the SDK for iOS 27.1, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, and watchOS 27.0 for the App Store, and for internal and external testing through TestFlight.“ Apple, Xcode 27.1 RC Release Notes, abgerufen am 11. Oktober 2026, Simulator, Known Issues: „StandBy is unavailable in the iPhone Duo Simulator runtime. (187708663)“ und „Running and debugging most app extensions is unavailable in the iPhone Duo Simulator runtime. (187708767)“, wie in den Notes der Beta. ↩↩↩↩

  15. Apple, Releases, RSS-Feed abgerufen am 15. Oktober 2026 um 17:16 Uhr pazifischer Zeit (00:16 UTC, 16. Oktober): „Xcode 27.1 (27A9275)“, datiert auf Thu, 15 Oct 2026 13:00:00 PDT, dieselbe Build-Nummer wie der RC-Eintrag vom 5. Oktober im Abruf vom 11. Oktober, den der Feed nicht mehr führt. Apple, Xcode 27.1 Release Notes, abgerufen über den JSON-Endpunkt der Dokumentation am 15. Oktober 2026 um 17:21 Uhr pazifischer Zeit, umbenannt von „Xcode 27.1 RC Release Notes“; Overview: „Xcode 27.1 includes Swift 6.4 and SDKs for iOS 27.1, iPadOS 27, tvOS 27, watchOS 27, macOS 27, and visionOS 27.“; die beiden Known Issues des iPhone-Duo-Simulators, 187708663 und 187708767, unverändert. Apple, App Store Connect release notes, abgerufen am 15. Oktober 2026 um 17:20 Uhr pazifischer Zeit, Eintrag vom 15. Oktober 2026, „App Store Connect updates“: „You can now upload apps built with Xcode 27.1 using the SDK for iOS 27.1, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, and watchOS 27.0 for the App Store, and for internal and external testing through TestFlight.“ und „Submit your iPhone Duo optimized apps and games in App Store Connect today. Starting April 2027, any apps or games submitted will need to include screenshots for iPhone Duo.“ Apples Developer-News-Feed, in derselben Stunde abgerufen, enthält keinen Eintrag zu dem Release. ↩↩↩↩↩

  16. Apple Newsroom, „iPhone Duo arrives at Apple Store locations worldwide“, 23. Oktober 2026, abgerufen am 26. Oktober: „On Friday, October 23, the highly anticipated iPhone Duo made its debut at Apple Store locations worldwide.“ Apple Support, „Apple security releases“, abgerufen am 26. Oktober 2026: die Zeile „iOS 27.1“, „This update has no published CVE entries.“, „iPhone Duo“, „23 Oct 2026“, ohne Link. Apple, Releases, RSS-Feed abgerufen am 26. Oktober 2026 um 16:12 Uhr pazifischer Zeit: „iOS 27.2 (24B91020)“ und „iOS 27.2 (24B119)“, datiert Mon, 26 Oct 2026 10:00:00 PDT; „Xcode 27.2 RC (27B48)“, datiert Mon, 19 Oct 2026, der neueste Xcode-Eintrag; kein Eintragstitel nennt ein Release von iOS 27.1. Der Index iOS & iPadOS Release Notes, abgerufen am 26. Oktober, führt nur „iOS & iPadOS 27 Release Notes“ und „iOS & iPadOS 27.2 Release Notes“; der JSON-Endpunkt der 27.1-Seite lieferte 404. Apple, Xcode 27.2 RC Release Notes, abgerufen am 26. Oktober 2026 (Last-Modified Mon, 19 Oct 2026 04:56:10 GMT): Device Hub, Known Issues (187146039, 187148389, 189465196 mit Workaround); Mac Catalyst, Known Issues (185924957); Simulator, Resolved Issues (190155353); zitiert. Apple, iOS & iPadOS 27.2 Release Notes, abgerufen am 26. Oktober 2026: UIKit, New Features (186294594). Mac des Autors, 26. Oktober 2026, macOS 27.0 (26A428), Xcode 27.1 (27A9275) unter /Applications/Xcode.app: iPhoneOS.sdk/System/Library/CoreServices/SystemVersion.plist und die plist des iPhoneSimulator-SDK melden beide ProductVersion 27.1 und ProductBuildVersion 24A94232; xcrun simctl list runtimes gibt „iOS 27.1 (27.1 - 24A94425)“ aus, und -j führt einen einzigen Eintrag unter supportedDeviceTypes, „iPhone Duo“; xcrun simctl create von com.apple.CoreSimulator.SimDeviceType.iPhone-16-Pro auf com.apple.CoreSimulator.SimRuntime.iOS-27-1 scheiterte mit „Incompatible device“ (SimError 403); die Probe-App zu den Layouträndern und ihre Ausgaben stehen in Fußnote 4 des Beitrags zu den Release Notes von iOS 27.2. ↩↩

Verwandte Beiträge

Ihre App für das iPhone Duo vorbereiten: ein durchgespieltes Beispiel

Eine App für das iPhone Duo vorbereiten und einreichen: der SDK-Stempel, der das Layout freischaltet, eine echte App in …

81 Min. Lesezeit

iOS 27.2 Release Notes: Was erschien und wo 27.1 blieb

iOS 27.2 (24B119) ist am 26. Oktober erschienen: 2 neue Funktionen, 5 Fixes, 7 bekannte Probleme, 162 CVEs und ein iOS 2…

41 Min. Lesezeit

Pixel-Art-Bauten: Häuser, Hallen und Innenräume auf dem iPhone

Wie Pokémon, die SNES-Rollenspiele und Stardew Häuser, Innenräume und Etagen bauen, im Quellcode gemessen, und wie Kirad…

85 Min. Lesezeit