Capturas de tela limpas no Simulador do iOS e no emulador Android
Barra de status em 9:41 no Simulador do iOS com um comando simctl, modo demo no Android e capturas no tamanho e formato certos para as lojas.
Para tirar uma captura de tela limpa no Simulador do iOS, sobrescreva a barra de status com xcrun simctl status_bar booted override --time 9:41 --batteryState charged --batteryLevel 100 e capture com xcrun simctl io booted screenshot. No Android, ative o modo demo da System UI pelo adb, que fixa o relógio, enche os ícones de bateria e sinal e esconde as notificações, e capture com adb exec-out screencap -p.
Isso resolve a barra de status. Uma captura pronta para a loja também precisa do tamanho de dispositivo certo, de um formato de arquivo que a loja aceite e de uma tela cheia de dados críveis. Este guia passa por tudo isso, com comandos que você pode colar.
- xcrun simctl status_bar booted override define o relógio, a bateria e os indicadores de Wi-Fi e celular do Simulador do iOS, e xcrun simctl status_bar booted clear remove o override.
- O modo demo da System UI do Android é ativado com adb shell settings put global sysui_demo_allowed 1 e controlado com broadcasts para com.android.systemui.demo.
- Um simulador de iPhone 17 Pro Max captura em 1320 × 2868, um dos tamanhos aceitos no maior tamanho de iPhone do App Store Connect.
- O simctl e o adb salvam PNGs com canal alfa; o App Store Connect recusa transparência e o Google Play pede JPEG ou PNG de 24 bits sem alfa.
- O Google Play rejeita capturas de tela cujo lado maior passa do dobro do lado menor, o que descarta as capturas cruas de muitos celulares modernos mais altos.
Por que a barra de status importa nas capturas de tela da loja
Uma captura feita durante o desenvolvimento carrega o que quer que o simulador estivesse fazendo na hora: 14:17, 34% de bateria, um nome de operadora, um ícone de notificação perdido. Nada disso está errado, mas passa a sensação de coisa inacabada e tira o olhar da parte da tela que interessa.
O Google é explícito sobre isso. As diretrizes de recursos de visualização pedem que você limpe a barra de notificações para que ela mostre bateria cheia, ícones de Wi-Fi e de celular e nenhuma notificação. A Apple não define uma regra para a barra de status, mas o relógio em 9:41 é a convenção no próprio marketing dela, e uma barra de status consistente em todas as capturas faz o conjunto parecer um trabalho só.
Como deixar a barra de status do Simulador do iOS em 9:41
O comando simctl status_bar faz parte do Xcode há várias versões. Conferimos as flags abaixo com xcrun simctl status_bar help no Xcode 27. Inicie o simulador que você quer e rode:
xcrun simctl status_bar booted override \
--time 9:41 \
--dataNetwork wifi \
--wifiMode active --wifiBars 3 \
--cellularMode active --cellularBars 4 \
--operatorName '' \
--batteryState charged --batteryLevel 100booted aponta para o simulador em execução. Se houver mais de um iniciado, passe o UDID dele (que você encontra com xcrun simctl list devices booted). Todas as flags são opcionais, mas você precisa de pelo menos uma.
| Flag | Valores aceitos | O que usamos |
|---|---|---|
--time | Qualquer string; uma data ISO válida também define a data | 9:41 |
--dataNetwork | hide, wifi, 3g, 4g, lte, lte-a, lte+, 5g, 5g+, 5g-uwb, 5g-uc | wifi |
--wifiBars | 0–3 | 3 |
--cellularBars | 0–4 | 4 |
--operatorName | Qualquer string; '' para vazio | '' |
--batteryState | charging, charged, discharging | charged |
--batteryLevel | 0–100 | 100 |
Confira o que está aplicado com xcrun simctl status_bar booted list. Quando terminar, volte ao normal:
xcrun simctl status_bar booted clearO override sobrevive a reinicializações do app, então dá para configurar uma vez e capturar um conjunto inteiro. Apagar o simulador desfaz a configuração.
Capturando a tela do iOS no tamanho certo
xcrun simctl io booted screenshot shot.png salva a tela do simulador no tamanho nativo em pixels. A moldura e as bordas do simulador não entram; você recebe só a tela. Por isso, é o dispositivo que você escolhe que decide se o App Store Connect vai aceitar o arquivo.
Escolha um simulador que corresponda a um tamanho aceito
As especificações de capturas de tela da Apple listam os tamanhos exatos em pixels de cada espaço. O que a maioria dos guias chama de 6,9 polegadas (o App Store Connect agora o chama de “iPhone com Dynamic Island, tela grande”) aceita 1260 × 2736, 1290 × 2796 e 1320 × 2868 em retrato. Quando capturamos em um simulador de iPhone 17 Pro Max, o arquivo saiu com 1320 × 2868, então ele cabe nesse espaço sem redimensionar. Para iPad, um simulador de iPad Pro de 13 polegadas corresponde ao espaço de 13 polegadas, que aceita 2064 × 2752 e 2048 × 2732. Nossa referência de tamanhos de capturas de tela lista o resto.
Se preferir criar um dispositivo só para as capturas, para que o simulador do dia a dia fique intocado:
xcrun simctl create store-shots "iPhone 17 Pro Max"
xcrun simctl boot store-shots
open -a SimulatorEvite o erro de transparência
O PNG que o simctl gera tem um canal alfa, mesmo com todos os pixels opacos. As especificações do App Store Connect dizem que as imagens não podem ter canal alfa nem transparência. Se você vai enviar a captura direto, salve em JPEG:
xcrun simctl io booted screenshot --type=jpeg 01-home.jpg
# or convert an existing PNG on macOS
sips -s format jpeg 01-home.png --out 01-home.jpgSe a captura vai passar por uma ferramenta de design antes, mantenha o PNG; o arquivo exportado é que precisa estar sem alfa.
Como deixar a barra de status limpa no emulador Android
O Android tem um mecanismo nativo para isso chamado modo demo da System UI. Ele está documentado no Android Open Source Project e funciona em emuladores e em dispositivos reais com depuração USB. Primeiro libere o modo, depois envie os comandos como broadcasts:
adb shell settings put global sysui_demo_allowed 1
demo() { adb shell am broadcast -a com.android.systemui.demo -e command "$@"; }
demo enter
demo clock -e hhmm 0941
demo battery -e level 100 -e plugged false
demo network -e wifi show -e level 4
demo network -e mobile show -e datatype none -e level 4
demo notifications -e visible falseRodamos esses comandos em um emulador com API 35 e cada broadcast terminou com a barra de status atualizando na hora. Quando terminar:
adb shell am broadcast -a com.android.systemui.demo -e command exitO modo demo aceita mais do que isso. status esconde ícones específicos, como alarme, Bluetooth e localização; bars -e mode deixa a barra opaca, translúcida ou semitransparente. A página do AOSP lista todos os comandos.
Capture a tela do emulador
adb exec-out screencap -p > 01-home.pngUse exec-out em vez de shell: ele transmite os bytes crus, então o PNG não é corrompido pela conversão de quebras de linha. Assim como o simctl, o screencap captura só a tela. As skins do emulador desenham uma moldura em volta da janela, mas essa moldura nunca vai para o arquivo, então as molduras de dispositivo precisam ser adicionadas depois.
Fique de olho no limite de 2:1 do Google Play
Esse aqui pega muita gente. As regras de capturas de tela do Google Play dizem que cada lado precisa ter entre 320 e 3840 pixels e que o lado maior não pode passar do dobro do lado menor. Muitos celulares atuais são mais altos que isso. Nossa captura em um emulador de Pixel 9 Pro saiu com 1280 × 2856, uma proporção de cerca de 2,23, que o Play não aceita do jeito que está.
Você tem duas opções:
- Capturar em um perfil 16:9. Crie um AVD com tela de 1080 × 1920. A captura sobe direto e ainda atende ao mínimo de 1080px que o Google exige para entrar nos formatos de recomendação baseados em capturas de tela.
- Resolver no design. Coloque a captura alta dentro de uma tela de 1080 × 1920 com título e fundo. É o que a maioria dos conjuntos de capturas com design já faz.
O Google também pede JPEG ou PNG de 24 bits sem alfa. A saída do screencap é RGBA, então converta antes de enviar direto, do mesmo jeito que no iOS.
Preencha com dados de demonstração realistas antes de capturar
Uma barra de status perfeita em cima de uma lista vazia continua sendo uma captura fraca. A diretriz 2.3.3 da App Review da Apple diz que as capturas de tela devem mostrar o app em uso, e não só a arte do título, a tela de login ou a tela de abertura. Na prática, as telas que funcionam bem têm conteúdo com cara de pessoa real: um orçamento com algumas dezenas de transações, um app de hábitos com três semanas de sequência, uma conversa com um vaivém crível.
Abordagens que costumam funcionar, da que dá menos trabalho para a que dá mais:
- Uma conta de demonstração. Uma conta no ambiente de staging, preenchida à mão uma vez e mantida em ordem. Simples, mas vai se desatualizando.
- Um argumento de inicialização que carrega fixtures. Verifique algo como
-demoDatanos builds de debug e carregue um arquivo JSON com conteúdo de exemplo. Passe comxcrun simctl launch booted com.example.app -demoData, ou como intent extra no Android. - Testes de UI que montam o estado. Se depois você automatizar as capturas, o teste pode criar exatamente os dados de que cada tela precisa.
O simulador também pode ser preparado pela linha de comando, para que pedidos de permissão nunca apareçam numa captura:
# Add sample photos to the library
xcrun simctl addmedia booted ~/demo/photos/*.jpg
# Pre-grant permissions so no system dialog appears
xcrun simctl privacy booted grant photos com.example.app
xcrun simctl privacy booted grant location com.example.appNomes importam mais do que se imagina. “Test User” e “asdf” dá para ver do outro lado da sala. Use nomes plausíveis, valores com cara de reais e datas próximas do presente. Nossa lista de erros comuns em capturas de tela traz mais sobre os detalhes que entregam uma captura.
Alternando modo claro/escuro e idioma
Se o seu app tem modo escuro ou páginas localizadas, capture cada variação a partir da mesma configuração em vez de mexer nos Ajustes à mão.
| Tarefa | Simulador do iOS | Emulador Android |
|---|---|---|
| Aparência escura | xcrun simctl ui booted appearance dark | adb shell cmd uimode night yes |
| Voltar ao claro | xcrun simctl ui booted appearance light | adb shell cmd uimode night no |
| Idioma do app | xcrun simctl launch booted com.example.app -AppleLanguages "(de)" -AppleLocale de_DE | adb shell cmd locale set-app-locales com.example.app --locales de-DE |
Os argumentos de idioma do iOS valem só para aquela inicialização, o que é prático: o simulador continua em inglês enquanto o app roda em alemão. O comando de idioma por app do Android precisa do Android 13 (API 33) ou superior; conferimos a sintaxe com adb shell cmd locale help na API 35.
Capturas de tela localizadas valem o esforço quando o próprio app está traduzido. Capturar a interface em alemão é a primeira metade; os títulos precisam do mesmo cuidado. Nosso guia sobre como localizar capturas de tela da App Store mostra o que traduzir e em que ordem, e por que só traduzir não é localizar cobre o resto.
Juntando tudo: um script de captura
Aqui vai um pequeno script de shell que prepara um simulador do iOS, captura as versões clara e escura de uma tela e limpa tudo no final. A navegação entre telas fica por sua conta (ou por conta de deep links, que a maioria dos apps já tem):
#!/bin/sh
set -e
DEVICE=booted
APP=com.example.app
OUT=./screenshots/en-US
mkdir -p "$OUT"
xcrun simctl status_bar $DEVICE override --time 9:41 \
--dataNetwork wifi --wifiBars 3 --cellularBars 4 \
--batteryState charged --batteryLevel 100
for MODE in light dark; do
xcrun simctl ui $DEVICE appearance $MODE
xcrun simctl launch --terminate-running-process $DEVICE $APP -demoData
sleep 2
xcrun simctl openurl $DEVICE "example://home"
sleep 1
xcrun simctl io $DEVICE screenshot --type=jpeg "$OUT/01-home-$MODE.jpg"
done
xcrun simctl status_bar $DEVICE clearPassando de algumas telas e idiomas, um script assim vira trabalho de manutenção, e é aí que entram ferramentas baseadas em testes de UI, como o snapshot do fastlane.
O que fazer com as capturas limpas
Uma captura limpa é matéria-prima. A maioria das páginas a coloca dentro de uma moldura com design e um título que diz o que aquela tela faz pelo usuário, porque uma captura crua não se explica nos um ou dois segundos que alguém leva rolando a página. Nosso passo a passo para criar capturas de tela da App Store continua daqui, e as boas práticas para capturas de tela mostram o que colocar em cada uma.
Você pode fazer essa etapa de design em qualquer ferramenta. No Launch Shots você solta as capturas e o gerador de capturas de tela para a App Store cuida da moldura do dispositivo, do layout dos títulos e dos tamanhos de exportação de cada loja.
Crie capturas de tela prontas para as lojas em minutos — grátis, sem marca d'água na exportação.
Você começa a usar o Launch Shots de graça. Todos os modelos (110+), mais de 220 molduras de dispositivo e mockups 3D, tradução por IA e upload direto para o App Store Connect e o Google Play Console. Sem cartão de crédito.
Começar grátis →Resumindo
- iOS:
xcrun simctl status_bar booted override --time 9:41 --batteryState charged --batteryLevel 100, depoisxcrun simctl io booted screenshot --type=jpeg shot.jpge por fimstatus_bar booted clear. - Android:
settings put global sysui_demo_allowed 1, broadcasts do modo demo para relógio, bateria, rede e notificações,adb exec-out screencap -pe por fim-e command exit. - Capture em um simulador ou emulador cujo tamanho de tela a loja aceite sem ajustes: iPhone 17 Pro Max para o maior tamanho de iPhone, um AVD 16:9 para o Play.
- Remova o canal alfa antes de enviar uma captura direto para qualquer uma das lojas.
- Carregue dados de demonstração realistas e conceda as permissões antes, para que nenhuma tela vazia ou diálogo do sistema apareça numa captura.
- Coloque as trocas de claro/escuro e de idioma num script, para que todas as variações saiam da mesma configuração.
Perguntas frequentes
05- Como mudo o horário para 9:41 no Simulador do iOS?
- Rode xcrun simctl status_bar booted override --time 9:41 no Terminal com o simulador aberto. O override também aceita flags para estado e nível da bateria, barras de Wi-Fi e de celular, tipo de rede de dados e nome da operadora. Ele vale até você rodar xcrun simctl status_bar booted clear ou apagar o dispositivo, então dá para capturar um conjunto inteiro sem repetir o comando.
- Como escondo as notificações na barra de status do emulador Android?
- Ative o modo demo da System UI com adb shell settings put global sysui_demo_allowed 1 e depois envie o broadcast adb shell am broadcast -a com.android.systemui.demo -e command notifications -e visible false. O modo demo também permite fixar o relógio e mostrar bateria e sinal cheios. Quando terminar, envie o comando exit para devolver a barra de status ao sistema.
- Por que o App Store Connect rejeita minha captura de tela do simulador?
- As duas causas mais comuns são tamanho e transparência. O App Store Connect só aceita dimensões específicas em pixels para cada tamanho de tela, então a captura precisa vir de um simulador com uma tela que corresponda a um tamanho aceito. Ele também recusa imagens com canal alfa, e o simctl salva PNGs com um. Capturar com --type=jpeg, ou converter o PNG para JPEG, evita o erro de transparência.
- Posso usar capturas cruas do simulador como capturas de tela da App Store?
- Pode. A Apple aceita capturas simples desde que estejam em um tamanho aceito e mostrem o app em uso, como pede a diretriz 2.3.3 da App Review. Muitos apps ainda adicionam um título e um fundo, porque uma tela crua não diz para que serve o recurso. De qualquer forma, comece com uma captura limpa: barra de status fixa, dados realistas e nenhuma sobreposição de debug.
- Qual emulador Android devo usar para as capturas de tela da Play Store?
- Escolha um perfil de dispositivo cuja tela não tenha altura maior que o dobro da largura, porque o Google Play rejeita capturas em que o lado maior passa do dobro do lado menor. Muitos celulares atuais são mais altos que 2:1, então as capturas cruas deles falham. Um perfil 16:9, como um celular de 1080 × 1920, funciona do jeito que está, ou você pode colocar capturas mais altas dentro de uma moldura 9:16 com design.
