Xcode Simulator App Advanced (Español)

El simulador de Xcode es una de las herramientas más utilizadas por los desarrolladores. Ejecutar y probar apps en el simulador se ha convertido en parte de la rutina diaria de todo desarrollador. Familiarizarse con las distintas opciones del simulador es vital para cualquier desarrollador. ¿Sabías que también puedes crear y configurar simuladores desde la línea de comandos? En este tutorial, aprenderás:

  • Qué es un simulador
  • Conoce las opciones útiles del simulador
  • A crear y configurar simuladores desde la línea de comandos
  • A transmitir y capturar registros usando la línea de comandos
  • A crear un script Bash para automatizar el lanzamiento de la app en un simulador en diferentes locales.

Cómo empezar

Descarga el proyecto haciendo clic en el botón Descargar materiales en la parte superior o inferior de esta página. Abre el proyecto RayWonders. Construye y ejecuta.

Andadura del Simulador Avanzado

Esta aplicación tiene dos pestañas – Foto y Mapa. La pestaña Foto muestra fotos de las maravillas del mundo. Al tocar una foto se muestra una vista detallada de su descripción. La pestaña Mapa muestra las fotos de las maravillas del mundo como anotaciones en un mapa. Este es uno de los raros tutoriales de raywenderlich.com en los que no vas a modificar el proyecto. En su lugar, utilizarás esta aplicación como base para aprender las distintas opciones del simulador. Antes de embarcarte en tu vuelta al mundo, tendrás que entender qué es un simulador.

¿Qué es un simulador?

El simulador es una gran herramienta para simular iOS, iPadOS, tvOS y watchOS en el Mac. Ayuda a la creación rápida de prototipos y a la realización de pruebas de construcción mediante la simulación de diferentes dispositivos. A un nivel más técnico, un simulador es un espacio de usuario separado que se ejecuta en el kernel de macOS.

Arquitectura del simulador

El espacio de usuario es la memoria del sistema asignada para ejecutar aplicaciones, mientras que el espacio del kernel es la memoria del sistema asignada para ejecutar el kernel del sistema operativo y los controladores de dispositivos. El lanzamiento de un nuevo simulador crea un espacio de usuario separado.

El kernel es un componente central del SO. Facilita las interacciones entre los componentes de hardware y software. Es responsable de la gestión del hardware, la asignación de memoria y el arbitraje entre los procesos.

Uno de esos procesos – Daemon – se ejecuta en segundo plano. launchd, cfprefsd, distnoted son algunos de los daemons del sistema.

¿Es lo mismo ejecutar una aplicación en un dispositivo y en un simulador? Lo aprenderás a continuación.

Ejecutar una app en un dispositivo frente a un simulador

Probar apps en un simulador es muy práctico. Sin embargo, hay algunas diferencias clave entre ejecutar apps en un dispositivo y en un simulador.

Rendimiento informático

Los simuladores comparten los mismos recursos informáticos con el Mac. Esto incluye la memoria, la CPU y la conexión de red. En cambio, los dispositivos físicos tienen menos memoria y potencia de cálculo en comparación con un Mac. Además, la red puede ser una bestia imprevisible en el dispositivo físico.

Rendimiento del dispositivo frente al rendimiento del Mac

Pantalla

La resolución y la gama de colores de un Mac y del dispositivo físico pueden diferir, lo que hace que las imágenes y el texto aparezcan irregulares. Aprenderá a simular el tamaño exacto del dispositivo físico más adelante en este tutorial.

Limitaciones del hardware

Algunos componentes de hardware no son compatibles con un simulador. Estos incluyen:

  • Bluetooth
  • Cámara
  • Sensores de movimiento como acelerómetro y giroscopio
  • Sensor de proximidad

Limitaciones de frameworks

Unos pocos frameworks no son soportados en simulador. Entre ellos se encuentran:

  • ARKit
  • HomeKit
  • IOSurface
  • MessageUI

Para una lista más exhaustiva de todas las diferencias, consulta la documentación seleccionando Ayuda ▸ Ayuda del simulador en el menú Simulador.

A continuación, aprenderá a organizar los simuladores.

Organización de simuladores mediante Xcode

Xcode se envía con un conjunto de simuladores por defecto. Para ver una lista de estos simuladores, siga estos pasos:

  1. Abra Xcode.
  2. Seleccione la opción de menú Ventana.
  3. Elija el menú Dispositivos y simuladores.
  4. Dispositivos y simuladores en Xcode

  5. Selecciona la pestaña Simuladores.
  6. Verás una lista de simuladores que se incluyeron con Xcode. Si ha descargado otros tiempos de ejecución en el pasado, verá esos simuladores asociados también.

    Ahora, creará un nuevo simulador con un nombre personalizado.

    Crear simulador desde Xcode

    Sigue estos pasos:

    1. Presiona el botón + en la parte inferior izquierda.
    2. Configura el nombre del simulador como Demo.
    3. Selecciona iPhone 12 Pro como tipo de dispositivo.
    4. Seleccione iOS 14.2 como la versión del sistema operativo.
    5. Pulse Crear.
    6. Esto crea un nuevo simulador con el nombre Demo, que ahora puede encontrar en la lista de simuladores.

      Desmarca la casilla Mostrar como destino de ejecución para el simulador Demo.

      Oculta la opción del simulador

      Esto oculta el simulador. No aparecerá en la lista de simuladores junto al esquema de la app.

      Haga control-clic en el simulador Demo. Aparecen varias opciones, como Eliminar y Renombrar.

      Menú contextual de eliminar el simulador

      Adelante, elimina el simulador Demo haciendo clic en Eliminar. No te preocupes; lo crearás usando un método diferente muy pronto.

      Ejecutando tiempos de ejecución más antiguos

      A veces tendrás que ejecutar tu aplicación en versiones antiguas de tiempos de ejecución.

      Menú de descarga de tiempos de ejecución

      Puedes descargar tiempos de ejecución más antiguos seleccionando Descargar más tiempos de ejecución en el desplegable Versión del sistema operativo al crear un nuevo simulador.

      También puedes descargar más tiempos de ejecución desde la ventana de Componentes. Seleccione la opción Xcode ▸ Preferencias ▸ Componentes.

      Ventana de componentes del simulador

      Esta ventana muestra la lista del runtime del simulador descargado, así como otros runtimes disponibles para su descarga.

      A continuación, aprenderá una forma alternativa de crear simuladores.

      Creación de simuladores desde el menú Simulador

      Construya y ejecute.

      Cuando el simulador se esté ejecutando, siga estos pasos:

      1. Seleccione Archivo ▸ Nuevo simulador en el menú Simulador.
      2. Crear simulador desde el menú

      3. Introducir Demo como nombre del simulador.
      4. Seleccionar iPhone 12 Pro como Tipo de dispositivo.
      5. Seleccionar iOS 14.2 como versión.
      6. Hacer clic en Crear.
      7. Abra el simulador siguiendo estos pasos:
        1. Seleccione Archivo ▸ Abrir simulador en el menú.
        2. Seleccione el tiempo de ejecución de iOS 14.2.
        3. Elige el simulador Demo.
        4. Simulador Demo

          Esto lanza el simulador Demo.

          ¡Eso fue rápido y fácil! A continuación, conocerá las distintas opciones de tamaño del simulador.

          Comparación de las opciones de tamaño del simulador

          Puede cambiar el tamaño de un simulador haciendo clic y arrastrando desde una de las cuatro esquinas. Las opciones del menú Ventana ofrecen cuatro opciones de escala.

          Tamaño físico

          Simulador en modo de tamaño físico

          El tamaño físico redimensiona el simulador para que coincida con el tamaño real del dispositivo. Esto permite visualizar cómo se ve tu aplicación en diferentes tamaños de pantalla.

          Punto exacto

          Simulador en modo punto exacto

          El modo punto exacto dimensiona la ventana para que el contenido tenga el mismo tamaño en dispositivos con diferentes factores de escala. Como resultado, una imagen en un dispositivo con una pantalla de 3x aparece con el mismo tamaño que una pantalla de 2x.

          Pixel Accurate

          Simulador en modo pixel accurate

          En este modo, el tamaño de la ventana cambia al mismo número de píxeles que el dispositivo físico. Cada píxel del dispositivo simulado se asigna a un píxel en la pantalla de su Mac. Esto hace que los simuladores aparezcan más grandes en la pantalla si la pantalla de su Mac tiene una densidad de píxeles inferior a la del dispositivo simulado. Puedes utilizar este modo para comprobar la alineación de las imágenes y los controles de tu app.

          Ajuste de pantalla

          Simulador en modo ajuste

          Esto redimensiona el simulador al tamaño de la pantalla de tu Mac.

          A continuación, aprenderás las distintas opciones que ofrece un simulador.

          Animaciones lentas

          Las animaciones son una parte integral de la experiencia de una app. Construye y ejecuta RayWonders en el simulador de demostración.

          Toca la pestaña Fotos. A continuación, toca una foto de una de las maravillas del mundo para presentar una vista de detalles sobre el lugar. Desecha la vista deslizándola hacia abajo.

          Para simular animaciones lentas, selecciona la opción Depuración ▸ Animaciones lentas en el menú Simulador.

          Opción del menú Animación lenta

          Toca de nuevo la imagen. La vista ahora se anima lentamente.

          RayWonders en el simulador con animación lenta

          Ver las animaciones lentamente puede ayudar a aportar claridad. Además, puede ayudar a examinar los problemas de renderización y rendimiento.

          A continuación, aprenderás a simular el modo oscuro. Antes de continuar, desactive las animaciones lentas anulando la selección de la opción de menú Depuración ▸ Animaciones lentas.

          Modo oscuro

          El modo oscuro proporciona una gran experiencia de visualización en entornos con poca luz. El simulador proporciona una opción para ver tu aplicación en Modo Oscuro.

          Opción de menú Alternar apariencia

          Selecciona Características ▸ Alternar apariencia. Esto cambia la apariencia al modo oscuro. Ahora, toca la pestaña Mapa en RayWonders.

          Mapa de RayWonders Modo Oscuro

          Notarás que el mapa ha cambiado a una apariencia oscura. Es fácil, ¿verdad? Esta es una forma práctica de probar tu aplicación en Modo Oscuro.

          Para volver a cambiar la apariencia a la predeterminada, deselecciona Características ▸ Alternar apariencia. Para aprender a soportar el Modo Oscuro, revisa Supporting Dark Mode: Adapting You App to Support Dark Mode tutorial.

          A continuación, aprenderás a simular las notificaciones push!

          Simulando las notificaciones push

          Las notificaciones push son una gran manera de informar a tus usuarios de las nuevas actualizaciones de contenido en tu app. En el pasado, probar las notificaciones push era un reto. Necesitabas un dispositivo físico para probar las notificaciones push. A partir de Xcode 11.4, puedes simular las notificaciones push en un simulador.

          Crea un archivo llamado RayWondersPushNotification.apns utilizando lo siguiente:

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

          Este es un payload de notificación push simple y visible con un title y un body. El Simulator Target Bundle es una clave especial. Especifica el ID del bundle de la app que debe recibir la notificación.

          Antes de probar el payload, debes conceder primero el permiso de notificación en la app.

          Conceder permiso de notificación

          Sigue estos pasos:

          1. Abre RayWonders en el simulador de la Demo.
          2. Toca el icono de la campana en la parte superior derecha en la pestaña Fotos.
          3. Selecciona Permitir en el aviso de permiso de notificaciones.
          4. Selecciona Dispositivo ▸ Inicio en el menú del simulador para poner la app en segundo plano.
          5. Opción del menú Inicio en el simulador

            A continuación, arrastra y suelta el archivo RayWondersPushNotification.apns en el simulador de la Demo.

            Simula la notificación push mediante arrastrar y soltar

            ¡Ta-da! Aparece una notificación push visible. ¡Eso ha sido fácil! Ten en cuenta que un simulador sólo puede simular una notificación push. Para probar una notificación push real recibida desde el servidor de notificaciones push de Apple se necesita un dispositivo físico.

            Para conocer más a fondo las notificaciones push, lee este Tutorial de notificaciones push: Primeros pasos.

            A continuación, aprenderá a hacer zoom.

            Acercarse y alejarse

            Abra RayWonders en el simulador. Cambie a la pestaña de Mapa. El mapa está centrado y ampliado en una maravilla del mundo. ¿Dónde están las otras maravillas del mundo?

            Tendrás que alejar el zoom para ver la vista del mundo. Haz clic y arrastra mientras mantienes pulsada la tecla Opción.

            Ampliación y desplazamiento en el simulador

            Hacer clic y arrastrar está muy bien, pero pronto puede cansar. A continuación, aprenderás una forma más rápida de ir a una ubicación.

            Simular una ubicación

            El simulador proporciona una forma fácil de simular una ubicación. En primer lugar, necesitas conceder permisos de localización en RayWonders.

            Conceder permisos de localización

            Sigue estos pasos:

            1. Abre RayWonders en el simulador y cambia a la pestaña Mapa.
            2. Toca el botón Iniciar servicios de localización en la pestaña Mapa.
            3. Seleccione el permiso Permitir mientras se usa la aplicación.
            4. Ahora, para simular la ubicación:

            5. Seleccione Características ▸ Ubicación ▸ Ubicación personalizada en el menú del simulador.
            6. Menú de simulación de ubicación

            7. Ingresa 41,8902142 como latitud y 12,4900422 como longitud.
            8. Haz clic en Aceptar.
            9. Simula las coordenadas de ubicación

              Esto te lleva directamente al Coliseo en el mapa: ¡tu viaje más rápido!

              El Coliseo en el mapa

              Sin embargo, introducir las coordenadas de cada lugar a simular es una tarea que requiere mucha memoria -tu memoria, claro-. A continuación, aprenderás una solución más sencilla para este problema.

              Compartir ubicaciones desde la app de Mapas

              La app de Mapas en macOS ofrece una forma sencilla de compartir ubicaciones con tu simulador.

              Simular ubicación desde la app de Mapas

              Sigue estos pasos:

              1. Abre la app de Mapas.
              2. Ingresa Machu Picchu en el texto de búsqueda.
              3. Pulsa el botón Compartir junto al campo de búsqueda.
              4. Elige Simulador en el desplegable.
              5. En el aviso de ubicación, selecciona Demo como simulador.
              6. Opción de menú Simulador en Mapas

              7. Pulsa Enviar.
              8. Ahora estás en Machu Picchu en la vista de mapa del simulador.

                Localización simulada en RayWonders

                ¡Felicidades! ¡Acabas de crear un récord mundial como el viajero más rápido desde el Coliseo a Machu Picchu! :]

                Para aprender a manejar la ubicación en tu app con más profundidad, consulta MapKit y Core Location.

                Ahora, es el momento de agitar las cosas.

                Simulando gestos de agitación

                Los gestos de agitación son grandes señales para incitar al usuario a dar feedback en una app. Pero, ¿cómo se puede agitar un simulador? Afortunadamente, agitar el Mac rigurosamente no es la solución. El simulador proporciona una manera fácil.

                Abre RayWonders en el simulador de la Demo. Seleccione Dispositivo ▸ Agitar en el menú del Simulador.

                Opción de menú Agitar

                Esto simula un gesto de agitación.

                Agitación detectada en RayWonders

                RayWonders detecta la agitación y solicita una alerta al usuario. Puedes detectar y manejar los gestos de agitación en tu app implementando el método motionEnded(_:with:). Para saber más, consulta la documentación de Apple.

                A continuación, aprenderás a simular una advertencia de memoria.

                Simular una advertencia de memoria

                iOS envía una advertencia a la app cuando su uso de memoria se acerca al límite superior del dispositivo. La app tiene que responder purgando los datos de la caché, que se pueden volver a crear más tarde.

                Abre RayWonders en el simulador de la Demo. Selecciona Debug ▸ Simular advertencia de memoria en el menú.

                Opción de menú de advertencia de memoria

                Esto simula una advertencia de memoria.

                Advertencia de memoria en RayWonders

                RayWonders muestra una alerta. Puede aprender más sobre el manejo de las advertencias de memoria en esta documentación de Apple sobre la respuesta a las advertencias de memoria.

                Hasta ahora, ha visto algunas opciones útiles del simulador. Hay varias otras que no están cubiertas en este tutorial. Deberías comprobarlas, dependiendo de las necesidades de tu app. Algunas de estas opciones son:

        • Simular la sincronización de iCloud utilizando Funciones ▸ Activar la sincronización de iCloud.
        • Simular la autorización de Apple Pay utilizando Funciones ▸ Autorizar Apple Pay.
        • Activar Siri utilizando Dispositivo ▸ Siri.
        • Comprobar el registro del sistema utilizando Depuración ▸ Abrir registro del sistema.
        • A continuación, aprenderás a interactuar con los simuladores utilizando la línea de comandos.

          Organizar simuladores utilizando la línea de comandos

          Hasta ahora, has creado y gestionado simuladores utilizando Xcode. Además, también has aprendido las distintas opciones del menú del Simulador. Ahora, aprenderá a gestionar y utilizar los simuladores desde la línea de comandos.

          Abra el Terminal. Introduce el siguiente comando:

        xcrun simctl --help

        y pulsa Enter.

        La opción de ayuda proporciona la lista de todos los subcomandos disponibles utilizando simctl.

        Comando de ayuda de simctl

        Simctl es una herramienta que ayuda a gestionar y a interactuar de forma programada con el simulador. Puede acceder a simctl utilizando la herramienta de línea de comandos xcrun.

        Ahora, explorará varios de estos subcomandos. Ejecuta lo siguiente:

        xcrun simctl list

        El comando list muestra la lista de todos los dispositivos disponibles y los tiempos de ejecución.

        Comando Simctl List

        También muestra el estado actual de los dispositivos, si es Booted o Shutdown.

        A continuación, aprenderás a crear y lanzar un simulador desde la línea de comandos.

        Crear simulador desde la línea de comandos

        Antes de crear un nuevo simulador, borra el simulador Demo creado a través de Xcode. Introduce lo siguiente:

        xcrun simctl delete Demo

        El comando delete identifica un simulador y lo borra. Ahora, crea un nuevo simulador desde la línea de comandos.

        Introduce lo siguiente:

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

        El comando crear toma un tipo de dispositivo y un tiempo de ejecución y crea un simulador. Esto crea un simulador de iPhone 12 Pro con tiempo de ejecución de iOS 14.2.

        Ahora, el Terminal muestra el identificador único del nuevo dispositivo.

        Comando Simctl Create

        Introduce lo siguiente:

        xcrun simctl boot Demo

        El inicia el simulador Demo. Por defecto, está en el estado Shutdown.

        Ahora, instala RayWonders usando la línea de comandos. Primero necesitarás el paquete de aplicaciones. Sigue estos pasos:

        1. Abre el navegador de proyectos y selecciona RayWonders.app, situada en la carpeta Productos.
        2. RayWonders en el navegador de proyectos

        3. Haz clic con el botón derecho y selecciona Mostrar en el Finder.
        4. RayWonders en la ventana del Finder

        5. Copia RayWonders a tu directorio de inicio.

        Abre el Terminal y navega al directorio de inicio introduciendo lo siguiente:

        cd ~

        A continuación, ejecuta lo siguiente:

        xcrun simctl install Demo RayWonders.app

        El comando install instala RayWonders en el simulador. Gran trabajo!

        Incluso puedes lanzar la aplicación usando simctl. Introduce lo siguiente:

        xcrun simctl launch Demo com.raywenderlich.RayWonders

        El comando launch toma el ID del bundle de la app como parámetro. RayWonders se lanza en el simulador Demo.

        ¡Felicidades! Ahora has creado, arrancado, instalado y lanzado un simulador desde la línea de comandos. Aquí hay algunas otras opciones que puede probar:

        • Terminar: Esto termina una aplicación utilizando el identificador del paquete.
        • Borrar: Esto borra el contenido del dispositivo.
        • Desinstalar: Esto desinstala la aplicación. Tendrás que especificar el identificador del bundle de la aplicación.
        • A continuación, aprenderás algunos comandos interesantes que están disponibles para tu aplicación.

          Hacer capturas de pantalla

          Las capturas de pantalla de tu aplicación pueden ser útiles en varios escenarios. Por ejemplo, necesitarás capturas de pantalla cuando envíes tu aplicación a la AppStore.

          Introduce el siguiente comando:

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

        Esto toma una captura de pantalla de la pantalla actual y la guarda en el archivo screenshot.png. Además de un png, el comando screenshot admite otros formatos de archivo, como TIFF, BMP, GIF y JPEG.

        Una captura de pantalla puede mostrar el aspecto de tu aplicación, y una imagen vale más que mil palabras. Sin embargo, un vídeo vale mucho más :]

        Grabación de vídeo

        Puedes grabar vídeos de tu app utilizando simctl. Para empezar a grabar, introduce el siguiente comando:

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

        Interactúa con RayWonders en el simulador. Pulsa Control-C en el terminal cuando hayas terminado. Esto guarda el vídeo en Demo.mov.

        Además, puedes especificar el códec deseado al grabar. El códec por defecto es hevc.

        Grabar vídeo usando la línea de comandos

        El comando recordVideo ayuda a evitar el uso de un reproductor QuickTime para grabar un vídeo de tu app.

        Personalizar la barra de estado

        Comprueba la barra de estado de la app en el simulador. Puedes ver que la batería está llena, el dispositivo tiene la mejor señal y la hora en el simulador es la hora local de tu Mac. Qué haces si quieres anular esto?

        Introduce el siguiente comando en Terminal:

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

        Esto anula la barra de estado para establecer:

        • Red de datos como 4G
        • Señal de telefonía móvil a dos barras
        • Estado de la batería a carga y el nivel de batería al 25%
        • Hora en el simulador a 12:05

        Barra de estado en RayWonders

        Cuando hagas esto en tu propio proyecto, puedes establecer la información de la barra de estado a lo que quieras.

        El comando status_bar puede ser realmente útil cuando quieras personalizar la apariencia de las capturas de pantalla y vídeos de tu app.

        Cuando hayas terminado, revierte la barra de estado a la apariencia por defecto introduciendo lo siguiente:

        xcrun simctl status_bar Demo clear

        Depuración y diagnóstico

        Simctl también proporciona varios comandos para ayudar a depurar y diagnosticar problemas.

        Vuelve a Terminal, e introduce lo siguiente:

        xcrun simctl get_app_container Demo com.raywenderlich.RayWonders

        get_app_container imprime la ruta del paquete de aplicaciones.

        Obtener el contenedor de la app usando Simctl

        Puedes inspeccionar los datos dentro del contenedor de la app usando esta ruta. Además, los registros de tu simulador pueden ser realmente útiles a la hora de depurar problemas.

        Ahora, escribe lo siguiente en Terminal:

        xcrun simctl spawn Demo log stream

        Esto inicia el streaming de todos los registros del simulador Demo.

        Transmite los registros del simulador

        Sin embargo, esto puede ser demasiados datos para inspeccionar. Pulsa Control-C para detener el stream.

        Intenta lo siguiente:

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

        Esto filtra los logs y muestra sólo los de RayWonders.

        Stream RayWonders logs

        A medida que interactúes con la aplicación, verás más logs mostrados en la terminal. Estos registros pueden ser muy útiles a la hora de presentar un error o proporcionar información a Apple.

        Escribe lo siguiente:

        xcrun simctl diagnose

        El comando diagnose recoge un montón de datos, incluyendo registros y fallos. También genera archivos que pueden ayudar a Apple a depurar problemas. Por defecto, los registros recogidos son para el dispositivo arrancado. Especificando el UDID de un dispositivo, puede restringir la recopilación de registros a ese dispositivo en particular.

        ¡Ahora se ha convertido en un experto en la línea de comandos del simulador! Puede dar un paso más allá automatizando acciones comunes usando scripts Bash.

        Automatización usando un script Bash

        Ahora, creará un script para clonar un simulador y lanzar RayWonders en una localización diferente.

        Primero, abre el Terminal, e introduce lo siguiente:

        touch sim_utility.sh

        Esto crea un nuevo archivo con el nombre sim_utility. La extensión .sh denota que es un script de shell.

        Nota: Puedes crear el script en cualquier lugar de tu sistema de archivos. Por motivos de organización en el proyecto de ejemplo, el script se encuentra en la carpeta `Scripts`.

        A continuación, ejecuta:

        chmod +x sim_utility.sh

        Esto hace que el sim_utility.sh sea ejecutable para que puedas ejecutarlo.

        Abre sim_utility.sh en un editor, y añade lo siguiente:

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

        Esto es lo que ocurre:

        1. El script toma un nombre de comando y un nombre de simulador como parámetros de la línea de comandos.
        2. get_id_of_simulatorget_status_of_simulator y launch son stubs vacíos que implementarás a continuación.
        3. El script actualmente soporta un comando llamado launch. El launch toma tres parámetros adicionales, que implementarás pronto.

        En get_id_of_simulator, sustituye #TODO por lo siguiente:

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

        get_id_of_simulator busca en la lista de un simulador que coincida con el nombre especificado como parámetro. Si encuentra una coincidencia, la operación de substring obtiene el identificador único del simulador.

        En el método get_status_of_simulator, sustituye #TODO por lo siguiente:

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

        get_status_of_simulator busca un simulador con un nombre coincidente en la lista de dispositivos. Si encuentra una coincidencia, obtiene el estado del simulador: arrancado o apagado. Los utilizará en el launch.

        Implementando el lanzamiento

        En launch, sustituye #TODO por lo siguiente:

        #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)"

        Guarda el archivo. Esto es lo que hace, paso a paso. Hace:

        1. Da parámetros adicionales a launch, incluyendo el ID del bundle de la aplicación, la configuración regional y el idioma para lanzar tu app. Declara una variable local CLONE_NAME, que es el nombre del dispositivo clonado. En este caso, el nombre del dispositivo clonado es la configuración regional que especifiques;
        2. Obtiene el ID del simulador llamando a get_id_of_simulator. Luego, almacena el resultado en SIMULATOR_ID. Si no hay ningún simulador que coincida, sale del programa;
        3. Obtiene el estado del simulador llamando a get_status_of_simulator. Si el estado es Booted, ejecuta el comando shutdown para apagarlo. Para ser clonado, un dispositivo debe estar apagado;
        4. Clona el simulador utilizando el comando clone;
        5. Bota tanto el simulador original como el clonado utilizando el comando boot;
        6. Lanza la app en el simulador original utilizando el comando launch;
        7. Lanza la app utilizando el comando launch en el simulador clonado. Especifica la configuración regional y el idioma para que la app se lance.

        Lanzamiento de RayWonders en una configuración regional diferente

        Abre el Terminal, y ejecuta lo siguiente:

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

        RayWonders se lanza en hindi en un simulador clonado con el nombre hi_IN.

        RayWonders en hindi

        Ya no tendrás que ir a los ajustes y cambiar el idioma del dispositivo para probar tu app. Ahora puedes ver tu app en varios idiomas simultáneamente. Gran trabajo!

        Nota: Si has encontrado problemas al ejecutar el script, asegúrate de que sólo tienes un simulador con el nombre Demo. Puedes comprobar el número de simuladores disponibles ejecutando xcrun simctl list | grep Demo en el terminal. Elimina cualquier simulador duplicado e inténtalo de nuevo.

        RayWonders también admite algunos otros idiomas. Ejecuta lo siguiente:

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

        RayWonders ahora se lanza en japonés en un nuevo simulador.

        RayWonders en japonés

        Como reto divertido, implementa dos comandos más en el script sim_utility.

        • Limpieza: Esto borra un simulador dado un nombre de simulador.
        • Ayuda: Esto imprime un menú de todos los comandos soportados por el script.
          • Encontrarás la versión final del script con todas estas opciones implementadas en la carpeta Scripts de los materiales descargados.

            ¿A dónde ir desde aquí?

            Descarga el proyecto haciendo clic en el botón Descargar materiales en la parte superior o inferior de esta página.

            En este tutorial, has aprendido toneladas de opciones útiles del simulador y de la línea de comandos. Para aprender más, por favor, echa un vistazo a estos vídeos de la WWDC:

            • Obtener el máximo provecho de Simulator
            • Conviértete en un experto en Simulator
              • Espero que hayas disfrutado de este tutorial. Si tienes alguna pregunta o comentario, únete a la discusión del foro más abajo.

                raywenderlich.com Weekly

                El boletín de raywenderlich.com es la forma más fácil de estar al día de todo lo que necesitas saber como desarrollador móvil.

                Obtén un resumen semanal de nuestros tutoriales y cursos, ¡y recibe un curso gratuito en profundidad por correo electrónico como bono!

                Valoración media

                5/5

                Añade una valoración para este contenido

                Inscríbete para añadir una valoración
                9 valoraciones

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *