Screenshot puliti dal Simulatore iOS e dall’emulatore Android
9 min di lettura

Screenshot puliti dal Simulatore iOS e dall’emulatore Android

Imposta la barra di stato del Simulatore iOS sulle 9:41 con un comando simctl, attiva la modalità demo su Android e cattura screenshot pronti per gli store.

A
Scritto da
Inizia a leggere

Per fare uno screenshot pulito dal Simulatore iOS, sovrascrivi la barra di stato con xcrun simctl status_bar booted override --time 9:41 --batteryState charged --batteryLevel 100, poi cattura con xcrun simctl io booted screenshot. Su Android, attiva via adb la modalità demo della System UI, che fissa l’orologio, riempie le icone di batteria e segnale e nasconde le notifiche, poi cattura con adb exec-out screencap -p.

Questo sistema la barra di stato. Una cattura pronta per lo store ha bisogno anche delle giuste dimensioni del dispositivo, di un formato di file che lo store accetti e di una schermata piena di dati credibili. In questa guida vediamo tutto, con comandi da copiare e incollare.

In sintesi
  • xcrun simctl status_bar booted override imposta orologio, batteria e indicatori Wi-Fi e cellulare del Simulatore iOS, e xcrun simctl status_bar booted clear rimuove l’override.
  • La modalità demo della System UI di Android si attiva con adb shell settings put global sysui_demo_allowed 1 e si controlla con broadcast verso com.android.systemui.demo.
  • Un simulatore iPhone 17 Pro Max cattura a 1320 × 2868, una delle dimensioni accettate per lo slot iPhone più grande di App Store Connect.
  • simctl e adb salvano entrambi PNG con canale alfa; App Store Connect rifiuta la trasparenza e Google Play chiede JPEG o PNG a 24 bit senza alfa.
  • Google Play rifiuta gli screenshot in cui il lato lungo è più del doppio di quello corto, il che esclude le catture grezze di molti telefoni moderni molto allungati.

Perché la barra di stato conta negli screenshot per gli store

Uno screenshot fatto durante lo sviluppo si porta dietro qualunque cosa stesse facendo il simulatore in quel momento: le 14:17, batteria al 34%, il nome di un operatore, l’icona di una notifica rimasta lì. Niente di tutto questo è sbagliato, ma dà un’idea di lavoro non finito e distoglie lo sguardo dalla parte dello schermo che ti interessa.

Google lo dice chiaramente. Le sue linee guida per gli asset di anteprima chiedono di ripulire la barra delle notifiche in modo che mostri batteria piena, icone Wi-Fi e cellulare e nessuna notifica. Apple non fissa una regola esplicita sulla barra di stato, ma l’orologio sulle 9:41 è la convenzione del suo stesso marketing, e una barra di stato coerente in tutti gli screenshot fa sembrare il set un lavoro unico.

Come impostare la barra di stato del Simulatore iOS sulle 9:41

Il comando simctl status_bar fa parte di Xcode da diverse versioni. Abbiamo verificato le opzioni qui sotto con xcrun simctl status_bar help in Xcode 27. Avvia il simulatore che ti serve, poi esegui:

xcrun simctl status_bar booted override \
  --time 9:41 \
  --dataNetwork wifi \
  --wifiMode active --wifiBars 3 \
  --cellularMode active --cellularBars 4 \
  --operatorName '' \
  --batteryState charged --batteryLevel 100

booted indica il simulatore in esecuzione. Se ne hai più di uno avviato, passa invece il suo UDID (che trovi con xcrun simctl list devices booted). Ogni opzione è facoltativa, ma ne serve almeno una.

OpzioneValori accettatiCosa usiamo
--timeQualsiasi stringa; una data ISO valida imposta anche la data9:41
--dataNetworkhide, wifi, 3g, 4g, lte, lte-a, lte+, 5g, 5g+, 5g-uwb, 5g-ucwifi
--wifiBars0–33
--cellularBars0–44
--operatorNameQualsiasi stringa; '' per lasciarlo vuoto''
--batteryStatecharging, charged, dischargingcharged
--batteryLevel0–100100

Controlla cosa è applicato con xcrun simctl status_bar booted list. Quando hai finito, ripristina tutto:

xcrun simctl status_bar booted clear

L’override resiste ai riavvii dell’app, quindi puoi impostarlo una volta e catturare un intero set. Inizializzare il simulatore lo azzera.

Catturare lo screenshot iOS alla dimensione giusta

xcrun simctl io booted screenshot shot.png salva lo schermo del simulatore alla sua risoluzione nativa in pixel. La finestra e la cornice del simulatore non sono incluse: ottieni solo il display. Per questo è il dispositivo che scegli a decidere se App Store Connect accetterà il file.

Scegli un simulatore con una dimensione accettata

Le specifiche degli screenshot di Apple elencano le dimensioni esatte in pixel che ogni slot accetta. Lo slot che quasi tutte le guide chiamano da 6,9 pollici (App Store Connect oggi lo etichetta “iPhone con Dynamic Island, display grande”) accetta 1260 × 2736, 1290 × 2796 e 1320 × 2868 in verticale. Quando abbiamo catturato da un simulatore iPhone 17 Pro Max, il file è uscito a 1320 × 2868, quindi entra in quello slot senza ridimensionamenti. Per iPad, un simulatore iPad Pro da 13 pollici corrisponde allo slot da 13 pollici, che accetta 2064 × 2752 e 2048 × 2732. La nostra guida alle dimensioni degli screenshot elenca tutte le altre.

Se preferisci creare un dispositivo dedicato agli screenshot, così il simulatore che usi tutti i giorni resta intatto:

xcrun simctl create store-shots "iPhone 17 Pro Max"
xcrun simctl boot store-shots
open -a Simulator

Evita l’errore di trasparenza

Il PNG che scrive simctl ha un canale alfa, anche se ogni pixel è opaco. Le specifiche di App Store Connect dicono che le immagini non possono avere canali alfa né trasparenze. Se carichi direttamente la cattura, salvala invece in 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.jpg

Se lo screenshot passa prima da uno strumento di design, tieni pure il PNG: è il file esportato che deve essere senza alfa.

Come ottenere una barra di stato pulita nell’emulatore Android

Android ha un meccanismo integrato apposta, la modalità demo della System UI. È documentata sul sito dell’Android Open Source Project, e funziona sugli emulatori e sui dispositivi reali con il debug USB attivo. Prima la abiliti, poi invii i comandi come broadcast:

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 false

Li abbiamo eseguiti su un emulatore con API 35 e ogni broadcast è andato a buon fine, con la barra di stato aggiornata all’istante. Quando hai finito:

adb shell am broadcast -a com.android.systemui.demo -e command exit

La modalità demo accetta anche altro. status nasconde singole icone come sveglia, Bluetooth e posizione; bars -e mode rende la barra opaca, traslucida o semitrasparente. La pagina AOSP elenca tutti i comandi.

Cattura lo schermo dell’emulatore

adb exec-out screencap -p > 01-home.png

Usa exec-out invece di shell: trasmette i byte grezzi, così il PNG non viene corrotto dalla conversione dei fine riga. Come simctl, screencap cattura solo il display. Le skin dell’emulatore disegnano una cornice attorno alla finestra, ma quella cornice non finisce mai nel file, quindi le cornici del dispositivo vanno aggiunte dopo.

Attenzione al limite di 2:1 su Google Play

Su questo punto ci cascano in tanti. Le regole di Google Play per gli screenshot dicono che ogni lato deve essere tra 320 e 3840 pixel e che il lato lungo non può superare il doppio di quello corto. Molti telefoni attuali sono più allungati di così. La nostra cattura da un emulatore Pixel 9 Pro è uscita a 1280 × 2856, un rapporto di circa 2,23, che Play non accetta così com’è.

Hai due opzioni:

  • Cattura su un profilo 16:9. Crea un AVD con uno schermo 1080 × 1920. La cattura si carica direttamente e rispetta anche il minimo di 1080 px che Google indica per poter comparire nei formati di raccomandazione basati sugli screenshot.
  • Progetta tenendone conto. Inserisci la cattura alta in un canvas 1080 × 1920 con un titolo e uno sfondo. È quello che fanno comunque quasi tutti i set di screenshot progettati.

Google chiede anche JPEG o PNG a 24 bit senza alfa. L’output di screencap è RGBA, quindi convertilo prima di un caricamento diretto, come su iOS.

Prepara dati demo realistici prima di catturare

Una barra di stato perfetta sopra una lista vuota resta uno screenshot debole. La linea guida 2.3.3 di App Review di Apple dice che gli screenshot devono mostrare l’app in uso, non solo il titolo, la pagina di login o la schermata di avvio. In pratica, le schermate che funzionano hanno contenuti che sembrano di una persona vera: un budget con qualche decina di transazioni, un habit tracker con una serie di tre settimane, una chat con uno scambio credibile.

Approcci che di solito funzionano, dal meno al più impegnativo:

  • Un account demo. Un account in staging, riempito a mano una volta e tenuto in ordine. Semplice, ma col tempo si sporca.
  • Un launch argument che carica dati di prova. Nelle build di debug controlla qualcosa come -demoData e carica un file JSON con contenuti di esempio. Passalo con xcrun simctl launch booted com.example.app -demoData, o come intent extra su Android.
  • Test della UI che preparano lo stato. Se poi automatizzi le catture, il test può creare esattamente i dati di cui ha bisogno ogni schermata.

Il simulatore si può preparare anche da riga di comando, così le richieste di autorizzazione non compaiono mai in uno scatto:

# 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.app

I nomi contano più di quanto si pensi. “Test User” e “asdf” si notano anche dall’altra parte della stanza. Usa nomi plausibili, importi realistici e date vicine a oggi. La nostra lista degli errori più comuni negli screenshot approfondisce i dettagli che tradiscono uno screenshot.

Cambiare tema chiaro/scuro e lingua

Se la tua app ha il tema scuro o schede localizzate, cattura ogni variante dalla stessa configurazione invece di cambiare a mano le Impostazioni.

OperazioneSimulatore iOSEmulatore Android
Aspetto scuroxcrun simctl ui booted appearance darkadb shell cmd uimode night yes
Tornare al chiaroxcrun simctl ui booted appearance lightadb shell cmd uimode night no
Lingua dell’appxcrun simctl launch booted com.example.app -AppleLanguages "(de)" -AppleLocale de_DEadb shell cmd locale set-app-locales com.example.app --locales de-DE

Gli argomenti di lingua di iOS valgono solo per quell’avvio, il che è comodo: il simulatore resta in inglese mentre l’app gira in tedesco. Il comando per la lingua della singola app su Android richiede Android 13 (API 33) o successivo; ne abbiamo verificato la sintassi con adb shell cmd locale help su API 35.

Gli screenshot localizzati valgono la fatica quando l’app stessa è tradotta. Catturare la UI in tedesco è metà del lavoro; i titoli hanno bisogno dello stesso trattamento. La nostra guida su come localizzare gli screenshot per l’App Store spiega cosa tradurre e in che ordine, e perché tradurre non basta per localizzare copre il resto.

Mettere tutto insieme: uno script di cattura

Ecco un piccolo script shell che prepara un simulatore iOS, cattura la versione chiara e quella scura di una schermata e poi rimette tutto a posto. La navigazione tra le schermate la lasciamo a te (o ai deep link, che quasi tutte le app hanno già):

#!/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 clear

Oltre una manciata di schermate e lingue, uno script così diventa un lavoro di manutenzione, ed è lì che entrano in gioco strumenti basati sui test della UI come snapshot di fastlane.

Cosa fare con le catture pulite

Una cattura pulita è materia prima. Quasi tutte le schede la inseriscono in una schermata progettata, con un titolo che dice cosa fa quella schermata per l’utente, perché uno screenshot nudo non si spiega da solo nel secondo o due che qualcuno passa a scorrere. La nostra guida passo passo per creare gli screenshot per l’App Store riparte da qui, e le best practice per gli screenshot spiegano cosa mettere in ognuno.

Questo passaggio di design puoi farlo con qualsiasi strumento. In Launch Shots trascini dentro le catture, e il generatore di screenshot per l’App Store si occupa della cornice del dispositivo, del layout dei titoli e delle dimensioni di export per ogni store.

Provalo ora

Crea screenshot pronti per lo store in pochi minuti: gratis, senza filigrana sugli export.

Launch Shots è gratis per iniziare. Tutti i template (oltre 110), più di 220 cornici dei dispositivi e mockup 3D, localizzazione AI e caricamento diretto su App Store Connect e Google Play Console. Nessuna carta di credito richiesta.

Inizia gratis →

In breve

  • iOS: xcrun simctl status_bar booted override --time 9:41 --batteryState charged --batteryLevel 100, poi xcrun simctl io booted screenshot --type=jpeg shot.jpg, poi status_bar booted clear.
  • Android: settings put global sysui_demo_allowed 1, i broadcast della modalità demo per orologio, batteria, rete e notifiche, adb exec-out screencap -p, poi -e command exit.
  • Cattura da un simulatore o emulatore con una dimensione di schermo che lo store accetta così com’è: iPhone 17 Pro Max per lo slot iPhone più grande, un AVD 16:9 per Play.
  • Rimuovi il canale alfa prima di caricare una cattura direttamente su uno dei due store.
  • Carica dati demo realistici e concedi in anticipo le autorizzazioni, così nessuno stato vuoto o finestra di sistema finisce in uno scatto.
  • Automatizza con uno script il passaggio tra chiaro/scuro e tra le lingue, così ogni variante nasce dalla stessa configurazione.

Domande frequenti

05
Come imposto l’orario sulle 9:41 nel Simulatore iOS?
Esegui xcrun simctl status_bar booted override --time 9:41 nel Terminale mentre il simulatore è in funzione. L’override accetta anche opzioni per stato e livello della batteria, tacche del Wi-Fi e della rete cellulare, tipo di rete dati e nome dell’operatore. Resta attivo finché non esegui xcrun simctl status_bar booted clear o non inizializzi il dispositivo, quindi puoi catturare un intero set senza ripeterlo.
Come nascondo le notifiche nella barra di stato dell’emulatore Android?
Attiva la modalità demo della System UI con adb shell settings put global sysui_demo_allowed 1, poi invia il broadcast adb shell am broadcast -a com.android.systemui.demo -e command notifications -e visible false. La modalità demo ti permette anche di fissare l’orologio e mostrare batteria e segnale pieni. Quando hai finito, invia il comando exit per restituire la barra di stato al sistema.
Perché App Store Connect rifiuta lo screenshot del simulatore?
Le cause più comuni sono due: dimensioni e trasparenza. App Store Connect accetta solo dimensioni in pixel precise per ogni slot di display, quindi lo screenshot deve venire da un simulatore con uno schermo di una dimensione accettata. Rifiuta anche le immagini con canale alfa, e simctl salva i PNG con il canale alfa. Catturare con --type=jpeg, o convertire il PNG in JPEG, evita l’errore di trasparenza.
Posso usare gli screenshot grezzi del simulatore come screenshot per l’App Store?
Sì. Apple accetta screenshot semplici, purché abbiano una dimensione accettata e mostrino l’app in uso, come chiede la linea guida 2.3.3 di App Review. Molte app aggiungono comunque un titolo e uno sfondo, perché una schermata nuda non spiega a cosa serve la funzione. In ogni caso, parti da una cattura pulita: barra di stato fissa, dati realistici e nessun overlay di debug.
Quale emulatore Android dovrei usare per gli screenshot del Play Store?
Scegli un profilo dispositivo con uno schermo non più lungo del doppio della sua larghezza, perché Google Play rifiuta gli screenshot in cui il lato lungo supera il doppio di quello corto. Molti telefoni attuali sono più allungati di 2:1, quindi le loro catture grezze non passano. Un profilo 16:9, come un telefono 1080 × 1920, va bene così com’è; in alternativa puoi inserire le catture più alte in una schermata 9:16 progettata apposta.