Instalar y configurar herramientas para compilar con iOS

Puede usar Visual Studio con las herramientas multiplataforma de Desarrollo móvil con C++ para editar, depurar e implementar código de iOS en el simulador de iOS o en un dispositivo iOS. Pero, debido a las restricciones de licencia, el código debe compilarse y ejecutarse de forma remota en un equipo Mac. Para compilar y ejecutar aplicaciones de iOS con Visual Studio, debe instalar y configurar el agente remoto vcremoteen el equipo Mac. El agente remoto vcremote controla las solicitudes de compilación desde Visual Studio y ejecuta la aplicación en un dispositivo iOS conectado al Equipo Mac o en el simulador de iOS en el equipo Mac.

Nota:

Para información sobre el uso de servicios Mac hospedados en la nube en lugar de un equipo Mac, vea Configure Visual Studio to connect to your cloud hosted Mac (Configurar Visual Studio para conectarse al servicio Mac basado en la nube). Las instrucciones sirven para compilar con Visual Studio Tools para Apache Cordova. Para usar las instrucciones para compilar con C++, sustituya vcremote por remotebuild.

Una vez instaladas las herramientas para compilar con iOS, consulte este artículo de nuevo. Describe maneras de configurar y actualizar rápidamente vcremote para el desarrollo de iOS en Visual Studio y en el equipo Mac.

Requisitos previos

Para instalar y usar el agente remoto vcremote para desarrollar código para iOS, primero debe tener estos requisitos previos:

  • Un equipo Mac con macOS Mojave, versión 10.14 o posterior.

  • Debe disponer de un ID de Apple

  • Una cuenta activa del programa Apple Developer.

    Puede obtener una cuenta gratuita que permite transferir localmente aplicaciones a un dispositivo iOS solo para realizar pruebas, pero no distribuirlas.

  • Xcode 10.2.1 o una versión posterior

    Xcode se puede descargar desde App Store.

  • Herramientas de línea de comandos de Xcode

    Para instalar las herramientas de línea de comandos de Xcode, abra la aplicación Terminal en su equipo Mac y escriba el siguiente comando:

    xcode-select --install

  • Una cuenta de ID de Apple configurada en Xcode como identidad de firma para firmar aplicaciones.

    Para ver o establecer la identidad de firma en Xcode, abra el menú Xcode y elija Preferencias. Seleccione Cuentas y elija su Apple ID. A continuación, elija el botón Ver detalles . Vea Add your Apple ID account (Agregar una cuenta de ID de Apple) para ver instrucciones detalladas.

    Para obtener información detallada sobre los requisitos de firma, vea What is app signing (Qué es la firma de aplicaciones).

  • Si usa un dispositivo iOS para el desarrollo, un perfil de aprovisionamiento configurado en Xcode para el dispositivo

    Xcode proporciona firma automática, donde crea certificados de firma según sea necesario. Para obtener información detallada sobre la firma automática de Xcode, consulte Firma automática.

    Si desea realizar la firma manual, deberá crear un perfil de aprovisionamiento de la aplicación. Para obtener información detallada sobre la creación de perfiles de aprovisionamiento, vea Create a development provisioning profile (Creación de un perfil de aprovisionamiento de desarrollo).

  • Node.js versión 18.12.1 y npm versión 8.19.2

    Instale la versión 18.12.1 de Node.js en el equipo Mac. Si instala el paquete de Node.js, debe venir con npm versión 8.19.2. Es posible que otras versiones de Node.js y npm no admitan algunos módulos usados en vcremote, lo que puede provocar un error en la instalación de vcremote. Recomendamos instalar Node.js mediante un administrador de paquetes como Administrador de versiones de Node. Evite usar el comando sudo para instalar Node.js, ya que algunos módulos pueden no instalarse al usar sudo.

Instalación de vcremote para iOS

Al instalar la carga de trabajo Desarrollo móvil con C++, Visual Studio puede comunicarse con el agente remoto vcremote que se ejecuta en el equipo Mac para transferir archivos, compilar y ejecutar la aplicación de iOS y enviar comandos de depuración.

Antes de instalar vcremote, asegúrese de haber cumplido los requisitos previos y de completar los pasos de instalación en Instalación del desarrollo móvil multiplataforma con C++.

Para descargar e instalar vcremote

  • Desde la aplicación Terminal en el equipo Mac, compruebe que la versión de Node.js actualmente en uso es la versión necesaria 18.12.1. Para comprobar la versión, ejecute el comando:

    node -v

    Si no es la versión correcta, puede que tenga que seguir las instrucciones de instalación de Node.js que se encuentran en los requisitos previos. A continuación, reinicie Node.js.

  • Después de comprobar que el archivo Node.js necesario está en uso, ejecute este comando para instalar vcremote con esa versión de Node.js:

    npm install -g --unsafe-perm vcremote

    Se recomienda usar el modificador de instalación global (-g), pero no necesario. Si no usa el modificador de instalación global, vcremote se instalará en la ruta de acceso activa actual en la aplicación Terminal.

    Durante la instalación, se instalará vcremote y se activará el modo de desarrollador en su Mac. También se instalan Homebrew y dos paquetes de npm (vcremote-lib y vcremote-utils). Cuando se complete la instalación, puede pasar por alto las advertencias sobre dependencias opcionales omitidas.

    Nota:

    Para instalar Homebrew, debe disponer de acceso sudo (administrador). Si necesita instalar vcremote sin sudo, puede instalar Homebrew manualmente en una usr/local ubicación y agregar su bin carpeta a la ruta de acceso. Para obtener más información, vea la documentación de Homebrew. Para habilitar manualmente el modo de desarrollador, escriba este comando en la aplicación Terminal: DevToolsSecurity -enable

Si actualiza a una nueva versión de Visual Studio, también debe actualizar a la versión actual de vcremote. Para actualizar vcremote, repita los pasos para descargar e instalar el agente remoto.

Iniciar vcremote

El agente remoto vcremote debe ejecutarse para que Visual Studio compile y ejecute el código de iOS. Visual Studio debe emparejarse con vcremote para poder comunicarse. De forma predeterminada, vcremote se ejecuta en modo de conexión protegido, lo que requiere la transferencia de certificados de cliente y servidor entre las máquinas De Visual Studio y Mac.

Nota:

La versión 1.0.19 o posterior de vcremote requiere al menos Visual Studio 2022, versión 17.5.0 Preview 1 o posterior. Si usa Visual Studio 2022 versión 17.4 o una versión anterior, instale vcremote versión 1.0.17.

Para iniciar vcremote

  • Desde la aplicación Terminal del Mac, escriba:

    vcremote

    Este comando iniciará el agente remoto con el directorio de compilación predeterminado de ~/vcremote. Para obtener más opciones de configuración, consulte Configuración de vcremote en el equipo Mac.

La primera vez que inicie vcremote y cada vez que cree un nuevo certificado de servidor, se le proporcionará la información necesaria para configurar la conexión en Visual Studio. La información incluye el nombre de host y el puerto. Si tiene previsto configurar el agente remoto en Visual Studio con el nombre de host, haga ping al equipo Mac desde Windows mediante el nombre de host para comprobar que es accesible. De lo contrario, puede que necesite usar la dirección IP.

Puede usar el agente remoto en modo no seguro. En modo no seguro, el agente remoto se puede emparejar con Visual Studio mediante una conexión HTTP simple que no cifra los datos. Use el modo no seguro en su propio riesgo. Se recomienda usar un modo seguro para conectarse:

Visual Studio 2022, versión 17.5 y posteriores, con vcremote 1.0.19 y versiones posteriores:

En vcremote 1.0.19 y versiones posteriores, vcremote notifica la ruta de acceso a un server-cert.pem archivo de certificado, que se debe cargar en Visual Studio.

Visual Studio 2022, versión 17.4 y versiones anteriores, con vcremote 1.0.17 y versiones anteriores:

La versión 1.0.17 y versiones anteriores de vcremote generan un PIN para una comunicación segura con versiones de Visual Studio a través de La versión 17.4 de Visual Studio 2022.

Screenshot of the Mac Terminal window that shows the host name, port, and PIN reported when VC remote is started.

El código PIN generado es de un solo uso y solo es válido durante un tiempo limitado. Si no empareja Visual Studio con el agente remoto antes de que expire el tiempo, deberá generar un nuevo PIN. Para obtener más información, consulta Generate a new security PIN.

Para deshabilitar el modo de conexión segura

  • Para deshabilitar el modo de conexión segura en vcremote, escriba este comando en la aplicación Terminal en su equipo Mac:

    vcremote --secure false

Para habilitar el modo de conexión segura

  • Para habilitar el modo de conexión segura, escriba este comando:

    vcremote --secure true

Una vez que haya iniciado el agente remoto, puede usarlo desde Visual Studio hasta que lo detenga.

Para detener el agente remoto

  • En la ventana de Terminal en la que se esté ejecutando vcremote, escriba Control+C.

Configuración de vcremote en Visual Studio

Para conectarse al agente remoto vcremote desde Visual Studio, debe especificar la configuración remota en las opciones de Visual Studio. Visual Studio usa la misma información para conectar con el agente remoto en su equipo Mac cada vez que lo use. No es necesario emparejar Visual Studio de nuevo con el agente remoto a menos que genere un nuevo certificado de seguridad en el Equipo Mac o cambie su nombre de host o dirección IP.

Para configurar vcremote desde Visual Studio 2022, versión 17.5 y posteriores

  1. Si el agente aún no se está ejecutando en el equipo Mac, siga los pasos descritos en Iniciar el agente remoto. El equipo Mac debe ejecutar vcremote para Visual Studio para emparejar, conectar y compilar correctamente el proyecto.

  2. Obtenga el nombre de host o dirección IP de su Mac.

    Use el comando ifconfig en una ventana de Terminal para obtener la dirección IP. Use la inet dirección que aparece en la interfaz de red activa.

  3. En la barra de menús de Visual Studio, elija Opciones de herramientas>.

  4. En el cuadro de diálogo Opciones, expanda Multiplataforma>C++>iOS.

  5. En los campos Nombre de host y Puerto , escriba los valores especificados por el agente remoto cuando se inició. El nombre de host puede ser el nombre DNS o dirección IP de su equipo Mac. El puerto predeterminado es 3030.

    Nota:

    Si no puede hacer ping al equipo Mac con el nombre de host, es posible que tenga que usar la dirección IP.

  6. Si usa el agente remoto en el modo de conexión seguro predeterminado, active la casilla Proteger y transfiera el server-cert.pem archivo del Equipo Mac a Visual Studio para cargarlo. A continuación, elija el botón Generar para generar un nuevo client-cert.pem archivo, que debería aparecer en el escritorio. A continuación, transfiera el certificado de cliente al equipo Mac en /vcremote/certs/Authorized-Clients. (Puede transferir varios archivos de certificado de cliente a este directorio, por lo que varias máquinas autorizadas de Visual Studio pueden enviar solicitudes a este equipo Mac).

    Nota:

    Si usa una unidad USB para transferir certificados, elimine los certificados de la unidad USB una vez completada la transferencia.

  7. Pulse Emparejar para habilitar el emparejamiento.

    Screenshot of the Tools Options dialog for iOS pairing. The host name, the port, the Secure checkbox, and the Remote Root values are set.

    El emparejamiento persiste hasta que cambie el nombre de host, el puerto o genere un nuevo servidor o certificado de cliente. Si cambia el nombre de host o el puerto en el cuadro de diálogo Opciones , puede elegir el botón Revertir para deshacer el cambio y revertir al emparejamiento anterior.

    Si el emparejamiento no se realiza correctamente, compruebe que el agente remoto se está ejecutando siguiendo los pasos descritos en Iniciar el agente remoto. Siga los pasos para generar un nuevo certificado de servidor y Generar un nuevo certificado de cliente. Si usa el nombre de host del equipo Mac, intente usar la dirección IP en el campo Nombre de host en su lugar.

  8. Actualice el nombre de la carpeta en el campo Raíz remota para especificar la carpeta que usará el agente remoto en el directorio de inicio (~) del equipo Mac. De forma predeterminada, el agente remoto usa /Users/<username>/vcremote como la raíz remota.

  9. Elija Aceptar para guardar la configuración de conexión de emparejamiento remota.

Para configurar vcremote desde versiones anteriores a Visual Studio 2022, versión 17.5

  1. Si el agente aún no se está ejecutando en el equipo Mac, siga los pasos descritos en Iniciar el agente remoto. El equipo Mac debe ejecutar vcremote para Visual Studio para emparejar, conectar y compilar correctamente el proyecto.

  2. Obtenga el nombre de host o dirección IP de su Mac.

    Use el comando ifconfig en una ventana de Terminal para obtener la dirección IP. Use la inet dirección que aparece en la interfaz de red activa.

  3. En la barra de menús de Visual Studio, elija Opciones de herramientas>.

  4. En el cuadro de diálogo Opciones, expanda Multiplataforma>C++>iOS.

  5. En los campos Nombre de host y Puerto , escriba los valores especificados por el agente remoto cuando se inició. El nombre de host puede ser el nombre DNS o dirección IP de su equipo Mac. El puerto predeterminado es 3030.

    Nota:

    Si no puede hacer ping al equipo Mac usando el nombre de host, puede que necesite usar la dirección IP.

  6. Si usa el agente remoto en el modo de conexión segura predeterminado, active la casilla Seguro y, a continuación, escriba el valor de PIN especificado por el agente remoto en el campo Pin . Si usa el agente remoto en el modo de conexión no segura, desactive la casilla Seguro y deje el campo Pin en blanco.

  7. Pulse Emparejar para habilitar el emparejamiento.

    Screenshot of the Tools Options dialog for iOS pairing. The host name, the port, the Secure checkbox, the pin, and the Remote Root values are set.

    El emparejamiento continúa hasta que se cambie el nombre de host o el puerto. Si cambia el nombre de host o del puerto en el cuadro de diálogo Opciones , para deshacer el cambio, elija el botón Revertir para volver al emparejamiento anterior.

    Si el emparejamiento no se realiza correctamente, compruebe que el agente remoto se está ejecutando siguiendo los pasos descritos en Iniciar el agente remoto. Si ha transcurrido demasiado tiempo desde que se generó el PIN del agente remoto, siga los pasos descritos en Generación de un nuevo PIN de seguridad. A continuación, inténtelo de nuevo. Si usa el nombre de host del equipo Mac, intente usar la dirección IP en el campo Nombre de host en su lugar.

  8. Actualice el nombre de la carpeta en el campo Raíz remota para especificar la carpeta que usará el agente remoto en el directorio de inicio (~) del equipo Mac. De forma predeterminada, el agente remoto usa /Users/<username>/vcremote como la raíz remota.

  9. Elija Aceptar para guardar la configuración de conexión de emparejamiento remota.

Generate a new security PIN

Se aplica a: Visual Studio 2022, versión 17.4 y versiones anteriores, con vcremote versión 1.0.17 y versiones anteriores.

Al iniciar el agente remoto por primera vez, el PIN generado se valida durante un tiempo limitado (10 minutos de forma predeterminada). Si no empareja Visual Studio con el agente remoto antes de que expire el tiempo, deberá generar un nuevo PIN.

Para generar un código PIN nuevo

  1. Detenga el agente o abra una segunda ventana de la aplicación Terminal en su Mac y úsela para escribir el comando.

  2. Especifique el comando siguiente en la aplicación Terminal:

    vcremote generateClientCert

    El agente remoto genera un nuevo PIN temporal. Para emparejar Visual Studio usando el nuevo PIN, repita los pasos descritos en Configurar el agente remoto en Visual Studio.

Generación de un nuevo certificado de cliente

Se aplica a: Visual Studio 2022, versión 17.5 y versiones posteriores, con vcremote versión 1.0.19 y versiones posteriores.

Al emparejar en Visual Studio, generará un nuevo client-cert.pem archivo. Transfiera el archivo de certificado a la máquina de compilación de Mac en /vcremote/certs/Authorized-Clients. Este certificado permite al Equipo Mac autorizar las solicitudes procedentes de la máquina de Visual Studio.

Generar un nuevo certificado de servidor

Se aplica a: Visual Studio 2022, versión 17.5 y versiones posteriores, con vcremote versión 1.0.19 y versiones posteriores.

Por motivos de seguridad, los certificados de servidor que emparejan Visual Studio con el agente remoto están asociados a la dirección IP o el nombre de host de su equipo Mac. Si estos valores cambian, deberá generar un nuevo certificado de servidor y volver a configurar después Visual Studio con los nuevos valores.

Para generar un nuevo certificado de servidor

  1. Detenga el agente vcremote.

  2. Especifique el comando siguiente en la aplicación Terminal:

    vcremote resetServerCert

  3. Cuando se le solicite confirmación, escriba Y.

  4. Para emparejar Visual Studio con el Equipo Mac, transfiera el archivo recién generado server-cert.pem desde el Equipo Mac y cárguelo en Visual Studio, repitiendo los pasos descritos en Configuración del agente remoto en Visual Studio.

Configuración de vcremote en el equipo Mac

Puede configurar el agente remoto usando varias opciones de línea de comando. Así, puede especificar el puerto para escuchar las solicitudes de compilación y especificar el número máximo de compilaciones que mantener en el sistema de archivos. El límite predeterminado es de 10 compilaciones. El agente remoto quitará las compilaciones que excedan este valor máximo al apagar el equipo.

Para configurar el agente remoto

  • Para ver una lista completa de comandos del agente remoto, escriba lo siguiente en la ventana de la aplicación Terminal:

    vcremote --help

  • Para deshabilitar el modo seguro y habilitar las conexiones sencillas basadas en HTTP, escriba:

    vcremote --secure false

    Cuando use esta opción, desactive la casilla Proteger .

  • Para especificar una ubicación para los archivos del agente remoto, especifique:

    vcremote --serverDir directory_path

    Reemplace directory_path por la ubicación del equipo Mac para colocar archivos de registro, compilaciones y certificados de servidor. De forma predeterminada, la ubicación es /Users/<username>/vcremote. Las compilaciones aparecerán organizadas por número de compilación.

  • Para usar un proceso en segundo plano para capturar stdout y stderr en un archivo denominado server.log, escriba:

    vcremote > server.log 2>&1 &

    El server.log archivo puede ayudar a solucionar problemas de compilación.

  • Para ejecutar el agente mediante un archivo de configuración en lugar de con los parámetros de línea de comandos, especifique:

    vcremote --config config_file_path

    Reemplace por config_file_path la ruta de acceso a un archivo de configuración en formato JSON. Las opciones de inicio y sus valores no deben incluir guiones.

Solución de problemas del agente remoto

Depuración en un dispositivo iOS

Si la depuración en un dispositivo iOS no funciona, podría haber problemas con la ideviceinstaller herramienta, que se usa para comunicarse con un dispositivo iOS. Esta herramienta se suele instalar desde Homebrew durante la instalación de vcremote. Siga los pasos siguientes como solución alternativa:

Abra la aplicación Terminal y actualice ideviceinstaller y sus dependencias ejecutando los siguientes comandos en orden:

  1. Compruebe que Homebrew esté actualizado.

    brew update

  2. Desinstale libimobiledevice y usbmuxd

    brew uninstall --ignore-dependencies libimobiledevice

    brew uninstall --ignore-dependencies usbmuxd

  3. Instale la versión más reciente de libimobiledevice y usbmuxd

    brew install --HEAD usbmuxd

    brew unlink usbmuxd

    brew link usbmuxd

    brew install --HEAD libimobiledevice

  4. Desinstale y reinstale ideviceinstaller

    brew uninstall ideviceinstaller

    brew install ideviceinstaller

Compruebe que ideviceinstaller pueda conectar con el dispositivo probando a indicar las aplicaciones que hay instaladas en el dispositivo:

ideviceinstaller -l

Si ideviceinstaller notifica un error que no puede tener acceso a la carpeta /var/db/lockdown, cambie el privilegio en la carpeta mediante este comando:

sudo chmod 777 /var/db/lockdown

Después, vuelva a comprobar si ideviceinstaller puede comunicarse con el dispositivo.

Consulte también