A partir de Xojo 2024r4 será posible aplicar los procesos de Sandboxing, Hardened Runtime y Notarización a las apps de macOS creadas desde el IDE, tanto en macOS como desde Windows.
Estas nuevas opciones están disponibles en el Panel Inspector cuando se selecciona el paso Sign disponible en el Navegador bajo Build Settings > macOS.
Requisitos
Para poder aplicar los procesos de Sandboxing, Hardened Runtime y también el proceso de Notarización en tus apps macOS, es preciso que tu Mac cumpla con los siguientes requisitos:
- macOS 11.3 o posterior.
- Xcode 13 o posterior. Ejecútalo como mínimo una vez para asegurarte de que estén instalados todos los componentes y SDK requeridos.
- Apple Developer ID. Es preciso contar con una membresía de pago como desarrollador en el programa de Apple. Asegúrate de que los certificados correspondientes de desarrollador (macOS) estén instalados en el llavero de tu Mac.
- Conexión de Internet activa.
Sandboxing
Cuando se active el conmutador de Sandboxing podrás acceder al editor asociado para configurar los entitlements apropiados para los propósitos de la App.
Los ajustes de Sandboxing se aplicarán incluso cuando se ejecute la app desde el IDE (es decir, en modo de depuración). Esto significa que se puede aplicar el Sandboxing tanto utilizando un certificado Ad-Hoc como el Certificado que se encuentre instalado en el Llavero de tu Mac y se corresponda con el Developer ID Application Certificate.
Hardened Runtime
Cuando se active la opción correspondiente a Hardened Runtime, podrás acceder al editor asociado para configurar los entitlements de hardening correspondientes para los propósitos de tu aplicación.
Nota: La característica Hardened Runtime no se aplicará cuando el proyecto se ejecuta desde el IDE.
Cuando se cree la app, si la opción Hardened Runtime está activada pero no se ha proporcionado ningún valor válido en el campo Developer ID (es decir, la identidad correspondiente al Developer ID Application a utilizar durante el firmado), entonces se mostrará el siguiente diálogo y se abortará el proceso de compilación.
Notarización
Cuando se activa la opción de Notarización también se activará de forma automática la opción correspondiente a Hardened Runtime en el caso de que no lo estuviese ya (dado que el proceso de Notarización requiere que se aplique Hardened Runtime a la app).
Cuando se activa la opción de Notarización tendrás acceso al diálogo de configuración (Setup) donde podrás definir la contraseña específica de la aplicación requerida para que el proceso de notarización funcione correctamente. Sólo será preciso que realices dicho proceso una vez e incluso la contraseña de aplicación creada se sincronizará vía iCloud con el resto de tus Mac que también utilicen la misma cuenta de iCloud.
Tal y como ocurre con la opción de Hardened Runtime, el proceso de Notarización no se llevará a cabo cuando se ejecuta el proyecto desde el IDE.
Cuando se compile la app, si la opción de Notarización está activada pero no se ha proporcionado ningún valor válido en el campo Apple Development, entonces se mostrará el siguiente diálogo y se abortará el proceso de compilación.
El proceso de Notarización requiere de una conexión activa a Internet, dado que precisa contactar con el servicio de Apple responsable de comprobar los contenidos y código ejecutable del bundle de la app. Esto significa que el tiempo requerido para completar dicho proceso podrá variar en función de cuál sea la velocidad de tu conexión de Internet, y también la disponibilidad y/o carga actuales del propio servicio de Apple encargado de ello.
Entitlements personalizados del usuario
Más allá de los entitlements que se pueden seleccionar en los editores de Sandboxing y Hardened Runtime, es probable que tu app también precise de otras entradas que aun no estén disponibles en dichos editores. De ser así, puedes utilizar el campo User Entitlements para seleccionar el archivo (en formato .Plist) que contenga las entradas adicionales requeridas.
Dichos entitlements personalizados se combinarán con aquellos que estén seleccionados en los editores. Si los entitlements personalizados colisionan con los ya seleccionados en los editores de Sandboxing y/o Hardened Runtime, entonces se aplicarán aquellos seleccionados en los editores, descartando por tanto los duplicados encontrados en el archivo proporcionado.
Compilar apps macOS… desde Windows
Cuando se compila la app para macOs desde Windows, y se aplican las opciones de Sandboxing, Hardened Runtime y/o Notarización (y opcionalmente también los entitlements personalizados), entonces el archivo final comprimido que se genera contendrá todo lo necesario; es decir, los archivos de soporte requeridos y también el script del shell que deberá de ejecutarse desde un Mac para completar el firmado del bundle de la App. El único paso que aun precisa de un Mac es el correspondiente a generar la contraseña específica de aplicación empleada por el paso de Notarización.
En conclusión
Como has podido ver, a partir de Xojo 2024r4 se simplifica la capacidad de aplicar Sandboxing, Hardened Runtime y Notarización a tus apps macOS, e incluso ejecutar los proyectos en modo de depuración desde el propio IDE en un entorno de sandboxing.
De esta forma tendrás una mejor información y retroalimentación sobre el comportamiento de la app cuando se trata de acceder a los archivos, realizar conexiones de red o incluso a la hora de acceder a determinados componentes como puedan ser la cámara, micrófono, etc. Es decir, la misma experiencia que tendrán los usuarios de tu app cuando la descarguen desde la Mac AppStore o bien desde tu sitio Web.
Si precisas más información sobre el significado de Sandboxing, Hardened Runtime o Notarización (y para qué o por qué se utilizan en las apps de macOS), echa un vistazo al artículo “Apps macOS: Desde el Sandboxing hasta la Notarización, los fundamentos“