Xcode 27.1 beta: seu app no simulador do iPhone Duo
O Xcode 27.1 beta (27A9269) saiu na sexta-feira, 18 de setembro de 2026, com o primeiro SDK do iOS 27.1 e um tipo de dispositivo iPhone Duo para o simulador, quatro dias depois do Xcode 27.0. O SDK traz todas as APIs de iPhone Duo que o guia de preparação da Apple cita, o perfil do tipo de dispositivo define as duas telas em 1398 por 2034 e 2007 por 2853 pixels em 3x, ou seja 466 por 678 e 669 por 951 pontos, e o runtime do simulador é um download à parte que o Xcode busca sob demanda. As próprias notas da Apple listam três coisas que o simulador ainda não faz, e um app de sondagem rodado nas três poses do Device Hub cai numa tela de 466 por 678 pontos fechado e numa de 951 por 669 aberto, regular nas duas classes de tamanho ali, e não reporta nenhuma região reservada em pose alguma, com UIScreen.main ainda respondendo pela tela externa enquanto o app está na interna.12456
{.answer-block}
TL;DR
- Datas e builds. O feed de lançamentos da Apple data o Xcode 27.1 beta (27A9269) na sexta-feira, 18 de setembro.
xcodebuild -versionimprimeXcode 27.1eBuild version 27A9269; os SDKs de iPhoneOS e de iPhoneSimulator se identificam os dois como iOS 27.1 build 24A94403; o compilador Swift reporta a mesma string de versãoswiftlang-6.4.0.34.1que o Xcode 27.0, e o linker o mesmold-27037.1. O xip tem 2.027.292.809 bytes e o app expandido ocupa 3,6 GiB, e ele se instala ao lado do Xcode 27.0 sem substituí-lo.14 - As APIs do Duo já estão no SDK. Os dez nomes que a minha checagem de 17 de setembro não achou no SDK 27.0 estão todos no SDK 27.1, entre eles
ArrangementViewereservedRegions(kind:options:layoutDirectionBehavior:)no SwiftUICore,toolbarVerticalBehavior(_:)no SwiftUI, eUIArrangementViewController,preferredVerticalBarBehavioreverticalBarEdgeno UIKit. O SwiftUI marca todos com@available(anyAppleOS 27.1, *); os headers do UIKit marcam o controlador de arranjo e os métodos de regiões reservadas comAPI_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1)), duas plataformas a mais do que as páginas de documentação listam.4 - O perfil do simulador põe os tamanhos de tela no papel. O tipo de dispositivo iPhone Duo (
iPhone19,4, classe de produtoV68, número de modelo A3447) define duas telas integradas:primarya 1398 por 2034 pixels, escala 3, eprimary-1a 2007 por 2853 pixels, escala 3, com orientação nativa de 270. Divididas por três, dão 466 por 678 e 669 por 951 pontos, e a cifra da tela interna é justamente o número que o meu post sobre o Duo para desenvolvedores inferiu em 10 de setembro a partir do tamanho de captura do App Store Connect. O perfil exige runtime 27.1 ou posterior.5 - O que o simulador faz com um app de verdade. O Device Hub expõe três poses, Closed (fechado), Book (livro) e Open (aberto), além de Rotate Right (girar à direita). Em Closed, a sonda recebe a tela externa: 466 por 678 pontos, largura compacta, o arranjo dividido empilhado. Em Open, recebe a interna: 951 por 669 pontos com orientação nativa em paisagem, regular nas duas classes de tamanho, insets de área segura de 34 de cada lado, o arranjo dividido lado a lado; girada, 669 de largura por 951 de altura e ainda regular nos dois eixos. Book deu ao app a mesma geometria de Open. Em todas as poses
reservedRegionsnão devolveu nada, nem mesmo incluindo as regiões inativas,toolbarVerticalEdgeficou nil, a barra de ferramentas desenhou na horizontal eUIScreen.main.boundscontinuou reportando 466 por 678 enquanto o app estava na tela interna.6 - O que o beta ainda não consegue fazer. As notas da Apple: “Initial Simulator launch can take several minutes.” (187708500), “StandBy is unavailable in the iPhone Duo Simulator runtime.” (187708663) e “Running and debugging most app extensions is unavailable in the iPhone Duo Simulator runtime.” (187708767), ou seja, a primeira inicialização do simulador pode levar vários minutos e nem o StandBy nem a maioria das extensões de app estão disponíveis nesse runtime. Some a isso dois Known Issues de Mac Catalyst para quem também publica o app no Mac, e uma coisa que a Apple não lista: o download do runtime falhou na minha primeira tentativa com
Download failed.e funcionou na repetição.23
O que vem no beta?
O feed de lançamentos da Apple lista “Xcode 27.1 beta (27A9269)” na sexta-feira, 18 de setembro, às 10:00 PT, e um “TestFlight Update” na mesma tarde; as notas de versão do App Store Connect daquele dia dizem “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.” (você já pode enviar apps compilados com o Xcode 27.1 beta usando o SDK do iOS 27.1 beta ou do iPadOS 27.1 beta para testes internos e externos).1 O Overview das notas de versão nomeia a linha de SDK: “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 Vale ler essa lista como ela está escrita: o iOS é a única plataforma em 27.1, o próprio SDKSettings.plist do SDK reporta a versão 27.1, e o App Store Connect chama o mesmo SDK de “iPadOS 27.1 beta”, um detalhe que o post sobre o Xcode 27 já carrega.
O download é menor do que o número de versão sugere. O xip tem 2.027.292.809 bytes, é assinado pela Apple com o certificado de Software Update e expande para um app de 3,6 GiB, o mesmo tamanho do Xcode 27.0; um xip --expand numa pasta, um rename para /Applications/Xcode-27.1-beta.app e o DEVELOPER_DIR apontando para lá são toda a instalação para trabalhar na linha de comando. A primeira chamada de xcodebuild sob o beta levou depois uns dois minutos instalando por conta própria os pacotes CoreTypes.pkg e XcodeSystemResources.pkg que vêm embutidos, o passo que xcodebuild -runFirstLaunch faz de forma explícita, e o segundo desses pacotes é o que deixa o tipo de dispositivo iPhone Duo no lugar.4 O que o app não contém é um runtime de simulador. O beta encontra os runtimes de iOS que já estão neste Mac, o 27.0 entre eles, e nenhum para o 27.1; xcodebuild -downloadPlatform iOS sob o beta nomeia a peça que falta como “iOS 27.1 Simulator (24A94401)” e a busca como imagem de disco cryptex pelo serviço de mobile assets da Apple, enquanto as imagens de disco da própria página de downloads para desenvolvedores param no iOS 18.2 Simulator Runtime.34 A primeira tentativa terminou em DVTDownloadable: Download Failed com Error Domain=DVTDownloadableErrorDomain Code=41 "Download failed."; a segunda, com -buildVersion 24A94401, reportou o runtime em 7,85 GB, concluiu, e o simctl list runtimes então listou “iOS 27.1 (27.1 - 24A94401)”. Reserve o disco antes: o runtime é quatro vezes o tamanho do download do Xcode.3

A tela externa do simulador de iPhone Duo na primeira inicialização, 1398 por 2034 pixels: o bloco de status desce pela borda direita, o lado onde as Human Interface Guidelines da Apple colocam a Dynamic Island e a barra de status no iPhone Duo.10
O SDK 27.1 tem as APIs do Duo?
Em 17 de setembro eu procurei no SDK do iOS 27.0 os nomes que aparecem no guia “Preparing your app for iPhone Duo” da Apple e não achei nenhum dos dez que são específicos do dispositivo. A mesma busca contra o SDK 27.1, feita do mesmo jeito, uma busca de texto puro nas interfaces de módulo e nos headers, acha todos. As linhas são as substrings buscadas: sete delas cobrem nove dos dez nomes, porque os dois métodos reservedRegions dividem uma linha e os dois membros axisBehavior também, e as outras três são os tipos por trás dos nomes: ReservedRegion, ToolbarVerticalBehavior para toolbarVerticalBehavior(_:) e UIVerticalBarBehavior para preferredVerticalBarBehavior:4
| Substring buscada | Interface do SwiftUICore | Interface do SwiftUI | Interface do UIKit | Headers do UIKit |
|---|---|---|---|---|
ArrangementView |
45 | 0 | 19 | 4 arquivos |
UIArrangementViewController |
0 | 0 | 19 | 4 arquivos |
ReservedRegion |
16 | 0 | 15 | 3 arquivos |
reservedRegions |
2 | 0 | 5 | 1 arquivo |
ToolbarVerticalBehavior |
0 | 5 | 0 | 0 |
UIVerticalBarBehavior |
0 | 0 | 0 | 1 arquivo |
verticalBarEdge |
0 | 0 | 0 | 1 arquivo |
toolbarVerticalEdge |
1 | 0 | 0 | 0 |
axisBehavior |
0 | 2 | 0 | 1 arquivo |
preferredVerticalBarBehavior |
0 | 0 | 0 | 1 arquivo |
Dois detalhes dessa tabela importam na hora de escrever o código. Os tipos do SwiftUI moram no SwiftUICore, o módulo que o import SwiftUI reexporta, então um import comum já acha todos; e os atributos de disponibilidade discordam da documentação quanto às plataformas. A interface do SwiftUICore declara ArrangementView, e a do SwiftUI declara toolbarVerticalBehavior(_:), as duas sob @available(anyAppleOS 27.1, *), que é a abreviação da Apple para todas as plataformas naquela versão, enquanto UIArrangementViewController.h e os métodos reservedRegionsOfKind: de UIView.h carregam API_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1)) junto de API_UNAVAILABLE(watchos); em UIVerticalBarEdge.h, o enum e o trait verticalBarEdge carregam esse mesmo par, enquanto os casos Leading e Trailing carregam API_AVAILABLE(ios(27.1)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos, tvos). As páginas de documentação da Apple para os cinco listam só iOS 27.1 e iPadOS 27.1, marcadas como beta.47 Escreva contra o iOS e deixe o compilador te contar o resto.
Os três nomes que o guia usa e que já estavam no SDK 27.0 continuam iguais: presentationPlacement(_:) segue sob @available(anyAppleOS 27.0, *), backgroundExtensionEffect() continua ali desde o iOS 26, e dos dois casos de ToolbarItemPlacement que o guia cita, topBarPinnedTrailing fica sob @available(iOS 27.0, visionOS 27.0, *) e cancellationAction não carrega disponibilidade própria além da do tipo.4
O que o perfil do simulador diz sobre as duas telas?
O tipo de dispositivo que a Apple instala com o beta, iPhone Duo.simdevicetype, é um bundle comum dentro de /Library/Developer/CoreSimulator/Profiles/DeviceTypes, e suas duas property lists respondem perguntas que a ficha técnica tinha deixado em aberto.5
O profile.plist dá a identidade: identificador de modelo iPhone19,4, classe de produto V68, um alias com.apple.CoreSimulator.SimDeviceType.V68, minRuntimeVersion 27.1 e uma regra para criar o dispositivo por padrão nos runtimes de 27.1 em diante. O capabilities.plist dá o hardware: número de modelo A3447, HomeButtonType 2, DeviceSupportsDynamicIsland true, DeviceSupportsEnhancedMultitasking false, IsLargeFormatPhone true, um CompatibleDeviceFallback de iPhone18,3, um raio de canto de dispositivo de 59 e um array displays com duas entradas integradas e três virtuais.5
| Tela no perfil | Pixels | Escala | Pontos | Orientação nativa | Raios de canto | Espaço de cor |
|---|---|---|---|---|---|---|
primary (“LCD”, tela 1) |
1398 por 2034 | 3 | 466 por 678 | 0 | 8, 59, 8, 59 | P3 |
primary-1 (“LCD-1”, tela 3) |
2007 por 2853 | 3 | 669 por 951 | 270 | 55 nos quatro | sRGB |
A primeira linha é a tela externa e bate pixel a pixel com a ficha técnica da Apple. A segunda é a tela interna, e a contagem de pixels dela é o tamanho de captura do App Store Connect, 2007 por 2853, e não os 1878 por 2670 do painel: o simulador renderiza a tela interna a 669 por 951 pontos em 3x, que é a aritmética que o meu post sobre o Duo para desenvolvedores fez em 10 de setembro e rotulou ali como uma inferência. Agora o próprio perfil da Apple carrega o número. A orientação nativa de 270 graus diz que a tela interna é nativa em paisagem, 951 pontos de largura por 669 de altura com o telefone aberto, o que bate com as dimensões que a Apple dá para o aparelho aberto. Os dois números restantes são valores do simulador, e não do hardware: as duas telas aparecem a 460 pixels por polegada e 60 Hz, sendo que a ficha técnica dá 430 ppi ao painel interno, então vale tratar hdpi como um marcador de lugar.5
O perfil também traz as formas. Cada tela referencia uma máscara de framebuffer, um PDF da área visível. A máscara da tela externa tem cantos assimétricos, os valores 8 do perfil numa borda longa e 59 na outra, na minha leitura o raio pequeno fica do lado que encontra a dobradiça central descrita no guia de design da Apple; a máscara da tela interna é um retângulo arredondado liso, com o valor de canto 55 do perfil e sem recorte para a câmera frontal, então a oclusão da câmera vem da API de regiões reservadas em tempo de execução, e não da forma do framebuffer.510
O que o simulador mostra?
O dispositivo inicia fechado. Na primeira inicialização a tela externa mostra a Tela de Início e o framebuffer da interna está ligado, mas preto, e o simctl io enumerate lista as duas telas integradas pelos nomes do perfil, primary a 1398 por 2034 e primary-1 a 2007 por 2853, ao lado das virtuais de sempre.6 Instalei uma sonda SwiftUI de arquivo único que lê a geometria, as classes de tamanho, o valor de ambiente toolbarVerticalEdge e as regiões reservadas dos dois tipos com includeInactive, envolve um ArrangementView em cada um dos três estilos e põe seis itens numa barra de ferramentas de navegação.6

A sonda na tela externa, pose Closed: 466 por 678 pontos, largura compacta, o arranjo dividido empilhado, a barra de ferramentas na horizontal.
Em Closed, a sonda reporta o que um iPhone compacto reporta. UIScreen.main.bounds dá 466 por 678 pontos em escala 3, as classes de tamanho são largura compacta e altura regular, toolbarVerticalEdge é nil, o trait verticalBarEdge do UIKit lê como valor bruto 0, e as duas consultas de regiões reservadas devolvem arrays vazios mesmo incluindo as inativas, ou seja, a pose fechada não expõe ao app nem dobra nem câmera. O GeometryReader dentro da pilha de navegação mediu 386 por 510 pontos, com insets de área segura de 134 no topo e 34 embaixo e nenhum nas laterais; na minha leitura, os 80 pontos de largura que o sistema reteve são a faixa da direita onde fica o bloco de status. O arranjo dividido colocou a visualização primária acima da secundária, que é o caso mais alto do que largo descrito no guia da Apple, e a barra de ferramentas desenhou na horizontal no topo: Share e o botão Done com o tique ao lado do botão de mais opções, com as quatro ações secundárias ausentes da barra e, pelo placement delas, dentro do menu dela.67
O Device Hub é onde as poses moram. Com o dispositivo Duo selecionado, a janela dele expõe Rotate Right, Closed, Book e Open como botões que a API de acessibilidade consegue pressionar, que foi como o resto desta seção foi conduzido.6
Open move o app para a tela interna na orientação nativa em paisagem. A sonda reporta largura regular e altura regular, o GeometryReader mede 803 por 515 pontos com insets de área segura de 134 no topo, 34 de cada lado e 20 embaixo, e faltam à largura os mesmos 80 pontos da pose fechada, na minha leitura de novo a faixa, agora à direita de uma tela de 951 pontos de largura e com o bloco de status dentro. O arranjo dividido põe as visualizações primária e secundária lado a lado, o caso mais largo do que alto do guia da Apple, e a barra de ferramentas desenha na horizontal no canto superior direito, de novo Share e Done ao lado do botão de mais opções, com as quatro ações secundárias ausentes da barra.6

Pose Open, tela interna, 2853 por 2007 pixels: regular nas duas dimensões, o arranjo dividido lado a lado, a faixa à direita.
Rotate Right deixa a tela interna em retrato. A sonda mede então 669 por 703 pontos, regular nas duas dimensões, com insets de 134 no topo e 34 embaixo e nenhum nas laterais; na minha leitura a faixa de 80 pontos foi para a borda superior, onde o bloco de status agora fica dentro de uma tarja preta, e o arranjo dividido continua lado a lado mesmo com o contêiner agora mais alto do que largo.6

A tela interna girada: 669 pontos de largura, ainda regular nos dois eixos, a faixa atravessando o topo.
Book, a pose parcialmente dobrada, é onde a API de regiões reservadas deveria justificar o próprio salário, e neste beta ela não justificou com a minha sonda. Sem nenhum app em primeiro plano, a tela interna depois do toque em Book mostrou a Tela de Início; relançada, a sonda reportou exatamente o que reportava em Open, 803 por 515 pontos, regular nas duas dimensões, e zero divisions e zero occlusions incluindo as regiões inativas, no SwiftUI e no UIKit. A pose fechada também reporta zero. Não encontrei nenhuma pose em que reservedRegions devolvesse uma dobra ou uma câmera, então um layout que se adapta à dobra é algo que o simulador deste beta não me deixou ver; o guia da Apple descreve a divisão como ativa “when iPhone Duo is partially open,” (quando o iPhone Duo está parcialmente aberto), e se isso é uma lacuna do beta ou uma lacuna da minha sonda é pergunta para o próximo beta.67
Mais duas coisas se mantiveram em todas as poses. A barra de ferramentas nunca desenhou na vertical: toolbarVerticalEdge foi nil no SwiftUI e verticalBarEdge leu como valor bruto 0 no UIKit, fechado, aberto e girado, então as barras verticais descritas no guia da Apple não apareceram para a barra de ferramentas de uma pilha de navegação neste beta. E UIScreen.main.bounds respondeu 466 por 678 pontos, a tela externa, enquanto o app estava na tela interna, que é exatamente a armadilha contra a qual o guia da Apple alerta ao dizer para fazer os cálculos de layout “based on your scene or containing view’s bounds rather than screen dimensions” (com base nos bounds da sua cena ou da visualização que contém, e não nas dimensões da tela): a tela principal não é a tela em que você está. O compilador já avisa 'main' was deprecated in iOS 26.0 quando a sonda compila, e este aparelho é o motivo.67
Um caminho para as outras poses não funciona. O simctl io screenConfig consegue desligar uma tela, e desligar a externa mantendo a interna ligada não abriu o telefone; derrubou o system shell do simulador, o simctl launch falhou em seguida com “The system shell probably crashed,” (o system shell provavelmente travou) e foi preciso reiniciar. As poses moram na janela do Device Hub.6
O que o beta ainda não consegue fazer
A Apple lista três limites em Simulator, Known Issues (problemas conhecidos), nas notas do próprio beta: “Initial Simulator launch can take several minutes.” (187708500), “StandBy is unavailable in the iPhone Duo Simulator runtime.” (187708663) e “Running and debugging most app extensions is unavailable in the iPhone Duo Simulator runtime.” (187708767).2 O do StandBy pesa para quem tem widgets ou Live Activities pensados para ele: o anúncio da Apple diz que o telefone “enters StandBy on either the outer or inner display” (entra em StandBy na tela externa ou na interna) e o chama de “hub for widgets” (central de widgets), o post sobre o Duo para desenvolvedores cobre o que aparece ali, e até que um beta posterior derrube o limite, o StandBy neste aparelho é coisa para conferir em hardware.11
Mais dois ficam em Mac Catalyst, Known Issues, e mordem qualquer app que adote essas APIs e também compile para o Mac: “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)” (projetos que usam APIs específicas do iOS 27.1 mostram erros de compilação ao compilar para Mac Catalyst), com o workaround da Apple de #if !targetEnvironment(macCatalyst) em Swift ou #if !TARGET_OS_MACCATALYST em Objective-C, e “Projects that target iOS 27.1 show no Mac Catalyst run destination available. (187046347)” (projetos que miram o iOS 27.1 não mostram nenhum destino de execução de Mac Catalyst), com “Add a Mac Catalyst 27.0 minimum deployment in target settings.” como solução.2 As notas do Xcode 27.2 beta acrescentam um terceiro pelo outro lado: “macOS, watchOS, tvOS, and visionOS SDKs in Xcode 27.2 incorrectly report 27.1 as a valid deployment target,” e “Mac Catalyst builds with a 27.1 or 27.2 deployment target may be unable to use newly introduced API.” (187160501), ou seja, esses SDKs reportam errado o 27.1 como deployment target válido e as compilações de Mac Catalyst com deployment target 27.1 ou 27.2 podem ficar sem conseguir usar a API recém-introduzida.8
O que eu faria esta semana
- Instale o beta ao lado do Xcode 27.0, e não por cima: expanda o xip, renomeie o app e aponte o
DEVELOPER_DIRpara ele nas compilações de linha de comando; nada nas notas do beta mexe no toolchain do 27.0, e o compilador e o linker carregam strings de versão idênticas.4 - Comece o download do runtime antes de precisar dele, com
xcodebuild -downloadPlatform iOSsob o beta, e repita se falhar; o runtime é o que torna o tipo de dispositivo iPhone Duo inicializável, e a Apple avisa que, por cima disso, a primeira inicialização leva minutos.23 - Compile uma vez contra o SDK 27.1 com o seu target de Mac Catalyst incluído, e leia os dois diagnósticos que a Apple cita antes de decidir se cerca a API nova com
#if !targetEnvironment(macCatalyst)ou se sobe o mínimo do Catalyst para 27.0.2 - Use os números do perfil como os tamanhos contra os quais pré-visualizar e testar: 466 por 678 pontos fechado, 669 por 951 aberto, com a tela interna nativa em paisagem. A nota de Previews do beta acrescenta um grupo Display ao seletor de overrides do canvas “for previewing content on a device’s alternative display.” (182598534), ou seja, para pré-visualizar conteúdo na tela alternativa de um aparelho.25
- Registre as regiões reservadas por pose durante o desenvolvimento:
reservedRegions(kind:options:layoutDirectionBehavior:)com.includeInactiveestá documentado para devolver a dobra e a câmera como valoresReservedRegionque podem estar ativos ou inativos; neste beta toda pose devolveu nada, então uma linha de log emonChange(of: proxy.size)avisa o momento em que uma pose começa a reportá-las.67
Perguntas frequentes
O simulador de iPhone Duo está no Xcode 27.1 beta?
Está. O beta instala um tipo de dispositivo iPhone Duo, com.apple.CoreSimulator.SimDeviceType.iPhone-Duo, cujo perfil exige um runtime de iOS 27.1 que o Xcode baixa à parte com xcodebuild -downloadPlatform iOS. As notas da Apple avisam que a primeira inicialização “can take several minutes” (pode levar vários minutos) e que nem o StandBy nem a maioria das extensões de app estão disponíveis nesse runtime.235
Como instalo o Xcode 27.1 beta ao lado do Xcode 27?
Expanda o xip com xip --expand, mova o app resultante para um nome com versão, como /Applications/Xcode-27.1-beta.app, e aponte o DEVELOPER_DIR para a pasta Contents/Developer dele nos comandos xcodebuild, xcrun e swiftc. O beta exige macOS Tahoe 26.6 ou posterior, o mesmo piso do Xcode 27.0.24
Qual é o tamanho da tela interna do iPhone Duo em pontos?
669 por 951 pontos, segundo o perfil de dispositivo do simulador, que define a tela interna como 2007 por 2853 pixels em escala 3 com orientação nativa em paisagem; a tela externa tem 466 por 678 pontos, a partir de 1398 por 2034 pixels em escala 3.5
O Xcode 27.1 beta muda o SDK do iOS 27.0 ou o toolchain do Xcode 27?
Não. O compilador Swift e o linker reportam as mesmas strings de versão do Xcode 27.0, e as notas de versão do beta têm três seções, Mac Catalyst, Previews e Simulator, e nenhuma delas encosta no toolchain. O SDK do iOS 27.1 é um acréscimo, identificado como build 24A94403 tanto no SDK de dispositivo quanto no de simulador.24
Quando o iPhone Duo chega, e com o quê?
Em 23 de outubro, com o iOS 27.1, segundo o post de notícias da Apple de 16 de setembro: “When iPhone Duo becomes available on October 23, it will run iOS 27.1.” (quando o iPhone Duo ficar disponível em 23 de outubro, ele rodará o iOS 27.1).9
Fontes
-
Apple, Releases, feed RSS consultado em 19 de setembro de 2026: “Xcode 27.1 beta (27A9269)” datado de Fri, 18 Sep 2026 10:00:00 PDT e “TestFlight Update” datado de Fri, 18 Sep 2026 14:00:00 PDT. Apple, App Store Connect release notes, 18 de setembro de 2026, atualização do TestFlight, citada na íntegra. ↩↩↩
-
Apple, Xcode 27.1 Beta Release Notes, obtidas pelo endpoint JSON da documentação em 19 de setembro de 2026: Overview, citado; Mac Catalyst, Known Issues 185924957 e 187046347 com seus workarounds, citados; Previews, New Features 182598534, citado; Simulator, Known Issues 187708500, 187708663 e 187708767, citados. As notas não contêm nenhuma outra seção. ↩↩↩↩↩↩↩↩↩↩↩
-
Download do runtime feito pelo autor no macOS 26.6.2 (25G83), em 19 de setembro de 2026, com o
DEVELOPER_DIRapontando para o Xcode 27.1 beta:xcodebuild -downloadPlatform iOSimprimiu “iOS is already downloaded.” para o runtime 27.0 já instalado e depois “Downloading iOS 27.1 Simulator (24A94401) (arm64)”, seguido deDVTDownloadable: 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)eError Domain=DVTDownloadableErrorDomain Code=41 "Download failed."; a repetição,xcodebuild -downloadPlatform iOS -buildVersion 24A94401, imprimiu “Downloading iOS 27.1 Simulator (24A94401) (arm64): 0.0% (66 kB of 7.85 GB)” e concluiu, depois do que oxcrun simctl list runtimeslistou “iOS 27.1 (27.1 - 24A94401) - com.apple.CoreSimulator.SimRuntime.iOS-27-1”. A página de downloads para desenvolvedores da Apple, pesquisada por “Simulator Runtime” com a sessão iniciada no mesmo dia, lista imagens de disco não mais novas do que o iOS 18.2 Simulator Runtime. ↩↩↩↩↩ -
Inspeção do autor em
/Applications/Xcode-27.1-beta.app, 19 de setembro de 2026:xcodebuild -versionimprimeXcode 27.1eBuild version 27A9269;xcrun --sdk iphoneos --show-sdk-versionexcrun --sdk iphonesimulator --show-sdk-versionimprimem os dois 27.1; oSystemVersion.plistnos dois SDKs carregaProductBuildVersion24A94403 eProductVersion27.1;xcrun swift --versionimprimeApple Swift version 6.4 (swiftlang-6.4.0.34.1 clang-2100.3.34.1)excrun ld -vimprimeld-27037.1, as mesmas strings de versão que o Xcode 27.0 (27A266a) imprime neste mesmo Mac. OXcode_27.1_beta.xiptem 2.027.292.809 bytes; opkgutil --check-signaturereporta “signed Apple Software” com uma cadeia de certificados de Software Update; odu -sksobre o app expandido reporta 3.813.336 KB, contra 3.804.188 KB do Xcode 27.0 (27A266a) expandido em/Applications/Xcode-27.app. As contagens de nomes sãogrep -cda substring emSwiftUICore.swiftmodule/arm64e-apple-ios.swiftinterface,SwiftUI.swiftmodule/arm64e-apple-ios.swiftinterfaceeUIKit.swiftmodule/arm64e-apple-ios.swiftinterfacedentro do SDK de iPhoneOS, e contagens de arquivos comgrep -rlemUIKit.framework/Headers; atributos de disponibilidade lidos desses arquivos:@available(anyAppleOS 27.1, *)acima depublic struct ArrangementView<na interface do SwiftUICore e acima daextension SwiftUICore.Viewque declarafunc toolbarVerticalBehaviorna interface do SwiftUI,API_AVAILABLE(ios(27.1), tvos(27.1), visionos(27.1))seguido deAPI_UNAVAILABLE(watchos)emUIArrangementViewController.h, nas duas declarações dereservedRegionsOfKind:emUIView.h, e no enumUIVerticalBarEdgee no traitverticalBarEdge, maisAPI_AVAILABLE(ios(27.1)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos, tvos)nos casosUIVerticalBarEdgeLeadingeUIVerticalBarEdgeTrailingdele;@available(anyAppleOS 27.0, *)acima defunc presentationPlacement;@available(iOS 27.0, visionOS 27.0, *)acima depublic static let topBarPinnedTrailinge nenhum atributo acima depublic static let cancellationAction. Primeira inicialização: o primeiroxcodebuild -versionsob oDEVELOPER_DIRdo beta passou de um timeout de dois minutos, e o/var/log/install.logregistra oxcodebuildenfileirando uma instalação do PackageKit às 16:01:54 de 19 de setembro, que extraiuCoreTypes.pkgeXcodeSystemResources.pkgdeXcode-27.1-beta.app/Contents/Resources/Packagese terminou às 16:03:04; oxcodebuild -checkFirstLaunchStatusem seguida devolveu 0. ↩↩↩↩↩↩↩↩↩↩↩ -
/Library/Developer/CoreSimulator/Profiles/DeviceTypes/iPhone Duo.simdevicetype, instalado pelo Xcode 27.1 beta e lido complutil -convert xml1em 19 de setembro de 2026.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 e vdpi 460, refreshRate 60, nativeOrientation 0, cornerRadiusUL 8, UR 59, LL 8, LR 59, colorspace P3) eprimary-1(displayName LCD-1, screenID 3, width 2007, height 2853, scale 3, hdpi e vdpi 460, refreshRate 60, nativeOrientation 270, os quatro raios de canto 55, colorspace sRGB), além deexternal-0(TVOut),wireless0(carPlay) eresizable(scene). Os dois PDFs deframebufferMaskIdentifierforam renderizados comqlmanagee inspecionados; os números da ficha técnica da Apple para os painéis estão no post sobre o Duo para desenvolvedores. Oxcrun simctl list devicetypessob o beta lista “iPhone Duo (com.apple.CoreSimulator.SimDeviceType.iPhone-Duo)”. ↩↩↩↩↩↩↩↩↩ -
Execuções do autor no macOS 26.6.2 (25G83), em 19 e 20 de setembro de 2026. Dispositivo:
simctl create "Duo-27.1" com.apple.CoreSimulator.SimDeviceType.iPhone-Duo com.apple.CoreSimulator.SimRuntime.iOS-27-1, iniciado comsimctl bootesimctl bootstatus -b(cerca de um minuto neste Mac); osimctl io <udid> enumeratelista duas portascom.apple.framebuffer.displayde classe de tela 0 a 1398 por 2034 e 2007 por 2853 e, em Connected Screens, “LCD-1” com nome de dispositivoprimary-1, screen ID 3, tamanho em pixels {2007, 2853}. Sonda: DuoProbe, um app SwiftUI de arquivo único compilado comxcrun swiftc -sdk <iPhoneSimulator.sdk> -target arm64-apple-ios27.1-simulator -parse-as-librarysob o Xcode 27.1 beta, instalado comsimctl install, lançado comsimctl launch --console-pty, capturas comsimctl io <udid> screenshot --mask=alpha --display=primarye--display=primary-1. Linhas de console da pose fechada: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); nenhuma linhadivision[ouocclusion[. A captura com--display=primary-1sai preta. Energia das telas:simctl io <udid> screenConfig --display=primary power offimprimiu “Screen 1 power state set to off”; osimctl launchseguinte falhou comFBSOpenApplicationServiceErrorDomaincódigo 5, “The system shell probably crashed.”;simctl shutdownebootrecuperaram o dispositivo. As rodadas de poses de 20 de setembro foram duas séries, as duas pressionando Rotate Right, Closed, Book e Open pela API de acessibilidade com a açãoAXPressnos botões que o Device Hub expõe para o dispositivo selecionado, e as duas conduzidas pela ferramenta de linha de comandosimctldo 27.2 beta, oDEVELOPER_DIRque esses scripts definem, contra o runtime, o tipo de dispositivo e o Device Hub do 27.1 beta. Na primeira série a sonda da pose anterior ainda estava rodando quando o botão seguinte era pressionado, e depois era encerrada e relançada, com o console capturado por doze segundos e capturas das duas telas; as leituras giradas acima e as linhas de transição vêm dela. Na segunda série a sonda era encerrada depois de cada captura, então não havia nenhum app em primeiro plano quando o botão seguinte era pressionado; as capturas anteriores ao relançamento vêm dela. 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)eDUOPROBE screen=(466.0, 678.0); a captura com--display=primary-1mostra a sonda, a com--display=primarysai preta. Book: as mesmas três linhas depois do relançamento; a captura da tela interna, feita depois do toque e antes do relançamento, sem nenhum app rodando, mostra a Tela de Início. Closed: as linhas da pose fechada acima. Depois de 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)euikit bounds=(637.0, 44.0), com a captura da tela interna em retrato. Nenhuma execução imprimiu uma linhadivision[ouocclusion[. Um estado fechado e girado apareceu só como linhas de transição enquanto uma pose mudava,DUOPROBE size=610x232 h=compact v=compact ... screen=(678.0, 466.0), e não entra na contagem acima. ↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple, JSON de documentação obtido em 19 de setembro de 2026 para ArrangementView, UIArrangementViewController, reservedRegions(kind:options:layoutDirectionBehavior:), reservedRegions(kind:options:) e toolbarVerticalBehavior(_:): a disponibilidade por plataforma de cada página traz iOS 27.1 e iPadOS 27.1, marcadas como beta. Apple, Preparing your app for iPhone Duo, obtido no mesmo dia, para os nomes que o guia usa. ↩↩↩↩↩
-
Apple, Xcode 27.2 Beta Release Notes, obtidas em 19 de setembro de 2026, SDK, Known Issues, 187160501, citado. ↩
-
Apple, “Get ready with the latest beta releases”, notícias, 16 de setembro de 2026, “Note about iOS 27.1 and iPhone Duo”, citada. ↩
-
Apple, Designing for iPhone Duo, Human Interface Guidelines, obtidas pelo endpoint JSON da documentação em 20 de setembro de 2026: “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.” (os controles da lateral incluem elementos do sistema e do app: a Dynamic Island, a barra de status, a barra de ferramentas com os botões de navegação e a barra de abas) e “A hinge in the center lets people open and close the device” (uma dobradiça no centro permite abrir e fechar o aparelho). ↩↩
-
Apple Newsroom, Apple unveils iPhone Duo, 9 de setembro de 2026, consultado em 20 de setembro de 2026: “Set iPhone Duo down and it enters StandBy on either the outer or inner display” e “hub for widgets”, citados do parágrafo sobre o StandBy. ↩