Saltar al contenido principal

Compilar y lanzar una aplicación para iOS

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

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

Preliminares

#

Se requiere Xcode para compilar y lanzar tu aplicación. Debes usar un dispositivo con macOS para seguir esta guía.

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 opciones de membresía en la guía Elegir una Membresía de Apple.

Resumen en video

#

Para quienes prefieren el video sobre el texto, el siguiente video cubre el mismo material que esta guía.

Ver en YouTube en una nueva pestaña: "Lanzar una aplicación iOS compilada con Flutter en 7 pasos"

Registrar tu aplicación en App Store Connect

#

Gestiona el ciclo de vida de tu app en App Store Connect (anteriormente iTunes Connect). Defines el nombre y la descripción de tu app, agregas capturas de pantalla, estableces precios y gestionas los lanzamientos en 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 iOS está asociada con un Bundle ID, un identificador único registrado en Apple. Para registrar un Bundle ID para tu app, 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 Apps.
  3. Haz clic en + en la esquina superior izquierda, luego selecciona New App.
  4. Rellena los detalles de tu app en el formulario que aparece. En la sección Platforms, asegúrate de que iOS esté marcado. Dado que Flutter actualmente no admite tvOS, deja esa casilla desmarcada. 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 un resumen detallado, consulta Agregar una app a tu cuenta (Add an app to your account).

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. Abre el espacio de trabajo de Xcode predeterminado en tu proyecto ejecutando open ios/Runner.xcworkspace en una ventana de terminal desde el directorio de tu proyecto Flutter.
  2. Para ver la configuración de tu aplicación, selecciona el target Runner en el navegador de Xcode.

Verifica las configuraciones más importantes.

En la sección Identity de la pestaña General:

Display Name

El nombre de visualización de tu aplicación.

Bundle Identifier

El App ID que registraste en App Store Connect.

En la pestaña 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.

En la sección Deployment de la pestaña Build Settings:

iOS Deployment Target

La versión mínima de iOS que admite tu aplicación. Flutter es compatible con iOS 13 y posterior. Si tu aplicación o plugins incluyen código de Objective-C o Swift que utiliza API más nuevas que iOS 13, actualiza esta configuración a la versión requerida más alta.

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.

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 iOS y, en particular, los consejos sobre cómo crear iconos claros, oscuros y teñidos para tu aplicación.
  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.

Añadir una imagen de lanzamiento

#

De manera similar al icono de la aplicación, también puedes reemplazar la imagen de lanzamiento de marcador de posición:

  1. En el navegador del proyecto de Xcode, selecciona Assets.xcassets en la carpeta Runner. Actualiza la imagen de lanzamiento de marcador de posición con tu propia imagen de lanzamiento.
  2. Verifica la nueva imagen de lanzamiento realizando un hot restart de tu aplicación. (No uses hot reload).

Crear un archivo de compilación y subirlo a App Store Connect

#

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.

Actualizar los números de compilación y 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:

yaml
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 flutter build ipa especificando --build-name y --build-number, respectivamente.

En iOS, 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.

También puedes anular el nombre y número de compilación de pubspec.yaml en Xcode:

  1. Abre Runner.xcworkspace en la carpeta ios de tu aplicación.
  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.

Crear un app bundle

#

Ejecuta flutter build ipa para generar un archivo de compilación de Xcode (archivo .xcarchive) en el directorio build/ios/archive/ de tu proyecto y un bundle de la App Store (archivo .ipa) en build/ios/ipa.

Considera agregar las opciones --obfuscate y --split-debug-info para ofuscar tu código de Dart para hacer que sea más difícil de aplicar ingeniería inversa.

Si no estás distribuyendo a la App Store, opcionalmente puedes elegir un método de exportación diferente agregando la opción --export-method ad-hoc, --export-method development o --export-method enterprise.

Subir el app bundle a App Store Connect

#

Una vez creado el app bundle, súbelo a App Store Connect mediante una de estas opciones:

  1. Instala y abre la aplicación de macOS Apple Transporter. Arrastra y suelta el app bundle build/ios/ipa/*.ipa en la aplicación.

  2. O sube el app bundle desde la línea de comandos ejecutando:

    bash
    xcrun altool --upload-app --type ios -f build/ios/ipa/*.ipa --apiKey your_api_key --apiIssuer your_issuer_id
    

    Ejecuta man altool para obtener detalles sobre cómo autenticarse con la clave de la API de App Store Connect.

  3. O abre build/ios/archive/MyApp.xcarchive en Xcode.

    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).

    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. Esto te permite crear un archivo de compilación con control total de los certificados de distribución en un llavero temporal aislado de tu llavero de inicio de sesión.

  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 distribución de iOS para firmar el 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 una nueva distribución de iOS a partir de la clave privada.

  4. Configura un nuevo llavero (keychain) temporal para firmar el código:

    bash
    keychain initialize
    
  5. Obtén los archivos de firma de código desde App Store Connect:

    bash
    app-store-connect fetch-signing-files $(xcode-project detect-bundle-id) \
        --platform IOS \
        --type IOS_APP_STORE \
        --certificate-key=@file:/path/to/cert_key \
        --create
    

    Donde cert_key es la clave privada de tu certificado de distribución de iOS exportado o una nueva clave privada que genera automáticamente un nuevo certificado. El certificado se creará a partir de la clave privada si no existe en App Store Connect.

  6. Ahora añade los certificados obtenidos a tu llavero:

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

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

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

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

    bash
    flutter build ipa --release \
        --export-options-plist=$HOME/export_options.plist
    

    Ten en cuenta que export_options.plist es la salida del comando xcode-project use-profiles.

  11. Publica la aplicación en App Store Connect:

    bash
    app-store-connect publish \
        --path $(find $(pwd) -name "*.ipa")
    
  12. 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
    

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.

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.

Para más detalles, consulta Distribuir una aplicación usando TestFlight.

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.