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 Probe-App, die ich durch die drei Posen in Device Hub geschickt habe, landet geschlossen auf einem Display mit 466 mal 678 Punkten und offen auf einem mit 951 mal 669, dort regular in beiden Size Classes, meldet in keiner Pose reservierte Regionen und lässt UIScreen.main weiterhin für das äußere Display antworten, während die App auf dem inneren läuft.12456
{.answer-block}
Das Wichtigste in Kürze
- Termine und Builds. Apples Releases-Feed datiert Xcode 27.1 beta (27A9269) auf Freitag, den 18. September.
xcodebuild -versiongibtXcode 27.1undBuild version 27A9269aus; die SDKs für iPhoneOS und iPhoneSimulator melden sich beide als iOS 27.1, Build 24A94403; der Swift-Compiler nennt dieselbe Versionszeichenfolgeswiftlang-6.4.0.34.1wie Xcode 27.0 und der Linker dasselbeld-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 - 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
ArrangementViewundreservedRegions(kind:options:layoutDirectionBehavior:)in SwiftUICore,toolbarVerticalBehavior(_:)in SwiftUI sowieUIArrangementViewController,preferredVerticalBarBehaviorundverticalBarEdgein UIKit. SwiftUI kennzeichnet sie mit@available(anyAppleOS 27.1, *); die Header von UIKit versehen den Arrangement-Controller und die Methoden für reservierte Regionen mitAPI_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, ProduktklasseV68, Modellnummer A3447) definiert zwei integrierte Displays:primarymit 1398 mal 2034 Pixeln, Scale 3, undprimary-1mit 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. Device Hub bietet drei Posen an, Closed (geschlossen), Book (Buchstellung) und Open (offen), dazu Rotate Right (nach rechts drehen). Geschlossen bekommt die Probe-App das äußere Display: 466 mal 678 Punkte, compact in der Breite, das geteilte Arrangement übereinander. Offen bekommt sie das innere Display: quer als native Ausrichtung mit 951 mal 669 Punkten, regular in beiden Size Classes, Safe-Area-Insets von 34 an jeder Seite, das geteilte Arrangement nebeneinander; gedreht 669 breit und 951 hoch und weiterhin regular in beiden Richtungen. Book lieferte der App dieselbe Geometrie wie Open. In jeder Pose gab
reservedRegionsnichts zurück, auch mit inaktiven Regionen,toolbarVerticalEdgeblieb nil, die Toolbar zeichnete waagerecht, undUIScreen.main.boundsmeldete weiterhin 466 mal 678, während die App auf dem inneren Display lief.6 - 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
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, 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
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 Ich habe eine SwiftUI-Probe-App aus einer einzigen Datei installiert, die Geometrie, Size Classes, den Umgebungswert toolbarVerticalEdge und die reservierten Regionen beider Arten mit includeInactive ausliest, eine ArrangementView in jedem der drei Stile umschließt und sechs Elemente in eine Navigations-Toolbar legt.6

Die Probe-App auf dem äußeren Display, Pose Closed: 466 mal 678 Punkte, compact in der Breite, das geteilte Arrangement übereinander, die Toolbar waagerecht.
Geschlossen meldet die Probe-App das, was ein compactes iPhone meldet. UIScreen.main.bounds sind 466 mal 678 Punkte bei Scale 3, die Size Classes sind compact in der Breite und regular in der Höhe, toolbarVerticalEdge ist nil, das UIKit-Trait verticalBarEdge liest sich als Rohwert 0, und beide Abfragen nach reservierten Regionen liefern leere Arrays zurück, auch mit inaktiven Regionen, die geschlossene Pose legt der App also weder Falz noch Kamera offen. Der GeometryReader innerhalb des Navigation Stacks maß 386 mal 510 Punkte, mit Safe-Area-Insets von 134 oben und 34 unten und keinen an den Seiten; nach meiner Lesart sind die 80 Punkte Breite, die sich das System genommen hat, die Leiste rechts, in der die Statusanzeigen sitzen. Das geteilte Arrangement setzte die primäre Ansicht über die sekundäre, also der Fall höher als breit, den Apples Leitfaden beschreibt, und die Toolbar zeichnete waagerecht oben: Teilen und der Häkchen-Button Fertig neben dem Überlauf-Button, während die vier sekundären Aktionen nicht in der Leiste standen und ihrer Platzierung nach in deren Menü liegen.67
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 der Rest dieses Abschnitts entstanden.6
Open schiebt die App in ihrer nativen Querlage auf das innere Display. Die Probe-App meldet regular in Breite und Höhe, der GeometryReader misst 803 mal 515 Punkte mit Safe-Area-Insets von 134 oben, 34 an jeder Seite und 20 unten, und es fehlen dieselben 80 Punkte in der Breite wie in der geschlossenen Pose, nach meiner Lesart wieder die Leiste, jetzt rechts auf einem 951 Punkte breiten Bildschirm und mit den Statusanzeigen darin. Das geteilte Arrangement stellt die primäre und die sekundäre Ansicht nebeneinander, also der Fall breiter als hoch aus Apples Leitfaden, und die Toolbar zeichnet waagerecht oben rechts, erneut Teilen und Fertig neben dem Überlauf-Button, während die vier sekundären Aktionen nicht in der Leiste stehen.6

Pose Open, inneres Display, 2853 mal 2007 Pixel: regular in beiden Dimensionen, das geteilte Arrangement nebeneinander, die Leiste rechts.
Rotate Right dreht das innere Display ins Hochformat. Die Probe-App misst dann 669 mal 703 Punkte, regular in beiden Dimensionen, mit Insets von 134 oben und 34 unten und keinen an den Seiten; nach meiner Lesart ist die 80 Punkte breite Leiste an die obere Kante gewandert, wo die Statusanzeigen nun in einem schwarzen Band sitzen, und das geteilte Arrangement bleibt nebeneinander, obwohl der Container jetzt höher als breit ist.6

Das gedrehte innere Display: 669 Punkte breit, weiterhin regular in beiden Richtungen, die Leiste oben.
Book, die halb gefaltete Pose, ist die Stelle, an der sich die API für reservierte Regionen bezahlt machen müsste, und in dieser Beta tat sie es für meine Probe-App nicht. Ohne App im Vordergrund zeigte das innere Display nach dem Druck auf Book den Home-Bildschirm; neu gestartet meldete die Probe-App exakt das, was sie bei Open gemeldet hatte, 803 mal 515 Punkte, regular in beiden Dimensionen und null divisions und null occlusions, auch mit inaktiven Regionen, in SwiftUI wie in UIKit. Die geschlossene Pose meldet ebenfalls null. Ich habe keine Pose gefunden, in der reservedRegions einen Falz oder eine Kamera zurückgab, ein Layout, das sich an den Falz anpasst, ließ der Simulator dieser Beta mich also nicht sehen; Apples Leitfaden beschreibt die Division als aktiv, „when iPhone Duo is partially open“ (wenn das iPhone Duo teilweise geöffnet ist), und ob das eine Lücke der Beta oder eine Lücke meiner Probe-App ist, beantwortet erst die nächste Beta.67
Zwei weitere Dinge galten in jeder Pose. Die Toolbar zeichnete nie senkrecht: toolbarVerticalEdge war in SwiftUI nil und verticalBarEdge las sich in UIKit als Rohwert 0, geschlossen, offen und gedreht, die senkrechten Leisten aus Apples Leitfaden erschienen in dieser Beta also für die Toolbar eines Navigation Stacks nicht. Und UIScreen.main.bounds antwortete mit 466 mal 678 Punkten, dem äußeren Display, während die App auf dem inneren lief, 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 Compiler sagt beim Bauen der Probe-App ohnehin 'main' was deprecated in iOS 26.0, und dieses Gerät ist der Grund dafür.67
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
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.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
- Installieren Sie die Beta neben Xcode 27.0 statt darüber: das xip entpacken, die App umbenennen und
DEVELOPER_DIRfü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 - Starten Sie den Download der Runtime, bevor Sie sie brauchen, mit
xcodebuild -downloadPlatform iOSunter 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 - 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 - 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
- Protokollieren Sie während der Entwicklung die reservierten Regionen je Pose: Für
reservedRegions(kind:options:layoutDirectionBehavior:)mit.includeInactiveist dokumentiert, dass es Falz und Kamera alsReservedRegion-Werte zurückgibt, die aktiv oder inaktiv sein können; in dieser Beta gab jede Pose keine zurück, eine Logzeile inonChange(of: proxy.size)sagt Ihnen also genau den Moment, in dem eine Pose anfängt, sie zu melden.67
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 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
Quellen
-
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. ↩↩↩
-
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. ↩↩↩↩↩↩↩↩↩↩↩
-
Runtime-Download des Autors auf macOS 26.6.2 (25G83) am 19. September 2026, mit
DEVELOPER_DIRauf Xcode 27.1 beta:xcodebuild -downloadPlatform iOSgab für die installierte 27.0-Runtime „iOS is already downloaded.“ aus und dann „Downloading iOS 27.1 Simulator (24A94401) (arm64)“, gefolgt vonDVTDownloadable: 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)undError 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, woraufhinxcrun 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. ↩↩↩↩↩ -
Untersuchung von
/Applications/Xcode-27.1-beta.appdurch den Autor am 19. September 2026:xcodebuild -versiongibtXcode 27.1undBuild version 27A9269aus;xcrun --sdk iphoneos --show-sdk-versionundxcrun --sdk iphonesimulator --show-sdk-versiongeben beide 27.1 aus; dieSystemVersion.plistbeider SDKs trägtProductBuildVersion24A94403 undProductVersion27.1;xcrun swift --versiongibtApple Swift version 6.4 (swiftlang-6.4.0.34.1 clang-2100.3.34.1)aus undxcrun ld -vgibtld-27037.1aus, dieselben Versionszeichenfolgen, die Xcode 27.0 (27A266a) auf demselben Mac ausgibt.Xcode_27.1_beta.xipist 2.027.292.809 Byte groß;pkgutil --check-signaturemeldet „signed Apple Software“ mit einer Zertifikatskette für Software-Updates;du -skmeldet 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 sindgrep -cfür den Teilstring inSwiftUICore.swiftmodule/arm64e-apple-ios.swiftinterface,SwiftUI.swiftmodule/arm64e-apple-ios.swiftinterfaceundUIKit.swiftmodule/arm64e-apple-ios.swiftinterfaceim iPhoneOS-SDK sowie Dateizahlen ausgrep -rlüberUIKit.framework/Headers; die Verfügbarkeitsattribute stammen aus denselben Dateien:@available(anyAppleOS 27.1, *)überpublic struct ArrangementView<im SwiftUICore-Interface und über derextension SwiftUICore.View, diefunc toolbarVerticalBehaviordeklariert,API_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1))gefolgt vonAPI_UNAVAILABLE(watchos)inUIArrangementViewController.h, an beidenreservedRegionsOfKind:-Deklarationen inUIView.hsowie am EnumUIVerticalBarEdgeund am TraitverticalBarEdge, undAPI_AVAILABLE(ios(27.1)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos, tvos)an dessen FällenUIVerticalBarEdgeLeadingundUIVerticalBarEdgeTrailing;@available(anyAppleOS 27.0, *)überfunc presentationPlacement;@available(iOS 27.0, visionOS 27.0, *)überpublic static let topBarPinnedTrailingund kein Attribut überpublic static let cancellationAction. Erster Start: Das erstexcodebuild -versionunter demDEVELOPER_DIRder Beta lief über ein Timeout von zwei Minuten hinaus, und/var/log/install.logverzeichnet, wiexcodebuildam 19. September um 16:01:54 eine PackageKit-Installation einreiht, dieCoreTypes.pkgundXcodeSystemResources.pkgausXcode-27.1-beta.app/Contents/Resources/Packagesentpackt und um 16:03:04 endet;xcodebuild -checkFirstLaunchStatuslieferte danach 0. ↩↩↩↩↩↩↩↩↩↩↩ -
/Library/Developer/CoreSimulator/Profiles/DeviceTypes/iPhone Duo.simdevicetype, installiert von Xcode 27.1 beta und am 19. September 2026 mitplutil -convert xml1gelesen.profile.plist:modelIdentifieriPhone19,4,productClassV68,aliasescom.apple.CoreSimulator.SimDeviceType.V68,minRuntimeVersion27.1,createByDefaultForRuntimeVersionsversionMin 27.1.capabilities.plist:ModelNumberA3447,ThinningProductTypeiPhone19,4,CompatibleDeviceFallbackiPhone18,3,DeviceCornerRadius59,HomeButtonType2,DeviceSupportsDynamicIslandtrue,DeviceSupportsEnhancedMultitaskingfalse,IsLargeFormatPhonetrue;ScreenDimensionsCapabilitymain-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) undprimary-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), dazuexternal-0(TVOut),wireless0(carPlay) undresizable(scene). Die beiden PDFs hinterframebufferMaskIdentifierwurden mitqlmanagegerendert und angesehen; Apples Datenblattwerte für die Panels stehen im Duo-Beitrag für Entwickler.xcrun simctl list devicetypesführt unter der Beta „iPhone Duo (com.apple.CoreSimulator.SimDeviceType.iPhone-Duo)“. ↩↩↩↩↩↩↩↩↩ -
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 mitsimctl bootundsimctl bootstatus -b(rund eine Minute auf diesem Mac);simctl io <udid> enumerateführt zwei Portscom.apple.framebuffer.displayder Display-Klasse 0 mit 1398 mal 2034 und 2007 mal 2853 auf und unter Connected Screens „LCD-1“ mit dem Gerätenamenprimary-1, Screen-ID 3, Pixelgröße {2007, 2853}. Probe-App: DuoProbe, eine SwiftUI-App aus einer Datei, gebaut mitxcrun swiftc -sdk <iPhoneSimulator.sdk> -target arm64-apple-ios27.1-simulator -parse-as-libraryunter Xcode 27.1 beta, installiert mitsimctl install, gestartet mitsimctl launch --console-pty, Screenshots mitsimctl io <udid> screenshot --mask=alpha --display=primaryund--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 Zeilendivision[oderocclusion[. Der Screenshot mit--display=primary-1ist schwarz. Bildschirmstrom:simctl io <udid> screenConfig --display=primary power offgab „Screen 1 power state set to off“ aus; das nächstesimctl launchscheiterte mitFBSOpenApplicationServiceErrorDomainCode 5, „The system shell probably crashed.“;simctl shutdownundbootstellten 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 AktionAXPressauf den Buttons, die Device Hub für das ausgewählte Gerät anbietet, und beide getrieben vom Kommandozeilenwerkzeugsimctlder 27.2 beta, mit demDEVELOPER_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)undDUOPROBE screen=(466.0, 678.0); der Screenshot mit--display=primary-1zeigt die Probe-App, der mit--display=primaryzeigt 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)unduikit bounds=(637.0, 44.0), mit dem Screenshot des inneren Displays im Hochformat. Kein Lauf gab eine Zeiledivision[oderocclusion[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. ↩↩↩↩↩↩↩↩↩↩↩↩ -
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. ↩↩↩↩↩
-
Apple, Xcode 27.2 Beta Release Notes, abgerufen am 19. September 2026, SDK, Known Issues, 187160501, zitiert. ↩
-
Apple, „Get ready with the latest beta releases“, News, 16. September 2026, „Note about iOS 27.1 and iPhone Duo“, zitiert. ↩
-
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“. ↩↩
-
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. ↩