Implementación de una aplicación de iOS con el reinicio rápido

Normalmente, al compilar una aplicación, el código se compila y combina con otros recursos de proyecto para compilar un lote de aplicaciones que se implementa en el simulador o dispositivo. Con este modelo, cuando realizas un cambio en la aplicación, debes compilar e implementar un nuevo grupo de aplicaciones. Aunque las compilaciones incrementales pueden ayudar a reducir el tiempo de compilación, las implementaciones suelen tardar la misma cantidad de tiempo independientemente del tamaño del cambio.

El reinicio rápido de .NET Multi-Platform App UI (.NET MAUI) permite implementar rápidamente una aplicación .NET MAUI en un dispositivo iOS local de 64 bits, desde Visual Studio 2022, sin necesidad de un host de compilación de Mac. Quita la necesidad de recompilar un paquete de aplicaciones completo insertando cambios en el lote de aplicaciones existente que ya está presente en el dispositivo iOS conectado localmente. Admite cambios en los archivos de código, los recursos y las referencias de proyecto, lo que te permite probar rápidamente los cambios en la aplicación durante su desarrollo.

Importante

El reinicio rápido no es un reemplazo de la experiencia de compilación completa proporcionada por un host de compilación de Mac. Por ejemplo, solo puede implementar aplicaciones que usen la configuración de compilación de depuración y no admite bibliotecas y marcos estáticos, XCFrameworks ni paquetes de recursos de enlace. Para más información, consulte las limitaciones.

Hay varios requisitos que deben cumplirse para usar el reinicio rápido para implementar una aplicación .NET MAUI en un dispositivo iOS conectado localmente:

Configurar

Para configurar un reinicio rápido, sigue estos pasos:

  1. En la barra de herramientas de Visual Studio, usa la lista desplegable Destino de depuración para seleccionar Dispositivos iOS locales y, a continuación, la entrada Dispositivo local:

    Screenshot of choosing the initial debug target for hot restart.

  2. En la barra de herramientas de Visual Studio, selecciona Dispositivo local:

    Screenshot of the initial debug target chosen for hot restart.

    Aparecerá el asistente para instalación Configurar el reinicio rápido, que te guiará a través de la configuración de un dispositivo iOS local para la implementación del reinicio rápido.

  3. En el asistente para instalación Configurar el reinicio rápido, selecciona Siguiente:

    Screenshot of the first step in the setup hot restart wizard.

  4. Si no tienes iTunes instalado, el asistente para instalación te pedirá que lo instales. En el asistente para instalación Configurar el reinicio rápido, selecciona Descargar iTunes:

    Screenshot of the second step in the setup hot restart wizard.

    Nota:

    iTunes puede instalarse desde Microsoft Store o descargarlo desde Apple.

    Espera a que iTunes se descargue y, a continuación, instálalo. Si lo instalas desde Microsoft Store, una vez completada la instalación, ábrelo, sigue las indicaciones adicionales para habilitarlo para detectar dispositivos conectados localmente.

  5. En el asistente para instalación Configurar el reinicio rápido, selecciona Siguiente para pasar al siguiente paso del asistente que te pedirá que conectes un dispositivo iOS local:

    Screenshot of the initial third step in the setup hot restart wizard.

  6. A continuación, conecta el dispositivo iOS al equipo de desarrollo a través de un cable USB. Puede aparecer un mensaje en el dispositivo en el que se te pide que confíes en el equipo de desarrollo. En el dispositivo, haz clic en Confiar y sigue las indicaciones adicionales del dispositivo.

  7. En el asistente para instalación Configurar el reinicio rápido, selecciona Siguiente una vez que se detecte el dispositivo iOS local:

    Screenshot of the completed third step in the setup hot restart wizard.

    Nota:

    Si el asistente para instalación no detecta el dispositivo iOS local, desconecta el dispositivo iOS local desde el equipo de desarrollo. Además, asegúrate de que iTunes reconoce el dispositivo iOS local.

  8. En el asistente para instalación Configurar el reinicio rápido, haz clic en el hipervínculo Iniciar sesión con una cuenta individual para configurar el reinicio rápido para usar la cuenta individual del Programa para desarrolladores de Apple:

    Screenshot of the initial fourth step in the setup hot restart wizard.

    Aparece el cuadro de diálogo Cuenta individual.

    Nota:

    Como alternativa, para configurar el reinicio activo para usar una cuenta de desarrollador de Apple empresarial, haz clic en el hipervínculo Sign in with an enterprise account y escribe tus credenciales en el cuadro de diálogo que aparece. Después, continúa al paso 12:

  9. Crea una clave de API de App Store Connect. Esto requerirá que tengas una cuenta de desarrollador de Apple y una inscripción de pago en el Programa para desarrolladores de Apple. Para obtener información sobre cómo crear una clave de API de App Store Connect, consulta Creating API Keys for App Store Connect API en developer.apple.com.

  10. En el cuadro de diálogo Cuenta individual, escribe los datos de la clave de API de App Store Connect:

    Screenshot of the completed dialog for adding an Apple Individual account.

    Los datos del Nombre, Id. de emisor e Id. de clave se pueden encontrar en App Store Connect seleccionando Users and Access y, a continuación, la pestaña Keys. La clave privada también se puede descargar desde esta ubicación:

    Screenshot of Apple App Store Connect API details.

  11. En el cuadro de diálogo Cuenta individual, haz clic en el botón Agregar. Se cerrará el cuadro de diálogo Cuenta individual.

  12. En el asistente para instalación Configurar el reinicio rápido, haz clic en el botón Finalizar:

    Screenshot of the completed fourth step in the setup hot restart wizard.

    La cuenta de Apple Developer Program se agregará a Visual Studio y se cerrará el asistente para instalación Configurar el reinicio rápido.

  13. En el Explorador de soluciones, haz clic con el botón derecho en el proyecto y selecciona Propiedades.

  14. En las propiedades del proyecto, expande iOS y selecciona Firma de lote. Usa la lista desplegable Esquema para seleccionar Aprovisionamiento automático y luego haz clic en el hipervínculo Configurar aprovisionamiento automático:

    Screenshot of automatic provisioning enabled within the iOS property page in Visual Studio.

    Aparecerá el cuadro de diálogo Configurar aprovisionamiento automático.

  15. En el cuadro de diálogo Configurar aprovisionamiento automático, selecciona el equipo de la clave de la API de conexión:

    Screenshot of the automatic provisioning dialog when it's correctly configured.

    Visual Studio completará el proceso de aprovisionamiento automático. Después, haz clic en el botón Aceptar para descartar el cuadro de diálogo Configurar aprovisionamiento automático.

    Nota:

    Se recomienda el uso del aprovisionamiento automático para que se puedan configurar fácilmente dispositivos de iOS adicionales para la implementación. Pero puedes deshabilitarlo y seguir usando el aprovisionamiento manual si los perfiles de aprovisionamiento correctos están presentes en tu equipo.

Implementación y depuración mediante reinicio rápido

Después de realizar la configuración inicial, el dispositivo iOS conectado local aparecerá en el menú desplegable del destino de depuración. Para implementar y depurar la aplicación:

  1. Asegúrate de que el dispositivo iOS conectado local está desbloqueado.

  2. En la barra de herramientas de Visual Studio, selecciona el dispositivo iOS conectado local en la lista desplegable de destino de depuración y haz clic en el botón Ejecutar para compilar la aplicación e implementarlo en el dispositivo iOS local:

    Screenshot of the chosen debug target for hot restart.

  3. Después de implementar la aplicación, Visual Studio mostrará el cuadro de diálogo Conectando el depurador:

    Screenshot of the dialog asking you to launch the app on your device.

    Inicia la aplicación en el dispositivo y Visual Studio conectará el depurador a la aplicación en ejecución y se descartará el cuadro de diálogo Conectando el depurador.

Mientras depuras la aplicación, puedes editar el código de C# y presionar el botón reiniciar de la barra de herramientas de Visual Studio para reiniciar la sesión de depuración con los nuevos cambios aplicados:

Screenshot of the restart button on the Visual Studio toolbar.

Impedir que el código se ejecute

También se puede usar el símbolo de preprocesador HOTRESTART para impedir que se ejecute cierto código al depurar con el reinicio rápido:

#if !HOTRESTART
  // Code here won't be executed when debugging with hot restart
#endif

Habilitación del reinicio rápido

El reinicio rápido está habilitado de forma predeterminada en Visual Studio 2022. Si se ha deshabilitado anteriormente, se puede habilitar seleccionando Herramientas > Opciones en la barra del menú de Visual Studio. Luego, en el cuadro de diálogo Opciones, expande Xamarin y selecciona Configuración de iOS. A continuación, asegúrate de que Habilitar el reinicio rápido está activado:

Screenshot of how to enable hot restart within Visual Studio.

Limitaciones

Existen limitaciones al usar el reinicio rápido:

  • Solo se puede usar para implementar aplicaciones que usen la configuración de compilación de depuración. Seguirás necesitando un host de compilación de Mac para compilar, firmar e implementar la aplicación para la producción.
  • Los archivos de Guión gráfico y XIB no se admiten y es posible que la aplicación se bloquee si intenta cargarlos en tiempo de ejecución.
  • No se admiten marcos ni bibliotecas de iOS estáticos y es posible que veas errores en tiempo de ejecución o bloqueos si la aplicación intenta cargarlos.
  • No se admiten XCFrameworks ni paquetes de recursos de enlace
  • No se admiten catálogos de recursos. Al usar el reinicio rápido, la aplicación mostrará el icono y la pantalla de inicio de .NET.

Solución de problemas

iOS usa un guardián que supervisa los tiempos de inicio y la capacidad de respuesta de la aplicación y finaliza las aplicaciones que no responden. Por ejemplo, el guardián finaliza las aplicaciones que bloquean el subproceso principal durante un tiempo significativo. En los dispositivos iOS antiguos, el guardián puede finalizar una aplicación que se ha implementado mediante el reinicio rápido antes de que el depurador se haya conectado a ella. La solución consiste en reducir la cantidad de procesamiento realizada en la ruta de inicio de la aplicación y usar un dispositivo iOS más reciente.

Para notificar problemas adicionales, usa la herramienta de comentarios en Ayuda > Enviar comentarios> Informar sobre un problema.