Xcode Simulator App Advanced (Italiano)

Il simulatore Xcode è uno degli strumenti più utilizzati dagli sviluppatori. Eseguire e testare le app sul simulatore è diventato parte della routine quotidiana di ogni sviluppatore. Acquisire familiarità con le varie opzioni del simulatore è vitale per ogni sviluppatore. Sapevate che potete creare e configurare i simulatori anche dalla riga di comando? In questo tutorial, imparerete:

  • Cos’è un simulatore
  • Informazioni sulle utili opzioni del simulatore
  • Per creare e configurare i simulatori dalla riga di comando
  • Per trasmettere e catturare i log usando la riga di comando
  • Per creare uno script Bash per automatizzare il lancio dell’app su un simulatore in diverse località.

Iniziare

Scaricate il progetto facendo clic sul pulsante Scarica materiali in cima o in fondo a questa pagina. Apri il progetto RayWonders. Costruisci ed esegui.

Passeggiata avanzata del simulatore

Questa applicazione ha due schede – Foto e Mappa. La scheda Foto mostra le foto delle meraviglie del mondo. Toccando una foto viene visualizzata una vista dettagliata della sua descrizione. La scheda Mappa mostra le foto delle meraviglie del mondo come annotazioni su una mappa. Questo è uno dei rari tutorial di raywenderlich.com in cui non modificherete il progetto. Invece, userete questa applicazione come base per imparare le varie opzioni del simulatore. Prima di intraprendere il vostro giro del mondo, avrete bisogno di capire cos’è un simulatore.

Cos’è un simulatore?

Il simulatore è un ottimo strumento per simulare iOS, iPadOS, tvOS e watchOS sul Mac. Aiuta la prototipazione rapida e il test delle build simulando diversi dispositivi. Ad un livello più tecnico, un simulatore è uno spazio utente separato che gira sul kernel di macOS.

Architettura del simulatore

Lo spazio utente è la memoria di sistema allocata per eseguire le applicazioni, mentre lo spazio kernel è la memoria di sistema allocata per eseguire il kernel del sistema operativo e i driver dei dispositivi. L’avvio di un nuovo simulatore crea uno spazio utente separato.

Il kernel è un componente centrale del sistema operativo. Facilita le interazioni tra i componenti hardware e software. È responsabile della gestione dell’hardware, dell’allocazione della memoria e dell’arbitraggio tra i processi.

Uno di questi processi – Daemon – gira in background. launchd, cfprefsd, distnoted sono alcuni dei demoni di sistema.

Eseguire un’applicazione su un dispositivo e su un simulatore è la stessa cosa? Lo imparerai dopo.

Eseguire un’app su un dispositivo contro un simulatore

Testare le app su un simulatore è molto utile. Tuttavia, ci sono alcune differenze chiave tra l’esecuzione delle app su un dispositivo e su un simulatore.

Prestazioni di calcolo

I simulatori condividono le stesse risorse di calcolo con il Mac. Questo include memoria, CPU e connessione di rete. Al contrario, i dispositivi fisici hanno meno memoria e potenza di calcolo rispetto a un Mac. Inoltre, la rete può essere una bestia imprevedibile sul dispositivo fisico.

Prestazioni del dispositivo vs prestazioni del Mac

Display

La risoluzione e la gamma di colori su un Mac e sul dispositivo fisico possono differire, facendo apparire immagini e testo frastagliati. Imparerai come simulare l’esatta dimensione del dispositivo fisico più avanti in questo tutorial.

Limitazioni hardware

Alcuni componenti hardware non sono supportati in un simulatore. Questi includono:

  • Bluetooth
  • Camera
  • Sensori di movimento come accelerometro e giroscopio
  • Sensore di prossimità

Limitazioni del framework

Alcuni framework non sono supportati nel simulatore. Questi includono:

  • ARKit
  • HomeKit
  • IOSurface
  • MessageUI

Per una lista più esaustiva di tutte le differenze, fate riferimento alla documentazione selezionando Help ▸ Simulator Help nel menu Simulator.

In seguito, imparerete come organizzare i simulatori.

Organizzare i simulatori usando Xcode

Xcode viene fornito con un set predefinito di simulatori. Per visualizzare una lista di questi simulatori, segui questi passi:

  1. Apri Xcode.
  2. Seleziona l’opzione di menu Window.
  3. Scegli il menu Devices and Simulators.
  4. Dispositivi e simulatori in Xcode

  5. Seleziona la scheda Simulatori.

Vedrai un elenco di simulatori che sono stati forniti con Xcode. Se hai scaricato altri runtime in passato, vedrai anche quei simulatori associati.

Ora, creerai un nuovo simulatore con un nome personalizzato.

Crea simulatore da Xcode

Seguite questi passi:

  1. Premete il pulsante + in basso a sinistra.
  2. Imposta il nome del simulatore come Demo.
  3. Seleziona iPhone 12 Pro come tipo di dispositivo.
  4. Selezionate iOS 14.2 come versione del sistema operativo.
  5. Premete Create.

Questo crea un nuovo simulatore con il nome Demo, che ora potete trovare nella lista dei simulatori.

Selezionate la casella di controllo Show as runtime destination per il simulatore Demo.

Opzione Nascondi simulatore

Questo nasconde il simulatore. Non apparirà nella lista dei simulatori accanto allo schema dell’app.

Control-click sul simulatore Demo. Appariranno diverse opzioni, come Elimina e Rinomina.

Elimina il menu contestuale del simulatore

Vai avanti ed elimina il simulatore Demo cliccando su Elimina. Non preoccuparti; lo creerai con un metodo diverso molto presto.

Eseguire i vecchi runtime

A volte dovrai eseguire la tua applicazione su vecchie versioni di runtime.

Menu Download runtimes

Puoi scaricare runtimes più vecchie selezionando Download more runtimes nel menu a tendina OS Version quando crei un nuovo simulatore.

Puoi anche scaricare più runtimes dalla finestra Components. Seleziona Xcode ▸ Preferenze ▸ Opzione Componenti.

Finestra componenti simulatore

Questa finestra mostra l’elenco del runtime del simulatore scaricato e altri runtime disponibili per il download.

Prossimo, imparerai un modo alternativo per creare simulatori.

Creazione di simulatori dal menu del simulatore

Costruisci ed esegui.

Quando il simulatore è in esecuzione, segui questi passi:

  1. Seleziona File ▸ Nuovo simulatore dal menu del simulatore.
  2. Crea simulatore dal menu

  3. Inserisci Demo come nome del simulatore.
  4. Seleziona iPhone 12 Pro come Tipo di dispositivo.
  5. Seleziona iOS 14.2 come versione.
  6. Clicca Crea.

Apri il simulatore seguendo questi passi:

  1. Seleziona File ▸ Apri simulatore dal menu.
  2. Seleziona il tempo di esecuzione di iOS 14.2.
  3. Scegliete il simulatore Demo.

Simulatore demo

Questo lancia il simulatore Demo.

È stato facile e veloce! Successivamente, imparerai a conoscere le varie opzioni di dimensione del simulatore.

Confronto delle opzioni di dimensione del simulatore

Puoi ridimensionare un simulatore cliccando e trascinando da uno dei quattro angoli. Le opzioni del menu Finestra forniscono quattro opzioni di ridimensionamento.

Dimensione fisica

Simulatore in modalità dimensione fisica

Dimensione fisica ridimensiona il simulatore per corrispondere alle dimensioni reali del dispositivo. Questo permette di visualizzare l’aspetto della tua app su schermi di diverse dimensioni.

Punto preciso

Simulatore in modalità punto preciso

La modalità punto preciso dimensiona la finestra in modo che il contenuto abbia le stesse dimensioni su dispositivi con diversi fattori di scala. Come risultato, un’immagine su un dispositivo con un display 3x appare con le stesse dimensioni di un display 2x.

Pixel Accurate

Simulatore in modalità pixel accurate

In questa modalità, la dimensione della finestra cambia allo stesso numero di pixel del dispositivo fisico. Ogni pixel sul dispositivo simulato corrisponde a un pixel sul display del Mac. Questo fa sì che i simulatori appaiano più grandi sullo schermo se il display del vostro Mac ha una densità di pixel inferiore a quella del dispositivo simulato. Puoi usare questa modalità per controllare l’allineamento delle immagini e dei controlli nella tua app.

Fit Screen

Simulatore in modalità fit

Questo ridimensiona il simulatore alle dimensioni del display del tuo Mac.

In seguito, imparerete le varie opzioni fornite in un simulatore.

Animazioni lente

Le animazioni sono parte integrante dell’esperienza di un’app. Costruisci ed esegui RayWonders nel simulatore Demo.

Tocca la scheda Foto. Poi, tocca una foto di una delle meraviglie del mondo per presentare una vista di dettagli sul luogo. Per simulare animazioni lente, seleziona l’opzione Debug ▸ Slow Animations nel menu Simulatore.

Opzione menu animazione lenta

Tocca nuovamente l’immagine. La vista ora si anima lentamente.

RayWonders sul simulatore con animazione lenta

Vedere le animazioni lentamente può aiutare a fare chiarezza. Inoltre, può aiutare ad esaminare i problemi di rendering e di prestazioni.

Prossimamente, imparerete a simulare il Dark Mode. Prima di procedere, disabilita le animazioni lente deselezionando l’opzione di menu Debug ▸ Slow Animations.

Dark Mode

Dark Mode fornisce un’ottima esperienza di visualizzazione in ambienti con poca luce. Il simulatore fornisce un’opzione per visualizzare la tua app in Dark Mode.

Opzione di menu Toggle appearance

Seleziona Features ▸ Toggle Appearance. Questo altera l’aspetto in modalità scura. Ora, tocca la scheda Mappa in RayWonders.

Modalità scura mappa RayWonders

Si noterà che la mappa ha assunto un aspetto scuro. Facile, vero? Questo è un modo pratico per testare la tua app in Dark Mode.

Per riportare l’aspetto a quello predefinito, deseleziona Features ▸ Toggle appearance. Per sapere come supportare la Dark Mode, dai un’occhiata a Supporting Dark Mode: Adapting You App to Support Dark Mode tutorial.

Prossimo, imparerai come simulare le notifiche push!

Simulare le notifiche push

Le notifiche push sono un ottimo modo per far sapere ai tuoi utenti gli aggiornamenti dei nuovi contenuti della tua app. In passato, testare le notifiche push era una sfida. Avevi bisogno di un dispositivo fisico per testare le notifiche push. A partire da Xcode 11.4, potete simulare le notifiche push su un simulatore.

Create un file chiamato RayWondersPushNotification.apns utilizzando quanto segue:

{ "Simulator Target Bundle": "com.raywenderlich.RayWonders", "aps": { "alert": { "title": "Hindi language support added!", "body": "Checkout RayWonders in Hindi!" } }}

Questo è un semplice payload di notifica push visibile con un title e un body. Il Simulator Target Bundle è una chiave speciale. Specifica l’ID del bundle dell’app che dovrebbe ricevere la notifica.

Prima di provare il payload, devi prima concedere il permesso di notifica nell’app.

Grant notification permission

Segui questi passi:

  1. Apri RayWonders nel simulatore Demo.
  2. Toccare l’icona della campana in alto a destra nella scheda Foto.
  3. Selezionare Consenti nella richiesta di autorizzazione di notifica.
  4. Selezionare Dispositivo ▸ Casa dal menu del simulatore per mettere l’applicazione in background.
  5. Opzione menu Home nel simulatore

In seguito, trascinare e rilasciare il file RayWondersPushNotification.apns sul simulatore Demo.

Simulare la notifica push usando il drag and drop

Ta-da! Appare una notifica push visibile. È stato facile! Tieni presente che un simulatore può solo simulare una notifica push. Per testare una vera notifica push ricevuta dal server di notifica push di Apple è necessario un dispositivo fisico.

Per saperne di più sulle notifiche push, leggete questo Tutorial sulle notifiche push: Getting Started.

Prossimo, imparerai come fare lo zoom.

Zooming In and Out

Apri RayWonders nel simulatore. Passa alla scheda Mappa. La mappa è centrata e ingrandita su una meraviglia del mondo. Dove sono le altre meraviglie del mondo?

Per vedere la vista del mondo è necessario zoomare. Clicca e trascina tenendo premuto il tasto Opzione.

Zoom e pan nel simulatore

Cliccare e trascinare è fantastico, ma può diventare presto noioso. In seguito, imparerai un modo più veloce per andare in una posizione.

Simulare una posizione

Il simulatore fornisce un modo semplice per simulare una posizione. Per prima cosa, è necessario concedere i permessi di localizzazione in RayWonders.

Concessione dei permessi di localizzazione

Seguite questi passi:

  1. Apri RayWonders nel simulatore e passa alla scheda Mappa.
  2. Tocca il pulsante Start Location Services nella scheda Mappa.
  3. Selezionare l’autorizzazione Allow While Using App.

Ora, per simulare la posizione:

  1. Selezionare Features ▸ Location ▸ Custom Location dal menu Simulator.
  2. Menù Simula posizione

  3. Inserisci 41.8902142 come latitudine e 12.4900422 come longitudine.
  4. Clicca OK.
  5. Simula le coordinate del luogo

Questo ti porta direttamente al Colosseo sulla mappa – il tuo viaggio più veloce di sempre!

Colosseo sulla mappa

Tuttavia, inserire le coordinate di ogni luogo da simulare è un compito piuttosto impegnativo per la memoria – la tua memoria, intendo -. In seguito, imparerete una soluzione più semplice a questo problema.

Condividere i luoghi dall’app Mappe

L’app Mappe su macOS fornisce un modo semplice per condividere i luoghi con il tuo simulatore.

Simulare i luoghi dall'app Mappe

Segui questi passi:

  1. Apri l’app Mappe.
  2. Inserisci Machu Picchu nel testo di ricerca.
  3. Fai clic sul pulsante Condividi accanto al campo di ricerca.
  4. Scegli Simulatore dal menu a tendina.
  5. Nella richiesta di posizione, seleziona Demo come simulatore.
  6. Opzione del menu Simulatore in Mappe

  7. Clicca Invia.

Ora sei a Machu Picchu nella vista mappa del simulatore.

Posizione simulata in RayWonders

Congratulazioni! Hai appena creato un record mondiale come viaggiatore più veloce dal Colosseo a Machu Picchu! :]

Per saperne di più sulla gestione della posizione nella tua app, dai un’occhiata a MapKit e Core Location.

Ora, è il momento di smuovere le acque.

Simulare i gesti di scuotimento

I gesti di scuotimento sono ottimi spunti per spingere l’utente a dare un feedback in un’app. Ma come si può scuotere un simulatore? Per fortuna, scuotere rigorosamente il Mac non è la soluzione. Il simulatore fornisce un modo semplice.

Apri RayWonders sul simulatore Demo. Selezionare Device ▸ Shake dal menu Simulator.

Opzione menu Shake

Questo simula un gesto di scuotimento.

Shake detected in RayWonders

RayWonders rileva lo scuotimento e segnala un avviso all’utente. Potete rilevare e gestire i gesti di scuotimento nella vostra app implementando il metodo motionEnded(_:with:). Per saperne di più, consultate la documentazione Apple.

In seguito, imparerete come simulare un avviso di memoria.

Simulare un avviso di memoria

iOS invia un avviso all’app quando il suo utilizzo della memoria si avvicina al limite superiore del dispositivo. L’app deve rispondere eliminando i dati della cache, che possono essere ricreati in seguito.

Apri RayWonders sul simulatore Demo. Selezionate Debug ▸ Simula avviso memoria dal menu.

Opzione menu avviso memoria

Questo simula un avviso memoria.

Avviso memoria in RayWonders

RayWonders mostra un avviso. Potete imparare di più sulla gestione degli avvisi di memoria in questa documentazione di Apple Responding to Memory Warnings.

Finora avete visto alcune utili opzioni del simulatore. Ce ne sono molte altre che non sono coperte in questo tutorial. Dovreste controllarle, a seconda delle esigenze della vostra applicazione. Alcune di queste opzioni includono:

  • Simulare la sincronizzazione di iCloud usando Features ▸ Trigger iCloud Sync.
  • Simulare l’autorizzazione di Apple Pay usando Features ▸ Authorize Apple Pay.
  • Trigger Siri usando Device ▸ Siri.
  • Controlla il registro di sistema usando Debug ▸ Apri il registro di sistema.

In seguito, imparerai a interagire con i simulatori usando la riga di comando.

Organizzare i simulatori usando la riga di comando

Finora, hai creato e gestito i simulatori usando Xcode. Inoltre, hai anche imparato le varie opzioni del menu Simulator. Ora, imparerai a gestire e usare i simulatori dalla linea di comando.

Apri il Terminale. Inserisci il seguente comando:

xcrun simctl --help

e premi Invio.

L’opzione aiuto fornisce la lista di tutti i sottocomandi disponibili usando simctl.

Comando Aiuto simctl

Simctl è uno strumento che aiuta a gestire e interfacciarsi programmaticamente con il simulatore. Puoi accedere a simctl usando lo strumento a riga di comando xcrun.

Ora, esplorerai diversi di questi sottocomandi. Esegui i seguenti:

xcrun simctl list

Il comando list mostra la lista di tutti i dispositivi disponibili e i runtime.

Comando Simctl List

Mostra anche lo stato attuale dei dispositivi, se è Booted o Shutdown.

In seguito, imparerete a creare e lanciare un simulatore dalla linea di comando.

Creare un simulatore dalla linea di comando

Prima di creare un nuovo simulatore, cancellate il simulatore Demo creato tramite Xcode. Inserisci il seguente:

xcrun simctl delete Demo

Il comando delete identifica un simulatore e lo elimina. Ora, create un nuovo simulatore dalla linea di comando.

Inserite quanto segue:

xcrun simctl create Demo "iPhone 12 Pro" "iOS14.2"

Il comando create prende un tipo di dispositivo e un tempo di esecuzione e crea un simulatore. Questo crea un simulatore di iPhone 12 Pro con runtime iOS 14.2.

Ora, il terminale mostra l’identificatore unico del nuovo dispositivo.

comando Simctl Create

Inserite quanto segue:

xcrun simctl boot Demo

Il comando avvia il simulatore Demo. Per default, è nello stato di Shutdown.

Ora, installate RayWonders usando la linea di comando. Avrai prima bisogno del bundle dell’applicazione. Seguite questi passi:

  1. Aprite il navigatore del progetto e selezionate RayWonders.app, che si trova nella cartella Products.
  2. RayWonders nel navigatore del progetto

  3. Fate clic con il tasto destro e selezionate Show in Finder.
  4. RayWonders nella finestra del Finder

  5. Copia RayWonders nella tua home directory.

Aprire il Terminale e navigare nella home directory inserendo quanto segue:

cd ~

In seguito, eseguire quanto segue:

xcrun simctl install Demo RayWonders.app

Il comando install installa RayWonders sul simulatore. Ottimo lavoro!

Si può anche lanciare l’applicazione usando simctl. Inserite quanto segue:

xcrun simctl launch Demo com.raywenderlich.RayWonders

Il comando launch prende l’ID del bundle dell’app come parametro. RayWonders viene lanciato nel simulatore Demo.

Congratulazioni! Ora hai creato, avviato, installato e lanciato un simulatore dalla riga di comando. Ecco alcune altre opzioni che potete provare:

  • terminate: Questo termina un’applicazione usando l’identificatore del bundle.
  • cancella: Questo cancella il contenuto del dispositivo.
  • disinstalla: Questo disinstalla l’applicazione. Dovrai specificare l’identificatore del bundle dell’applicazione.

In seguito, imparerai alcuni comandi interessanti che sono disponibili per la tua applicazione.

Fare screenshot

Gli screenshot della tua applicazione possono essere utili in diversi scenari. Per esempio, avrete bisogno di screenshot quando presentate la vostra app su AppStore.

Inserite il seguente comando:

xcrun simctl io Demo screenshot screenshot.png --type="png"

Questo fa uno screenshot dello schermo corrente e lo salva nel file screenshot.png. Oltre al png, il comando screenshot supporta altri formati di file, come TIFF, BMP, GIF e JPEG.

Uno screenshot può mostrare l’aspetto della vostra app, e un’immagine vale più di mille parole. Tuttavia, un video vale molto di più :]

Registrare video

Puoi registrare video della tua app usando simctl. Per iniziare la registrazione, inserite il seguente comando:

xcrun simctl io Demo recordVideo Demo.mov --codec="h264"

Interagite con RayWonders sul simulatore. Premi Control-C nel terminale quando hai finito. Questo salva il video in Demo.mov.

Inoltre, potete specificare il codec desiderato durante la registrazione. Il codec predefinito è hevc.

Registra il video usando la linea di comando

Il comando recordVideo aiuta a non usare un player QuickTime per registrare un video della tua app.

Personalizzazione della barra di stato

Controlla la barra di stato dell’app nel simulatore. Puoi vedere che la batteria è piena, il dispositivo ha il miglior segnale e l’ora sul simulatore è l’ora locale di Mac. Cosa fate se volete sovrascrivere questi dati?

Entrare il seguente comando nel Terminale:

xcrun simctl status_bar Demo override \ --dataNetwork 4g --cellularBars 2 --batteryState charging \ --batteryLevel 25 --time 12:05

Questo sovrascrive la barra di stato per impostare:

  • Rete dati come 4G
  • Segnale cellulare a due barre
  • Stato della batteria in carica e il livello della batteria al 25%
  • Tempo sul simulatore a 12:05

Barra di stato in RayWonders

Quando fate questo nel vostro progetto, potete impostare le informazioni della barra di stato su qualsiasi cosa vogliate.

Il comando status_bar può essere molto utile quando si vuole personalizzare l’aspetto delle schermate e dei video delle app.

Quando avete finito, riportate la barra di stato all’aspetto predefinito inserendo quanto segue:

xcrun simctl status_bar Demo clear

Debuging e diagnosi

Simctl fornisce anche diversi comandi per aiutare il debug e la diagnosi dei problemi.

Torna al Terminale, e inserisci quanto segue:

xcrun simctl get_app_container Demo com.raywenderlich.RayWonders

get_app_container stampa il percorso del bundle dell’applicazione.

Get app container usando Simctl

Puoi ispezionare i dati all’interno dell’app container usando questo percorso. Inoltre, i log del vostro simulatore possono essere davvero utili quando si fa il debug dei problemi.

Ora, digitate quanto segue nel terminale:

xcrun simctl spawn Demo log stream

Questo avvia lo streaming di tutti i log dal simulatore Demo.

Stream simulator logs

Tuttavia, questi possono essere troppi dati da ispezionare. Premi Control-C per fermare il flusso.

Prova quanto segue:

xcrun simctl spawn Demo log stream | grep com.raywenderlich.RayWonders

Questo filtra i log e visualizza solo quelli di RayWonders.

Stream RayWonders logs

Come interagisci con l’applicazione, vedrai più logs visualizzati nel terminale. Questi log possono essere estremamente utili quando si segnala un bug o si fornisce un feedback ad Apple.

Scrivi quanto segue:

xcrun simctl diagnose

Il comando diagnose raccoglie una serie di dati, inclusi i log e i crash. Genera anche file che possono aiutare Apple a risolvere i problemi. Per impostazione predefinita, i log raccolti sono per il dispositivo avviato. Specificando l’UDID di un dispositivo, puoi limitare la raccolta dei log a quel particolare dispositivo.

Ora sei diventato un esperto della linea di comando del simulatore! Puoi fare un ulteriore passo avanti automatizzando le azioni più comuni usando gli script Bash.

Automatizzare usando uno script Bash

Ora, creerai uno script per clonare un simulatore e lanciare RayWonders in un locale diverso.

Prima di tutto, aprite il Terminale ed inserite quanto segue:

touch sim_utility.sh

Questo crea un nuovo file con il nome sim_utility. L’estensione .sh denota che si tratta di uno script di shell.

Nota: Potete creare lo script ovunque nel vostro file system. Per motivi di organizzazione nel progetto di esempio, lo script si trova nella cartella `Scripts`.

Prossimo, esegui:

chmod +x sim_utility.sh

Questo rende il sim_utility.sh eseguibile in modo da poterlo eseguire.

Apri sim_utility.sh in un editor, e aggiungere quanto segue:

#!/bin/bash#1COMMAND="$1"SIMULATOR_NAME="$2"#2get_id_of_simulator() { #TODO}get_status_of_simulator() { #TODO}launch() { #TODO}#3case $COMMAND in"launch") launch "$3" "$4" "$5" ;;*) launch_help exit 1 ;;esac

Ecco cosa succede:

  1. Lo script prende un nome di comando e un nome di simulatore come parametri della linea di comando.
  2. get_id_of_simulatorget_status_of_simulator e launch sono stub vuoti che verranno implementati successivamente.
  3. Lo script attualmente supporta un comando chiamato launch. Il launch richiede tre parametri aggiuntivi, che implementerete presto.

In get_id_of_simulator, sostituite #TODO con quanto segue:

xcrun simctl list | grep "$SIMULATOR_NAME" | \awk 'match($0, /\((+)\)/) {print substr( $0, RSTART + 1, RLENGTH-2 )}'

get_id_of_simulator cerca nella lista dei simulatori il nome specificato come parametro. Se trova una corrispondenza, l’operazione di sottostringa ottiene l’identificatore unico del simulatore.

Nel metodo get_status_of_simulator, sostituire #TODO con il seguente:

xcrun simctl list | grep "$SIMULATOR_NAME" | \awk 'match($0, /\((+)\)/) {print substr( $0, RSTART + 1, RLENGTH - 2 )}'

get_status_of_simulator cerca un simulatore con un nome corrispondente nella lista dei dispositivi. Se trova una corrispondenza, ottiene lo stato del simulatore – avviato o spento. Userai questi nel launch.

Implementazione del lancio

In launch, sostituite #TODO con quanto segue:

#1BUNDLE_ID="$1"LOCALE="$2"LANGUAGE="$3"CLONE_NAME="$LOCALE"#2SIMULATOR_ID=$(get_id_of_simulator)if ; then echo "No device matching the name: $SIMULATOR_NAME" returnfiecho "Simulator id: $SIMULATOR_ID"echo "Bundle id: $BUNDLE_ID"echo "Locale: $LOCALE"#3SIMULATOR_STATUS=$(get_status_of_simulator)echo "Simulator Status: $SIMULATOR_STATUS"if ; then echo "Making sure the device is shutdown first..." xcrun simctl shutdown "$SIMULATOR_NAME"fi#4echo "Cloning the device with name $LOCALE..."xcrun simctl clone "$SIMULATOR_NAME" "$CLONE_NAME"#5echo "Booting device..."xcrun simctl boot "$SIMULATOR_NAME"xcrun simctl boot "$CLONE_NAME"#6echo "Launching app..."xcrun simctl launch "$SIMULATOR_NAME" "$BUNDLE_ID"#7xcrun simctl launch "$CLONE_NAME" "$BUNDLE_ID" -AppleLocale "$LOCALE" \ -AppleLanguages "($LANGUAGE)"

Salvate il file. Ecco cosa fa questo, passo dopo passo. Esso:

  1. Dà parametri aggiuntivi a launch, incluso l’ID del bundle dell’applicazione, il locale e la lingua in cui lanciare l’applicazione. Dichiara una variabile locale CLONE_NAME, che è il nome del dispositivo clonato. In questo caso, il nome del dispositivo clonato è il locale che avete specificato;
  2. Ricerca l’ID del simulatore chiamando get_id_of_simulator. Poi, memorizza il risultato in SIMULATOR_ID. Se non c’è nessun simulatore corrispondente, esce dal programma;
  3. Ricerca lo stato del simulatore chiamando get_status_of_simulator. Se lo stato è Booted, esegue il comando shutdown per spegnerlo. Per essere clonato, un dispositivo deve essere spento;
  4. Clona il simulatore usando il comando clone;
  5. Blocca sia il simulatore originale che quello clonato usando il comando boot;
  6. Lancia l’applicazione sul simulatore originale usando il comando launch;
  7. Lancia l’applicazione usando il comando launch sul simulatore clonato. Specifica il locale e la lingua in cui lanciare l’applicazione.

Lancio di RayWonders in un locale diverso

Apri il terminale ed esegui quanto segue:

./sim_utility.sh launch Demo com.raywenderlich.RayWonders hi_IN hi

RayWonders si lancia in Hindi su un simulatore clonato con il nome hi_IN.

RayWonders in Hindi

Non dovrai più andare nelle impostazioni e cambiare la lingua del dispositivo per testare la tua app. Ora puoi vedere la tua app in più lingue contemporaneamente. Ottimo lavoro!

Nota: Se hai riscontrato problemi nell’esecuzione dello script, assicurati di avere un solo simulatore con il nome Demo. Puoi controllare il numero di simulatori disponibili eseguendo xcrun simctl list | grep Demo nel terminale. Cancellate qualsiasi simulatore duplicato e provate di nuovo.

RayWonders supporta anche alcune altre lingue. Eseguite quanto segue:

./sim_utility.sh launch Demo com.raywenderlich.RayWonders ja_Jp ja

RayWonders ora viene lanciato in giapponese su un nuovo simulatore.

RayWonders in giapponese

Come sfida divertente, implementate altri due comandi nello script sim_utility.

  • Cleanup: Questo cancella un simulatore dato un nome di simulatore.
  • Help: Stampa un menu di tutti i comandi supportati dallo script.

Troverete la versione finale dello script con tutte queste opzioni implementate nella cartella Scripts nei materiali scaricati.

Dove andare da qui?

Scaricate il progetto cliccando sul pulsante Download Materials in cima o in fondo a questa pagina.

In questo tutorial, hai imparato tonnellate di utili opzioni del simulatore e della linea di comando. Per saperne di più, controlla questi video del WWDC:

  • Utilizzare al massimo il simulatore
  • Diventare un esperto del simulatore

Spero che questo tutorial ti sia piaciuto. Se hai domande o commenti, partecipa alla discussione sul forum qui sotto.

raywenderlich.com Weekly

La newsletter di raywenderlich.com è il modo più semplice per rimanere aggiornato su tutto ciò che devi sapere come sviluppatore mobile.

Ottieni un digest settimanale dei nostri tutorial e corsi, e ricevi gratuitamente un corso di approfondimento via email come bonus!

Valutazione media

5/5

Aggiungi una valutazione per questo contenuto

Accedi per aggiungere una valutazione

9 valutazioni

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *