Cómo notarizar su aplicación 4D fusionada (macOS 12 y Xcode 13)

Traducido automáticamente de Deepl

Nota: Actualización para macOS 12/Monterey y Xcode 13. Para Xcode 12 y anteriores, consulte esta entrada del blog.

Con Monterey (macOS 12), es muy recomendable notarizar las aplicaciones distribuidas a través de una red pública. Un número importante de desarrolladores transfiere sus aplicaciones mediante un dispositivo de almacenamiento conectado o a través de archivos compartidos; la notarización no es necesaria en estos casos en los que el usuario ya confía en el desarrollador. La notarización tiene como objetivo garantizar a los usuarios que la aplicación no es maliciosa y sólo es necesaria para las aplicaciones descargadas desde un sitio web.

Utilizando nuestra función de firma incorporada al construir sus aplicaciones con 4D v18, su aplicación está lista para ser notariada. Este proceso se realiza fuera de 4D. Consiste en añadir una firma electrónica a su solicitud y enviar su solicitud firmada a un servicio de inspección automatizado. Aquí está todo lo que necesita saber:

PREREQUISITOS

XCODE

La notarización requiere Xcode 13 o posterior y macOS 12 o posterior.

Si tiene más de una versión de Xcode instalada en su Mac, puede utilizar la utilidad Xcode-select para elegir la versión adecuada:

sudo xcode-select -s /path/to/Xcode13.app

Aunque no suela utilizar Xcode directamente, debería lanzarlo al menos una vez. Si te avisa de que hay que descargar «Developer Tools», acéptalo.

Si te pide que confirmes las condiciones de la licencia, acéptalas.

No es mala idea repetir este paso después de instalar una nueva versión de Xcode. Por lo general, es necesario aceptar los cambios de licencia; de lo contrario, la notarización fallará.

En algunos casos, es necesario iniciar sesión en https://appleid.apple.com/account/home para aceptar las nuevas condiciones de la Apple Store; de lo contrario, la notarización podría fallar (incluso si no desea publicar en la App Store).

AUTENTICACIÓN DE DOS FACTORES

También necesitarás haber activado la autenticación de dos factores en tu ID de Apple.

Si no estás seguro de haber configurado la autenticación de dos factores, entra en la página de tu cuenta del ID de Apple, busca la opción de autenticación de dos factores en la sección de Seguridad y comprueba si la función está activada o desactivada.

Resumen del proceso

Se requiere una configuración para la notarización. Esto debe hacerse sólo una vez. Luego, para cada compilación, es necesario comprimir, cargar, esperar los resultados, sellar y volver a comprimir. Y esto se aplica a cada aplicación (Cliente, Servidor, Usuario Único, componente) y a cada compilación.

Esta entrada del blog describe primero cada paso en detalle para ayudar a entender el proceso y finalmente explica cómo utilizar un método 4D para automatizar completamente el trabajo.

Configuración de una sola vez

Usted necesitará lo siguiente para la notarización:

  • Su cuenta de ID de Apple, normalmente su correo electrónico
  • Su ID de equipo de la empresa Apple. Vea más abajo «Obtener team-ids» cómo recuperarlo
  • Para una contraseña específica de la aplicación, vea abajo cómo recuperarla

Con estos datos, podemos registrar la contraseña en el llavero. Esto nos permitirá notarizar usando la línea de comandos (o automáticamente desde 4D) sin proporcionar la contraseña en texto claro.

Generar la contraseña específica de la aplicación

  1. Inicie sesión en apple.com.
  2. En la sección Inicio de sesión y seguridad, haz clic en Contraseñas específicas de la aplicación.
  3. Haz clic en Generar una contraseña específica para la aplicación o haz clic en «+», y luego sigue los pasos que aparecen en la pantalla.
  4. Quizá quieras nombrar la nueva contraseña como «notarytool».
  5. Copie el código mostrado.

Obtenga los ID de equipo

Ya deberías haber solicitado y registrado los certificados de Apple para codificar tu aplicación. Normalmente son dos (cuatro incluyendo iOS) cuando lo haces. Uno empieza con Apple Development: tu nombre(user-id), el otro con Developer ID Application: nombre de la empresa(team-id).

Inicia el llavero de Apple, selecciona los certificados y comprueba si ves Developer ID Application: company name. En caso afirmativo, el número entre paréntesis () es su id.

Si no es así, ejecuta lo siguiente en el Terminal:

xcrun altool --list-providers -u "AC_USERNAME" -p secret_2FA_password

sustituye AC_USERNAME por el nombre de usuario de tu cuenta de Apple tu dirección de correo electrónico, e introduce el código/2FA copiado de arriba.

El Terminal responderá con su ID de equipo.

Más detalles aquí.

Almacenar las credenciales

En el Terminal, ejecute lo siguiente:

xcrun notarytool store-credentials "notarytool" --apple-id "AC_USERNAME" --team-id <WWDRTeamID> --password <secret_2FA_password>

Mantén las comillas (sólo reemplaza el contenido), pero no uses los signos <>, sólo el id o la contraseña.

Construir / comprimir / notarizar / sellar

Ahora, después del proceso de preinstalación (una sola vez), es el momento de hacer el verdadero trabajo de construcción.

Utilice el comando o diálogo BUILD APPLICATION y construya su componente o aplicación. Utilice la función de certificación para firmar automáticamente la aplicación creada. Si la compilación falla debido a un error de firma, necesitas arreglar eso primero. La notarización fallará para las aplicaciones no firmadas.

Si el componente incluye ejecutables en la carpeta de recursos o la aplicación contiene componentes o plugins, deben ser válidos y estar firmados de antemano.

Zip

Una vez terminada la construcción, el siguiente paso es comprimir la aplicación:

En el Terminal, introduzca lo siguiente:

/usr/bin/ditto -c -k --keepParent "$APP_PATH" "$ZIP_PATH"

La forma más fácil de introducir las rutas correctas es copiarlas y pegarlas en el Terminal:

/usr/bin/ditto -c -k --keepParent "

Nota: Hay un espacio después de keepParent y el signo de comillas simples

Ahora arrastre y suelte la aplicación o el componente en la Terminal y añada otro carácter de comillas para obtener algo como

/usr/bin/ditto -c -k --keepParent "/Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.4dbase"

Añade un espacio, un carácter de comillas, arrastra y suelta la carpeta de destino, luego escribe el nombre del zip solicitado, seguido de un espacio.

La línea final debería tener este aspecto:

/usr/bin/ditto -c -k --keepParent "/Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.4dbase" "/Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.zip"

Pulse Enter para ejecutar el comando y obtener el zip.

Importante: no haga esto con otras herramientas zip, incluyendo el Finder. Para que la notarización funcione, es necesario utilizar el comando ditto.

Cargar

En el Terminal, introduce lo siguiente (recordatorio: puedes arrastrar y soltar la ruta del archivo para hacerlo más fácil):

xcrun notarytool submit /Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.zip --keychain-profile notarytool --wait

La respuesta que obtienes es la siguiente:

Realizando las comprobaciones previas al envío de FileTransfer.zip e iniciando la conexión con el servicio notarial de Apple…

ID de envío recibido

id: 2071ae83-6660-4d84-afaf-97ea34e945c5

Archivo cargado con éxito

id: 2071ae83-6660-4d84-afaf-97ea34e945c5

ruta: /Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.zip

Esperando a que se complete el procesamiento.

Estado actual: Aceptado…………..

Procesamiento completo

id: 2071ae83-6660-4d84-afaf-97ea34e945c5

estado: Aceptado

Si el estado es «Inválido», puedes preguntar el motivo escribiendo

xcrun notarytool log fb4a2e8f-e2fe-4689-b38f-f6a840abfeb6 --keychain-profile "notarytool" developer_log.json

El número detrás del registro es el id de la respuesta enviada. El último nombre, developer_log.json, es el nombre o la ruta de un archivo de resultados en tu disco, elegido a tu gusto.

Responde con:

Registro de envío descargado con éxito

id: fb4a2e8f-e2fe-4689-b38f-f6a840abfeb6

ubicación: /Users/thomas/developer_log.json

Compruebe el motivo del fallo con:

cat /Users/thomas/developer_log.json

Más información aquí.

Automatizar el proceso

Este trabajo debe repetirse para cada compilación; tiene sentido automatizarlo. ¿No es así? Aquí está todo lo que necesitas para hacerlo:

Otro caso de uso es la construcción de componentes. Los componentes compilados para los Macs de Silicio deben ser notariados, lo que hace incómoda la publicación de componentes a través de Github.

El componente: https: //github.com/ThomasMaul/FileTransfer_Class incluye un método «_buildComponent», que compila, construye, firma, notariza, grapa y cierra el componente. Todo ello es automático al ejecutarse.

El último paso es subir el zip como «Releases» a GitHub.

Espero que este consejo te ayude a notarizar tu próxima aplicación. No dude en contactarnos en el foro de 4D si necesita más ayuda.

Thomas Maul
• VP de Estrategia, Línea de Productos 4D - Cuando se creó la filial alemana de 4D en 1988, Thomas ingresó a la compañía como director técnico, ayudando a crear la comunidad de desarrolladores 4D tanto en Alemania como en Austria. Después de muchos años apoyando a los clientes con problemas técnicos y estando cada vez más involucrado en cuestiones de ventas y gestión, fue ascendido a director general de 4D Alemania en 1999. Como miembro de la junta ejecutiva desde 2005, pasó a formar parte de la estrategia mundial de la empresa, lo que lo llevó a su actual cargo de vicepresidente de Estrategia, Línea de Productos 4D, responsable de definir y ejecutar la estrategia global para la línea de productos 4D en relación con los equipos de Programa, I+D, Ventas y Mercadeo.