1 votos

¿Cómo desarrollar y probar una aplicación de macOS que admita múltiples versiones de macOS utilizando un MacBook Pro?

Soy un desarrollador de aplicaciones para iOS/macOS. Tengo una aplicación que es compatible con macOS 12/13/14. Tengo una nueva MacBook Pro M3 (noviembre de 2023) ejecutando macOS 14.3.1.

Necesito ejecutar también macOS 12 y macOS 13 en esta misma MacBook Pro para poder probar la aplicación y asegurarme de que todas las funcionalidades funcionen correctamente en todas las versiones soportadas de macOS.

Originalmente tenía la intención de instalar macOS 12 y 13 en sus propias particiones y usar arranque dual (triple) según fuera necesario. Sin embargo, esto falló porque la nueva Mac no es compatible con nada anterior a macOS 14.1. Consulta Cómo instalar macOS Ventura en una MacBook Pro M3 para ver una publicación relacionada que hice sobre intentar instalar macOS Ventura en la nueva Mac. Publica una respuesta allí si conoces alguna solución para eso. Dicha solución haría que la mayor parte de esta publicación no tuviera sentido.

Luego pasé a la virtualización. Descargué e instalé UTM. No tuve problemas para instalar macOS 13.6 después de descargar el archivo ipsw correspondiente de Apple. Pero entonces se presentó un obstáculo. Resulta que macOS ejecutándose en una máquina virtual en un host de Apple Silicon no admite la capacidad de iniciar sesión en un AppleID. Consulta https://developer.apple.com/forums/thread/707682 para ver muchos comentarios al respecto. La publicación del empleado de Apple "Eskimo" cerca de la parte superior del hilo tiene la información más relevante:

  • Las máquinas virtuales de macOS en Apple silicon no admiten el inicio de sesión con Apple ID.
  • Esto ha sido así desde que se introdujo el marco de virtualización en macOS 11.
  • Sigue siendo cierto en macOS 14 (actualmente en versión beta).
  • Esto significa que varios flujos de trabajo importantes no funcionan en tales máquinas virtuales.
  • Apple no ha realizado ningún anuncio oficial sobre si esto cambiará en el futuro.

Esta restricción causa los siguientes problemas al intentar desarrollar y probar aplicaciones:

  • No puedes descargar ningún software a través de la aplicación App Store porque no puedes iniciar sesión en la tienda. Es bastante fácil solucionarlo descargando en el host y copiando al VM de invitado.
  • No puedes descargar ninguna aplicación de pruebas de TestFlight porque no puedes iniciar sesión en TestFlight.
  • No puedes probar ninguna funcionalidad de iCloud en la aplicación porque no puedes iniciar sesión en iCloud.

He intentado solucionar algunos de estos problemas.

  • Ejecutando Xcode en el host, construí una versión de desarrollo de la aplicación. Luego copié la aplicación resultante a una carpeta compartida disponible para el VM de invitado. Cuando intento ejecutar esa versión de la aplicación desde el VM de invitado, aparece un mensaje emergente que indica que "La aplicación XXX no se puede abrir".
  • Envié una versión de desarrollo a través de TestFlight. Descargué la aplicación vía TestFlight en el host. Luego copié la aplicación resultante a una carpeta compartida disponible para el VM de invitado. Cuando intento ejecutar esa versión de la aplicación desde el VM de invitado, aparece un mensaje emergente que indica que la aplicación ya no está disponible debido a que el perfil de aprovisionamiento es inválido.

Así que no puedo ejecutar una versión de desarrollo y no puedo ejecutar una versión de TestFlight. Verifiqué que puedo descargar la aplicación desde el App Store en el host, copiarla al VM y luego ejecutarla con éxito desde el VM de invitado. Solo fallan las versiones de desarrollo y de TestFlight.

Si pudiera ejecutar TestFlight en el VM de invitado, estoy seguro de que funcionaría. Pero dado que no puedes iniciar sesión en el AppleID en el VM de invitado, eso no es una opción.

¿Cómo puedo compilar mi aplicación en mi Mac de host de tal manera que pueda ejecutarla en uno o más VM de invitado?*

1voto

nluigi Puntos 163

Encontré una solución parcial que permitirá que una compilación de desarrollo realizada en la Mac anfitriona se ejecute en una VM de invitado. Resulta que el problema está relacionado con el perfil de provisión y sus dispositivos registrados.

Mi proyecto de Xcode está configurado para hacer firmas automáticas. Es mucho más simple que hacerlo manualmente. Sin embargo, el inconveniente de la provisión automática es que el perfil de provisión generado solo es válido para el dispositivo en el que realizas la compilación.

La solución es desactivar la opción "Gestionar firmas automáticamente". Luego necesitas configurar un perfil de provisión apropiado que incluya todos los dispositivos de macOS (reales y virtuales) en los que desees ejecutar la aplicación.

Para cada instancia de macOS, ejecuta la aplicación Configuración del Sistema (macOS 13 y 14). Ve a General -> Acerca de. Desplázate hacia abajo y haz clic en "Informe del Sistema". En el informe generado busca el valor "UDID de Provisión". Necesitarás ese valor para cada anfitrión/VM. En macOS 12, haz clic en el icono de Apple en la parte superior izquierda y selecciona "Acerca de esta Mac". Luego haz clic en "Informe del Sistema" en el diálogo.

Nota: Los siguientes enlaces (excepto "Apple Developer") requieren que seas un desarrollador registrado de Apple

Ve a la página de Cuenta del Sitio de Desarrolladores de Apple y haz clic en Dispositivos.

Añade un nuevo dispositivo para cada VM (y Mac anfitriona si aún no está). Elige macOS como plataforma. Dale un nombre. Ingresa el "UDID de Provisión" del Informe del Sistema en el campo "ID de Dispositivo (UUID)".

Una vez que todos los dispositivos estén configurados, ve a la página de Perfiles y crea un perfil de provisión con el certificado y bundle id apropiados. Selecciona todos los dispositivos de macOS que necesites. Una vez creado, descárgalo en tu Mac anfitrión.

En tu proyecto de Xcode necesitas importar ese perfil descargado en la entrada de Perfil de Provisión para tu aplicación de macOS.

Una vez en su lugar, puedes compilar la aplicación normalmente. Copia la aplicación compilada a una VM y ahora debería ejecutarse. O realiza una compilación de Archivo y haz clic en Distribuir aplicación. Elige Depuración o Personalizado y completa la exportación. Copia la aplicación exportada a la VM. La opción Personalizado requiere más pasos pero te brinda más opciones que seleccionar Depuración.

Aunque esto te permite compilar la aplicación en Xcode en la Mac anfitriona y ejecutarla en una VM, aún requiere mucho trabajo adicional. Debes actualizar el dispositivo y el perfil de provisión cada vez que creas una nueva VM. Son pasos adicionales para copiar la aplicación compilada a la VM. Tampoco hay forma de probar cualquier función de iCloud (como CloudKit) u otras funciones que requieran que el usuario inicie sesión en un AppleID.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X