Saltar al contenido principal

Compilar y lanzar una aplicación para macOS

Cómo lanzar una aplicación Flutter en la macOS App Store.

Esta guía proporciona un tutorial paso a paso para lanzar una aplicación de Flutter en la App Store.

Preliminares

#

Antes de comenzar el proceso de lanzamiento de tu aplicación, asegúrate de que cumpla con las Directrices de revisión de aplicaciones de Apple.

Para publicar tu aplicación en la App Store, primero debes inscribirte en el Apple Developer Program. Puedes leer más sobre las diversas membresías en la guía Elegir una Membresía de Apple.

Registrar tu aplicación en App Store Connect

#

Gestiona el ciclo de vida de tu aplicación en App Store Connect (anteriormente iTunes Connect). Defines el nombre y la descripción de tu aplicación, agregas capturas de pantalla, estableces precios y gestionas lanzamientos para la App Store y TestFlight.

Registrar tu app implica dos pasos: registrar un Bundle ID único y crear un registro de aplicación en App Store Connect.

Para obtener una descripción detallada de App Store Connect, consulta la guía de App Store Connect.

Registrar un Bundle ID

#

Cada aplicación de macOS está asociada con un Bundle ID, un identificador único registrado con Apple. Para registrar un Bundle ID para tu aplicación, sigue estos pasos:

  1. Abre la página App IDs de tu cuenta de desarrollador.
  2. Haz clic en + para crear un nuevo Bundle ID.
  3. Ingresa un nombre de app, selecciona Explicit App ID e ingresa un ID.
  4. Selecciona los servicios que usa tu app y luego haz clic en Continue.
  5. En la página siguiente, confirma los detalles y haz clic en Register para registrar tu Bundle ID.

Crear un registro de aplicación en App Store Connect

#

Registra tu aplicación en App Store Connect:

  1. Abre App Store Connect en tu navegador.
  2. En la página de inicio de App Store Connect, haz clic en My Apps.
  3. Haz clic en + en la esquina superior izquierda de la página My Apps, luego selecciona New App.
  4. Completa los detalles de tu aplicación en el formulario que aparece. En la sección Platforms, asegúrate de que macOS esté marcado. Dado que Flutter no admite actualmente tvOS, deja esa casilla sin marcar. Haz clic en Create.
  5. Navega a los detalles de la aplicación para tu app y selecciona App Information en la barra lateral.
  6. En la sección General Information, selecciona el Bundle ID que registraste en el paso anterior.

Para obtener una descripción detallada, consulta Añadir una aplicación a tu cuenta.

Revisar la configuración del proyecto de Xcode

#

Este paso cubre la revisión de las configuraciones más importantes en el espacio de trabajo de Xcode. Para procedimientos y descripciones detalladas, consulta Preparar para la distribución de la aplicación.

Navega a la configuración de tu target en Xcode:

  1. En Xcode, abre Runner.xcworkspace en la carpeta macos de tu aplicación.
  2. Para ver la configuración de tu aplicación, selecciona el proyecto Runner en el navegador del proyecto de Xcode. Luego, en la barra lateral de la vista principal, selecciona el target Runner.
  3. Selecciona la pestaña General.

Verifica las configuraciones más importantes.

En la sección Identity:

App Category

La categoría de aplicación bajo la cual se listará tu aplicación en la Mac App Store. Esto no puede ser none.

Bundle Identifier

El App ID que registraste en App Store Connect.

En la sección Deployment info:

Deployment Target

La versión mínima de macOS que admite tu aplicación. Para verificar qué versiones de macOS admite Flutter para el despliegue, consulta las Plataformas de despliegue compatibles de Flutter.

En la sección Signing & Capabilities:

Automatically manage signing

Si Xcode debe gestionar automáticamente la firma de la aplicación y el aprovisionamiento. Esto está establecido en true por defecto, lo cual debería ser suficiente para la mayoría de las aplicaciones. Para escenarios más complejos, consulta la Guía de Firma de Código.

Team

Selecciona el equipo asociado con tu cuenta registrada de Apple Developer. Si es necesario, selecciona Add Account..., luego actualiza esta configuración.

La pestaña General de la configuración de tu proyecto debería parecerse a lo siguiente:

Configuración del proyecto de Xcode

Para obtener una descripción detallada de la firma de aplicaciones, consulta Crear, exportar y eliminar certificados de firma.

#

La configuración para los identificadores de productos está centralizada en macos/Runner/Configs/AppInfo.xcconfig. Para el nombre de la aplicación, establece PRODUCT_NAME, para el copyright establece PRODUCT_COPYRIGHT, y finalmente establece PRODUCT_BUNDLE_IDENTIFIER para el identificador de bundle de la aplicación.

Actualizar el número de versión de la aplicación

#

El número de versión predeterminado de la aplicación es 1.0.0. Para actualizarlo, navega al archivo pubspec.yaml y actualiza la siguiente línea:

version: 1.0.0+1

El número de versión consta de tres números separados por puntos, como 1.0.0 en el ejemplo anterior, seguido de un número de compilación opcional como 1 en el ejemplo anterior, separado por un +.

Tanto la versión como el número de compilación se pueden anular en la compilación de Flutter especificando --build-name y --build-number, respectivamente.

En macOS, build-name utiliza CFBundleShortVersionString mientras que build-number utiliza CFBundleVersion. Lee más sobre el versionado de iOS en Claves de Core Foundation en el sitio de Apple Developer.

Añadir un icono de aplicación

#

Cuando se crea una nueva aplicación Flutter, se crea un conjunto de iconos de marcador de posición. Este paso cubre el reemplazo de estos iconos de marcador de posición con los iconos de tu aplicación:

  1. Revisa las directrices de Iconos de Aplicaciones macOS.
  2. En el navegador del proyecto de Xcode, selecciona Assets.xcassets en la carpeta Runner. Actualiza los iconos de marcador de posición con tus propios iconos de aplicación.
  3. Verifica que el icono haya sido reemplazado ejecutando tu aplicación usando flutter run -d macos.

Crear un archivo de compilación con Xcode

#

Este paso cubre la creación de un archivo de compilación y la subida de tu compilación a App Store Connect utilizando Xcode.

Durante el desarrollo, has estado compilando, depurando y probando con compilaciones de depuración. Cuando estés listo para enviar tu aplicación a los usuarios en la App Store o TestFlight, debes preparar una compilación de lanzamiento. En este punto, podrías considerar ofuscar tu código de Dart para hacer que sea más difícil de aplicar ingeniería inversa. Ofuscar tu código implica agregar un par de opciones a tu comando de compilación.

En Xcode, configura la versión y compilación de la aplicación:

  1. Open Runner.xcworkspace in your app's macos folder. To do this from the command line, run the following command from the base directory of your application project.
    open macos/Runner.xcworkspace
    
  2. Selecciona Runner en el navegador del proyecto de Xcode, luego selecciona el target Runner en la barra lateral de la vista de configuración.
  3. En la sección Identity, actualiza la Version al número de versión de cara al usuario que deseas publicar.
  4. En la sección Identity, actualiza el identificador de Build a un número de compilación único utilizado para rastrear esta compilación en App Store Connect. Cada subida requiere un número de compilación único.

Finalmente, crea un archivo de compilación y súbelo a App Store Connect:

  1. Create a release Archive of your application. From the base directory of your application project, run the following.
    flutter build macos
    
  2. Abre Xcode y selecciona Product > Archive para abrir el archivo creado en el paso anterior.
  3. Haz clic en el botón Validate App. Si se informa de algún problema, resuélvelo y genera otra compilación. Puedes reutilizar el mismo ID de compilación hasta que subas un archivo (archive).
  4. Una vez que el archivo haya sido validado con éxito, haz clic en Distribute App. Puedes seguir el estado de tu compilación en la pestaña Activities de la página de detalles de tu aplicación en App Store Connect.

Deberías recibir un correo electrónico en un plazo de 30 minutos notificándote que tu compilación ha sido validada y está disponible para lanzarla a los probadores en TestFlight. En este punto, puedes elegir si lanzarla en TestFlight, o seguir adelante y lanzar tu aplicación en la App Store.

Para más detalles, consulta Subir una aplicación a App Store Connect.

Crear un archivo de compilación con las herramientas de la CLI de Codemagic

#

Este paso cubre la creación de un archivo de compilación y la subida de tu compilación a App Store Connect utilizando comandos de compilación de Flutter y las Herramientas de la CLI de Codemagic ejecutadas en una terminal en el directorio de tu proyecto Flutter.

  1. Instala las herramientas de la CLI de Codemagic:

    bash
    pip3 install codemagic-cli-tools
    
  2. Necesitarás generar una Clave de API de App Store Connect con acceso de Administrador de Aplicaciones para automatizar las operaciones con App Store Connect. Para que los subsiguientes comandos sean más concisos, establece las siguientes variables de entorno a partir de la nueva clave: issuer id, key id y el archivo de la clave API.

    bash
    export APP_STORE_CONNECT_ISSUER_ID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
    export APP_STORE_CONNECT_KEY_IDENTIFIER=ABC1234567
    export APP_STORE_CONNECT_PRIVATE_KEY=`cat /path/to/api/key/AuthKey_XXXYYYZZZ.p8`
    
  3. Necesitas exportar o crear un certificado de Mac App Distribution y un certificado de Mac Installer Distribution para realizar la firma de código y empaquetar un archivo de compilación.

    Si tienes certificados existentes, puedes exportar las claves privadas ejecutando el siguiente comando para cada certificado:

    bash
    openssl pkcs12 -in <certificate_name>.p12 -nodes -nocerts | openssl rsa -out cert_key
    

    O puedes crear una nueva clave privada ejecutando el siguiente comando:

    bash
    ssh-keygen -t rsa -b 2048 -m PEM -f cert_key -q -N ""
    

    Más adelante, puedes hacer que las herramientas de la CLI creen automáticamente un nuevo certificado de Mac App Distribution y Mac Installer Distribution. Puedes usar la misma clave privada para cada nuevo certificado.

  4. Obtén los archivos de firma de código desde App Store Connect:

    bash
    app-store-connect fetch-signing-files YOUR.APP.BUNDLE_ID \
        --platform MAC_OS \
        --type MAC_APP_STORE \
        --certificate-key=@file:/path/to/cert_key \
        --create
    

    Donde cert_key es la clave privada de tu certificado Mac App Distribution exportado o una nueva clave privada que genera automáticamente un nuevo certificado.

  5. Si no tienes un certificado Mac Installer Distribution, pueden crear un nuevo certificado ejecutando lo siguiente:

    bash
    app-store-connect certificates create \
        --type MAC_INSTALLER_DISTRIBUTION \
        --certificate-key=@file:/path/to/cert_key \
        --save
    

    Usa la cert_key de la clave privada que creaste anteriormente.

  6. Obtén los certificados de Mac Installer Distribution:

    bash
    app-store-connect certificates list \
        --type MAC_INSTALLER_DISTRIBUTION \
        --certificate-key=@file:/path/to/cert_key \
        --save
    
  7. Configura un nuevo llavero (keychain) temporal para firmar el código:

    bash
    keychain initialize
    
  8. Ahora añade los certificados obtenidos a tu llavero:

    bash
    keychain add-certificates
    
  9. Actualiza la configuración del proyecto de Xcode para usar los perfiles de firma de código obtenidos:

    bash
    xcode-project use-profiles
    
  10. Instala las dependencias de Flutter:

    bash
    flutter packages pub get
    
  11. Instala las dependencias de CocoaPods:

    bash
    find . -name "Podfile" -execdir pod install \;
    
  12. Compila el proyecto macOS de Flutter:

    bash
    flutter build macos --release
    
  13. Empaqueta la aplicación:

    bash
    APP_NAME=$(find $(pwd) -name "*.app")
    PACKAGE_NAME=$(basename "$APP_NAME" .app).pkg
    xcrun productbuild --component "$APP_NAME" /Applications/ unsigned.pkg
    
    INSTALLER_CERT_NAME=$(keychain list-certificates \
              | jq '[.[]
                | select(.common_name
                | contains("Mac Developer Installer"))
                | .common_name][0]' \
              | xargs)
    xcrun productsign --sign "$INSTALLER_CERT_NAME" unsigned.pkg "$PACKAGE_NAME"
    rm -f unsigned.pkg
    
  14. Publica la aplicación empaquetada en App Store Connect:

    bash
    app-store-connect publish \
        --path "$PACKAGE_NAME"
    
  15. Como se mencionó anteriormente, no olvides configurar tu llavero de inicio de sesión como predeterminado para evitar problemas de autenticación con las aplicaciones de tu máquina:

    bash
    keychain use-login
    

Lanzar tu aplicación en TestFlight

#

TestFlight permite a los desarrolladores enviar sus aplicaciones a probadores internos y externos. Este paso opcional cubre el lanzamiento de tu compilación en TestFlight.

  1. Navega a la pestaña TestFlight de la página de detalles de la aplicación en App Store Connect.
  2. Selecciona Internal Testing en la barra lateral.
  3. Selecciona la compilación que deseas publicar para los probadores, luego haz clic en Save.
  4. Agrega las direcciones de correo electrónico de los probadores internos. Puedes agregar usuarios internos adicionales en la página Users and Roles de App Store Connect, disponible en el menú desplegable en la parte superior de la página.

Distribuir a dispositivos registrados

#

Consulta la guía de distribución para preparar un archivo para la distribución a computadoras Mac designadas.

Lanzar tu aplicación en la App Store

#

Cuando estés listo para lanzar tu aplicación al mundo, sigue estos pasos para enviar tu aplicación a revisión y lanzarla a la App Store:

  1. Selecciona Pricing and Availability en la barra lateral de la página de detalles de la aplicación en App Store Connect y completa la información requerida.
  2. Selecciona el estado en la barra lateral. Si este es el primer lanzamiento de esta aplicación, su estado es 1.0 Prepare for Submission. Completa todos los campos requeridos.
  3. Haz clic en Submit for Review.

Apple te notificará cuando se complete el proceso de revisión de la aplicación. Tu aplicación se lanzará de acuerdo con las instrucciones que especificaste en la sección Version Release.

Para más detalles, consulta Distribuir una aplicación a través de la App Store.

Resolución de problemas

#

La guía Distribuye tu aplicación proporciona una descripción detallada del proceso de lanzamiento de una aplicación en la App Store.

Recursos adicionales

#

Para aprender cómo empaquetar y distribuir tu aplicación de escritorio Flutter para macOS al estilo open source, sin usar una cuenta de Apple Developer paga, consulta la guía de empaquetado de macOS paso a paso.