Desarrolla y distribuye aplicaciones de iOS sin Mac con Flutter

Publicado: 2019-08-23

Nota del editor: En Miquido, apoyamos a la comunidad de amantes de Flutter y siempre nos complace contribuir al intercambio de conocimientos en la red de Flutter. Hoy, presentamos el artículo invitado de Codemagic, quien resolvió el tema del desarrollo de aplicaciones para iOS con Flutter y... sin un dispositivo macOS. ¡Disfruta cada pieza!


La mayoría de las veces, las aplicaciones de iOS se desarrollan y distribuyen desde máquinas macOS. Es difícil imaginar el desarrollo de aplicaciones para la plataforma iOS sin macOS. Sin embargo, con la combinación de Flutter y Codemagic, puede desarrollar y distribuir aplicaciones de iOS sin usar macOS. En nuestra publicación anterior, explicamos el proceso de firma de código de aplicaciones iOS sin una Mac. En esta publicación, cubriremos en detalle el proceso de desarrollo de aplicaciones Flutter en Linux y el uso de la firma de código manual/personalizada con Codemagic para tener un control total sobre la firma de la aplicación en el ejemplo de la aplicación Comagic-Demo.

Desarrollo de aplicaciones de Flutter en Linux

Flutter es un marco de desarrollo de aplicaciones móviles multiplataforma que permite desarrollar aplicaciones iOS y Android a partir del mismo código fuente. Sin embargo, los marcos nativos de Apple utilizados para desarrollar aplicaciones de iOS no pueden compilarse en otras plataformas como Linux o Windows. Los componentes nativos de iOS requieren macOS o Darwin para desarrollar y distribuir aplicaciones de iOS. Sin embargo, tecnologías como Flutter nos permiten desarrollar aplicaciones multiplataforma en Linux o Windows y luego podemos distribuir las aplicaciones a Google Play Store o Apple App Store usando la solución Codemagic CI/CD.

Obtener una aplicación Flutter en Linux

Las aplicaciones de Android se pueden crear, probar y publicar desde la plataforma Linux. Podemos aprovechar esta característica de Android para habilitar el desarrollo de aplicaciones Flutter en Linux. Nuestra aplicación Flutter se llama Comagic-Demo. Usaremos esa aplicación para mostrar cómo compilar para Android e iOS en Linux. Sin embargo, tenga en cuenta que solo podemos desarrollar contra Android en Linux, no iOS. Todavía obtendremos la aplicación de iOS que se puede implementar en la App Store mientras se desarrolla la aplicación de Android en Linux. Podemos llevar nuestra Comagic-Demo a Linux de diferentes maneras.

Obtener una máquina Linux

Si ya tiene una computadora con Linux instalado, entonces todo el proceso es fácil. Solo tiene que instalar Android SDK y Flutter en la máquina Linux. Una vez que clonamos la aplicación Comagic-Demo, podemos comenzar a trabajar en ella de inmediato.

Crear contenedores Docker

Otra forma de obtener una aplicación Flutter en Linux es mediante Docker. Si está familiarizado con el ecosistema de Docker, puede crear un Dockerfile que tenga Android SDK y Flutter instalados. Hay muchos Dockerfiles de Android en Dockerhub, solo necesitamos extender esas imágenes con Flutter SDK. Vamos a crear un Dockerfile simple que extienda una imagen de docker de Android de muestra aquí para obtener el entorno de Android y Flutter en el contenedor de Docker. El Dockerfile debe copiar la aplicación en el contenedor y ejecutar el entorno Flutter de Android. El Dockerfile de ejemplo para Comagic-Demo se verá así:

 DESDE runmymind/docker-android-sdk
EJECUTAR mkdir /codemagic-demo
WORKDIR /codemagic-demo
AGREGAR . /codemagic-demo
EJECUTAR apt-get update && \
    apt-get install -y lcov git-core curl descomprimir && \
    clon de git https://github.com/flutter/flutter.git && \
    /flutter/bin/médico flutter && \
    apt-get remove -y curl descomprimir && \
    apt eliminar automáticamente -y && \
    rm -rf /var/lib/apt/lists/*
RUTA ENV $ RUTA:/flutter/bin/cache/dart-sdk/bin:/flutter/bin
EJECUTAR aleteo médico

Este fragmento de código es solo para fines ilustrativos, pero puede personalizar el Dockerfile según sus necesidades. Una vez que haya instalado Dockerfile y Docker, puede obtener la aplicación Codemagic usando Docker.

 $ docker build -t codemagic-demo.
$ docker run --name codemagic-demo

Una vez que ejecutemos estos comandos, tendremos el contenedor Docker ejecutándose con el entorno Flutter.

Dockerising Futter apps será un tema diferente y lo cubriremos en detalle en una publicación futura.

Generación de activos de firma de código desde App Store Connect

Para poder firmar con código aplicaciones de iOS, necesita una cuenta de desarrollador de Apple, un certificado de desarrollo y distribución, su ID de aplicación y perfiles de aprovisionamiento creados para la aplicación. Hemos cubierto los detalles de las actividades de firma de código en una publicación anterior. Para configurar la firma de código manual para el desarrollo o la depuración de compilaciones de aplicaciones de iOS en Codemagic, necesitamos lo siguiente:

  • Certificado de desarrollo o distribución en formato .P12
  • Perfil de aprovisionamiento descargado desde App Store Connect o el portal para desarrolladores de Apple
  • Identificador de paquete de la aplicación iOS

Podemos descargar tanto el certificado como los perfiles de aprovisionamiento desde las secciones Certificados, Identificadores y Perfiles en el portal de Apple Developer. en

Descargue los perfiles de aprovisionamiento del portal para desarrolladores de iOS

Del mismo modo, podemos descargar los perfiles de aprovisionamiento desde el portal de desarrolladores de Apple.

Perfiles de aprovisionamiento de iOS

Necesitamos un certificado y un perfil de aprovisionamiento para firmar con código nuestra aplicación iOS en Codemagic, así que guarde estos archivos para usarlos más adelante.

Actualización de archivos de proyecto de Xcode

Ahora, tenemos todos los activos de firma de código del portal de desarrolladores de Apple. A continuación, debemos ordenar el archivo del proyecto Xcode para usar la firma de código manual con el equipo y el perfil de aprovisionamiento correctos. Podemos hacer esto usando un script de Ruby usando Xcodeproj Gem o simplemente podemos cambiar los siguientes campos en el archivo i os/YOUR_APP.xcodeproj/project.pbxproj .

  • Equipo de desarrollo = YOUR_DEVELOPMENT_TEAM_ID
  • ProvisioningStyle = Manual
  • PROVISIONING_PROFILE_SPECIFIER = NOMBRE_DE_SU_PERFIL_DE_PROVISIONAMIENTO

En nuestra aplicación Codemagic-Demo, tenemos que editar el archivo del proyecto Xcode aquí en GitHub. Tenemos que asegurarnos de realizar estos cambios para la configuración de depuración para compilaciones internas y para la configuración de lanzamiento para compilaciones de App Store. Una vez que establecemos los valores en project.pbxproj, estamos listos para implementar la aplicación iOS desde Codemagic sin ningún problema.

Configurar la firma de código manual en Codemagic

Al desarrollar en Linux, solo podemos ver el estado de la aplicación de Android, ya que las herramientas de Xcode e iOS no se pueden instalar ni ejecutar en Linux. Hay algunos esfuerzos en curso para llevar las herramientas de Swift e iOS a Linux, pero llevará mucho tiempo. Cuando estemos listos para distribuir las aplicaciones, podemos configurar fácilmente CI/CD para la aplicación usando Codemagic, consulte la Guía de inicio aquí. En Codemagic, podemos habilitar la firma de código de iOS desde la sección Publicar cargando el certificado y el perfil de aprovisionamiento que hemos descargado del portal de desarrolladores de Apple. En la aplicación de Codemagic, vaya a Configuración → Publicar → Firma de código de iOS → Manual y cargue su certificado y perfil de aprovisionamiento allí.

Configurar la firma de código manual en Codemagic

Cuando ejecute la compilación, obtendrá la aplicación de iOS en forma de archivo IPA que se puede implementar en los dispositivos aprovisionados. La lista de artefactos de compilación en Codemagic se verá así:

La lista de artefactos de compilación en Codemagic

Como se puede ver en la sección Artefactos , obtuvimos codemagic_demo.ipa , así como archivos dSYMs para informes de fallas. Podemos instalar esta aplicación en cualquier dispositivo iOS que se haya agregado al perfil de aprovisionamiento y probar nuestra aplicación iOS. Si vemos algún error allí, siempre podemos volver al entorno Linux y corregir esos errores.

Distribuir la aplicación de iOS a la App Store

A partir de ahora, hemos creado la versión de depuración de la aplicación iOS para realizar pruebas internas. De manera similar, podemos distribuir la aplicación de iOS a la App Store. Cuando estemos listos para implementar la aplicación en la App Store, debemos compilar la aplicación en modo de lanzamiento . Podemos hacerlo utilizando el certificado de distribución y el perfil de aprovisionamiento de producción. Podemos generar el certificado y los perfiles de forma similar. Pero debemos asegurarnos de elegir la distribución de App Store al crear el perfil de aprovisionamiento.

Opción de distribución de App Store

El perfil de aprovisionamiento de distribución ejecutará la aplicación de iOS en cualquier dispositivo y no necesitamos agregar los dispositivos explícitamente en el perfil de aprovisionamiento. El perfil de aprovisionamiento de App Store se verá así:

El perfil de aprovisionamiento de App Store

Una vez que tenemos a mano el certificado de distribución de iOS y el perfil de aprovisionamiento de producción , podemos seleccionar el modo de lanzamiento en el Sección de compilación en Codemagic como se muestra a continuación.

El modo Release en la sección Build en Codemagic

También hemos configurado los argumentos de compilación para liberar en lugar de depurar. En la sección Publicar, necesitamos cargar el certificado de distribución y el perfil de aprovisionamiento de producción para generar la versión de la App Store de la aplicación.

Una vez que Codemagic genera los artefactos de compilación, podemos compilar en App Store Connect, anteriormente conocido como iTunesConnect, siguiendo las pautas de App Store y enviar la aplicación para su revisión.

Conclusión

Con la combinación de un marco de desarrollo de aplicaciones móviles multiplataforma y una solución mágica de CI/CD como Codemagic, no es obligatorio tener una Mac para el desarrollo de aplicaciones iOS. Puede haber algunos problemas al depurar la aplicación mientras se desarrolla para iOS, pero es completamente posible desarrollar y publicar aplicaciones de iOS en la App Store usando la combinación de Flutter y Codemagic.

Icono de aplicaciones nativas

¿Quiere crear una aplicación preparada para el futuro para su negocio?

Vamos a trabajar juntos