Implementación y despliegue de un proyecto de desarrollo


Introducción

Hacer una aplicación multiplataforma requiere que se agreguen o se desarrollen características que son diferentes de una plataforma a otra y se deberán hacer ajustes dependiendo de dónde se desplegará la aplicación.

Es posible que las adecuaciones y las pruebas para Android, iOS o web se hayan hecho en diferentes dispositivos, en emuladores o en dispositivos físicos, pero la exportación final a las tiendas de aplicaciones aún requiere que el desarrollador realice algunas tareas en específico y estas difieren de una versión a otra.


También es importante mencionar que Flutter cuenta con recursos para realizar depuraciones antes de lanzar una aplicación y se puede decir que su rendimiento suele ser muy bueno, por lo que ya se tiene una buena parte de la depuración para el despliegue cubierto.

A continuación, se dará una revisión a todas esas tareas que debe realizar el desarrollador, como requisitos para el despliegue e implementación final.


Explicación

Para Bailey y Biessek (2021) es importante remarcar que, antes de hacer el despliegue, ya se debió haber tomado una decisión respecto a escoger un plan de negocio o modelo de operación de la aplicación. Si los interesados del desarrollo han considerado un modelo de negocio alrededor de las ventas de la aplicación, deben tomar en cuenta los siguientes esquemas que las tiendas de aplicaciones manejan con base en las tarifas por venta:

  • Compra de aplicación para las tiendas: es cuando solamente se requiere un solo pago de los usuarios por cada venta. Ambas tiendas, ya sea Apple o Google, conservarán un 30% del costo total de la venta como tarifa de servicio.
  • Suscripciones: este modelo supone una serie de pagos regulares de los usuarios por el uso de la aplicación. Generalmente, a este tipo de modelo aspiran aquellas aplicaciones que agregan contenido constantemente, como las aplicaciones para mejorar la calidad de vida por medio de videos. Las tiendas conservan un 30% del costo de cada pago durante el primer año y después solamente el 15%.
  • Compras dentro de la aplicación: este modelo está encaminado a desbloquear nuevas características, o bien, características premium. Cada compra se establece en un 30% del valor total de la compra. Actualmente, las compañías dueñas de las tiendas de aplicaciones son muy estrictas y prohíben a los desarrolladores crear rutas alternativas para evadir las compras fuera de las tiendas de cada plataforma.

También es importante considerar los lineamientos para poder publicar aplicaciones, ya que existe una serie de medidas muy estrictas sobre lo que pueden contener, así como la manera en que deben conducirse.

Es deseable que puedas leer e investigar toda la documentación requerida y que apliques el modelo de negocio seleccionado. Utiliza prototipos en Flutter tan pronto como te sea posible, tramita su despliegue en la tienda y revisa el proceso detalladamente, identificando posibles conflictos en una etapa temprana.

Despliegue por medio web

Flutter tiene la capacidad de adaptar el desarrollo para generar aplicaciones web, por lo que los requisitos y las consideraciones para realizar el despliegue por medio web tienen marcadas diferencias a las de una aplicación móvil.

En primer lugar, no existe ningún tipo de restricción por parte de una tienda de aplicaciones y no hay esquemas de pago estrictos o un modelo de guía de implementación a seguir. La implementación es más de tipo general, pero sí hay apartados clave que considerar:


  • Hosting (hospedaje): para albergar la aplicación web. Generalmente, una compañía hospeda los archivos fuente para que otros usuarios puedan acceder a través de los navegadores de sus equipos. Una alternativa es poder utilizar los servicios que ofrece Google Firebase.
  • Dominio: para que los usuarios accedan al servidor donde se encuentran los archivos fuente, es necesario contar con un nombre de dominio, el cual es un recurso que permite rentar por un espacio de tiempo, generalmente un año, un nombre con una extensión (empresa.com). Ese nombre permite referenciar los servicios al hosting. Se debe hacer una configuración de los servidores de dominio de nombre (DNS) para vincular el hosting al dominio.
  • Pagos: para efectuar transacciones económicas e implementar la sencillez de procedimientos, los procesos transaccionales se pueden confiar a soluciones de terceros como PayPal o Mercado Pago, ya que este tipo de empresas tienen toda la gestión, soporte, seguridad y respaldo para realizar las operaciones.

El despliegue por medio web tiene muchas menos implicaciones que al hacerlo en una tienda oficial, pero es importante considerar las variables expuestas para asegurar que la aplicación tenga una vida exitosa en el ambiente web.

Despliegue por medio de tienda de aplicaciones

Para utilizar las tiendas de aplicaciones como plataforma de despliegue, el primer paso es asegurar que exista una cuenta registrada como desarrollador en las tiendas de aplicaciones móviles. Para publicar aplicaciones en Google Play Store y en Apple App Store requieres una cuenta de desarrollador.

Existen tiendas de aplicaciones para Android de terceros, como Amazon AppStore, sin embargo, si la aplicación hace uso de servicios de Google, como Google Maps, la aplicación no podrá desplegarse adecuadamente, por lo que se sugiere que utilices Google Play Store únicamente para aplicaciones Android.

Para registrar una cuenta en Play Store como desarrollador y habilitar la opción de subir a la tienda para publicar una aplicación, Google requiere una tarifa única de 25 dólares americanos como cuota de registro. Puedes obtener más detalles en la página de Android de desarrolladores, en la sección de consola de programador.

El proceso en la App Store de Apple es muy similar, es decir, requiere una cuota de registro anual de 99 dólares americanos, la cual es necesaria para poder subir y publicar una aplicación. Para más detalles y registro puedes visitar la página de iOS de desarrolladores, en el apartado de cuenta para desarrolladores.

Cada plataforma tiene sus propias características para poder hacer su lanzamiento. A continuación, se detallarán los procesos a seguir con Flutter para preparar los desarrollos para su lanzamiento y carga en las tiendas de aplicaciones. El proceso que se presenta es hacerlo de manera manual.

Cabe comentar que, Alessandria y Kayfitz (2021) hacen mención del uso de la plataforma Fastlane de Google, la cual permite automatizar las tareas previas al despliegue y simplifica el armado de los paquetes de carga para que, de una manera mucho más amigable, se haga el generado de los paquetes para las tiendas de aplicaciones. Se sugiere que investigues y profundices más en el tema.

A continuación, se estudian los pasos para preparar los desarrollos para cargarse en la tienda de aplicaciones de cada sistema operativo.

De acuerdo con la documentación oficial de Google (s.f.), el formato para entregar una aplicación en Google Play es el App Bundle, que incluye el archivo APK (Android Application Package). Antes de generar este formato y de iniciar con el despliegue, debes asegurarte de que toda la información sea correcta, que todos los recursos estén provistos y que los ajustes de la plataforma estén configurados. Posteriormente, genera el App Bundle a través de la ejecución del comando flutter build appbundle. Para preparar el paquete, se enumerarán los procedimientos necesarios para que se integre.


  • Permisos: es importante revisar los permisos solicitados. Estos se realizan en el archivo AndroidManifiest.xml y la ruta completa donde se localiza en la carpeta del proyecto es la siguiente: app/src/main/AndroidManifest.xml. Es necesario que agregues permisos por cada paquete que añadas. Los permisos se encuentran dentro de la etiqueta uses-permission.
    Ejemplo del código:


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Adicional a la etiqueta uses-permission, existe la de uses-feature, la cual es una manera de requerir una característica del dispositivo de forma obligatoria. Por ejemplo, si uses-feature tiene el requisito de cámara, la aplicación no podrá instalarse en dispositivos sin cámara. Es importante verificar con detenimiento la configuración del AndroidManifest.xml, ya que un ligero cambio segmentará el mercado disponible para la aplicación.

  • Etiqueta meta (meta tags): estas etiquetas deberán agregarse para hacer funcionar la aplicación con servicios como AdMob Google Maps y debes asegurar que las configuraciones estén correctamente tipificadas. Observa el ejemplo de la estructura de las meta tags:


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

  • Nombre e ícono de la aplicación: el ícono y el nombre por defecto están definidos en el AndroidManifest.xml, en la etiqueta aplicación. A continuación, se muestra la manera de nombrar la aplicación:

    En Android, la ubicación de íconos se encuentra en la siguiente ruta: Android/app/src/main/res. Ahí se deben reemplazar los archivos ic_launcher.png en cada una de las carpetas mipmap-xxxdpi que se localicen. Observa las sugerencias que puedes encontrar en la página material.io para que el ícono esté de acuerdo con las tendencias de diseño recomendadas por Google.

  • ID de aplicación y versiones: se conoce como la etiqueta applicationID, es un valor que hace única a la aplicación en la tienda de aplicaciones y en el sistema Android. Una buena práctica es usar el dominio de la organización, seguido del nombre de la aplicación (com.nombredecompañia.nombreapp). Puedes encontrar este registro en el archivo de la ruta app/gradle, en la sección de defaultconfig.

    En la etiqueta de minSdkVersion coloca la versión mínima del nivel Android API. Este valor es dado automáticamente por Flutter. La etiqueta targetSdkVersion es la versión del Android API sobre la cual la aplicación se ha diseñado. Por último, las etiquetas de versionCode y versionName, esas configuraciones son dadas en automático en el pubspec.yaml.

Observa el ejemplo del código:


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

  • Firmando la aplicación: el firmado de la aplicación es el último y más importante el paso en el proceso para preparar la aplicación para su despliegue en la tienda de Google Play. Este apartado permite confirmar la pertenencia de la aplicación. En otras palabras, quien firme es el dueño de la aplicación de acuerdo con Bailey y Biessek (2021). Son cinco pasos los necesarios para firmar la aplicación, los cuales se enlistan a continuación:
  1. Genera el archivo keystore: este archivo puede utilizarse en varias aplicaciones y se obtiene después de ejecutar el siguiente código:


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

El archivo obtenido se debe declarar en el archivo app/build.gradle.

  1. Crea el archivo key.properties: este archivo debe tener el siguiente contenido:


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

  1. Carga el archivo de key.properties en el archivo app/build.gradle: el archivo key.properties se carga (el creado en el paso 2). Para ello se crea una clase signingConfig. justo antes de la línea android{.


Observa el ejemplo:


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

  1. Usa el archivo keystoreProperties: este archivo se obtendrá a partir del archivo key.properties con la finalidad de crear una nueva configuración de firmado. Esta nueva configuración recibirá el nombre de release. Más adelante se usará en el proceso de construcción del App Bundle.


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Esta configuración simplemente vincula las variables keyAlias, keyPassword, storeFile y storePassword que se crearon en el paso 2 a las propiedades que se leyeron del archivo key.properties.

  1. Reemplaza la propiedad singningConfig en la opción de release en el aparto de buildTypes: al hacerlo aparece lo siguiente:


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

  • Construye y sube el appbundle: para crearlo, basta con correr el comando flutter build appbundle y el nuevo archivo se creará en la locación: <project location>/build/app/outputs/bundle/release/app.aab.

Play para subir el appbundle de acuerdo con la documentación oficial de Google. Una vez cargado el archivo, procede a escoger uno de los cuatro tipos de lanzamiento de aplicación disponibles, los cuales se enlistan a continuación:

  1. Pruebas abiertas: es una manera de realizar pruebas con los usuarios verificados, limitados para hacer las pruebas y verificar la viabilidad.
  2. Pruebas cerradas: están disponibles para una cantidad limitada de usuarios que se elijan, quienes podrán probar una versión previa al lanzamiento de la aplicación con posibilidad de realizar una retroalimentación.
  3. Pruebas internas: las versiones de prueba interna están disponibles para un máximo de 100 usuarios.
  4. Producción: las versiones de producción están disponibles para todos los usuarios de Google Play en las regiones geográficas que se elijan.

Antes de seleccionar la opción de producción, se sugiere que hagas las pruebas internas para resaltar alguna posible eventualidad que surja en la aplicación y haya que depurar. Puedes ir subiendo el escalafón a otro tipo de pruebas hasta que determines que la aplicación es viable para su lanzamiento.

Por último, es necesario adjuntar elementos en la consola de Google Play, como una descripción, capturas de pantalla, videos, términos y condiciones, etcétera, de la aplicación, así que, debes considerar invertir una cantidad de tiempo razonable para cubrir las variantes y factores que se requieran en la consola de Google Play.

El proceso de lanzamiento de una aplicación requiere de varias actividades a realizar, es decir, te invita como desarrollador a tomar un espacio de tiempo para estudiar la documentación oficial de la consola de Google Play y para realizar cada una de las actividades descritas con anterioridad, para así tener un lanzamiento correcto y con el menor número de incidentes.

Una vez que ya tienes las consideraciones para Google Play, ahora se tratarán los lineamientos y el proceso para cargar aplicaciones en la Apple App Store.


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

El despliegue en la App Store de Apple es mucho más complejo que el de Android. Para hacer una prueba pública se requiere contar con una cuenta de desarrollador para publicar en la tienda. Asimismo, para hacer todo tipo de proceso, desarrollo, pruebas y compilación, se necesitará un equipo de cómputo Mac OS.

Con el fin de realizar el alta de aplicaciones en la tienda de Apple, lo primero es configurar el App Store Connect para obtener el identificador de bundle. Para ello se enumeran los siguientes pasos:

  1. Registrar el bundle ID: este es un identificador que se registra en Apple para la aplicación. Para obtenerlo se hace desde el sitio web:

    El siguiente enlace es externo a la Universidad Tecmilenio,
    al acceder a éste considera que debes apegarte a sus términos y condiciones.


    Se agrega el Explicit Bundle ID en la sección Identifiers. Se sugiere que sea el mismo que usaste en Android para el applicationID, algo como com.empresa.nombreapp y completa el registro llenando los campos adicionales solicitados.

  2. Crear la entrada de aplicación en el portal de App Store Connect: para ello accede, a la siguiente liga:

    El siguiente enlace es externo a la Universidad Tecmilenio,
    al acceder a éste considera que debes apegarte a sus términos y condiciones.

    Se abre la sección de My Apps y agrega la aplicación llenando todos los campos de los detalles de la aplicación, descripciones, etc. Coloca el bundle ID registrado en el paso anterior.

  3. Preparar el ensamblado en Xcode (ide de desarrollo de Mac Os): para ello se cambiarán el ícono de la aplicación, el nombre público y el bundle ID, similar al proceso que se realiza en Android. Para ello, abre la ruta en la carpeta del proyecto: /ios/Runner.xcworkspace y procede a realizar las configuraciones.
    1. Cambia el nombre a mostrar de la aplicación en Display Name en la ficha General.
    2. Coloca el Bundle ID seleccionado anteriormente.
    3. Se colocará la versión mínima requerida de iOS en el campo Deployment Target. En el caso de Flutter, es la 8.0 por defecto.
    4. Asegúrate de que los valores Version y Build estén declarados en el archivo pubspec.yaml, los cuales son similares a los de la versión de Android, para evitar que la App Store rechace la aplicación.

  4. Cambia el ícono de la aplicación: tendrás que seguir la guía de íconos e imágenes de Apple, la cual se podrá consultar en:

    El siguiente enlace es externo a la Universidad Tecmilenio,
    al acceder a éste considera que debes apegarte a sus términos y condiciones.

    Debes sustituir las imágenes en la ruta: /ios/Runner/Assets.xcassets, selecciona y agrega los íconos en cada uno de los tamaños y resoluciones.

  5. Firma la aplicación: debes acreditar la propiedad de la aplicación mediante el firmado de la misma. Para ello, únicamente captura el Xcode en los campos Apple Developer y el registro del Apple Developer Program. En automático, en la pestaña Signing & Capabilities aparecerá la opción de Automatically Manage Signing seleccionada y eso será lo único a realizar para poder firmar la aplicación.
    Asegúrate de que el campo de Team esté correctamente colocado. Una vez considerados estos puntos, puedes ensamblar la aplicación para su despliegue en la Apple App Store.

Para crear el paquete de aplicación, ejecuta el comando en Flutter “flutter build ipa”. Cuando se genera exitosamente el archivo resultante (ipa), lo puedes ubicar en la siguiente ruta del proyecto: build/ios/archive/MyApp.xcarchive. Al abrirlo desde Xcode, una ventana emergente aparece para iniciar la distribución y carga de la aplicación a App Store.

Posteriormente, debes hacer la revisión de algunas configuraciones antes de la carga a la App Store. Después de esta, los servidores de Apple ejecutarán un análisis para supervisar que la aplicación esté correctamente ensamblada y configurada. En caso de contar con errores o sugerencias, se te notificará vía correo electrónico a tu cuenta de desarrollador.

Si el proceso se completa satisfactoriamente y no existen revisiones importantes a implementar, puedes hacer una prueba o una puesta en producción. Las pruebas en iOS son ligeramente diferentes a Android, es decir, solamente hay un escenario de pruebas, pero existe la posibilidad de hacer una con audiencia interna o externa.

Al hacer una prueba externa necesitas hacer, por lo menos, una revisión corta antes de que esté disponible. Una vez que se ha hecho la revisión y corregido los posibles errores, puedes hacer la solicitud para lanzar el despliegue, sin embargo, habrá que esperar un par de días.

Existen diversos controles de calidad en iOS para permitir el despliegue. Se sabe, por comentarios hechos en la comunidad desarrolladora, que el proceso para hacer el despliegue en iOS es muy complicado y poco transparente. Se requerirá de un trabajo de depuración arduo y de mucha paciencia para lograr el despliegue en iOS.

Lamentablemente, el proceso de desarrollo en iOS es el más complicado, ya que requiere forzosamente un equipo Mac OS, además de que el despliegue final suele ser tortuoso. No obstante, debes recordar que iOS tiene alrededor de un cuarto de la tarifa de usuarios de cómputo móvil, por lo que tener una versión de la aplicación móvil en esta plataforma siempre será una buena idea.

Mantenimiento y propuesta de actualización de versión (control de cambios)


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Ya que la aplicación se ha implementado y lanzado, entrará en un proceso del ciclo de desarrollo de mantenimiento y de cambios. Es posible que la propuesta del desarrollo tenga que pivotar una vez que la aplicación sea usada por los primeros usuarios conocidos como early adopters, quienes serán los primeros en dar retroalimentación (Falcon, 2020).

De acuerdo con Gómez y Moraleda (2020), durante la fase de explotación del software (despliegue) es necesario realizar cambios, ya sea para corregir errores no detectados en las fases de desarrollo y prueba, o para agregar funcionalidades o mejoras.

Cualquier sistema de información o aplicación que esté en funcionamiento recibe comentarios sobre la funcionalidad, facilidad de uso y sobre la interfaz de desarrollo. Ante estos comentarios y nuevas situaciones de funcionamiento, la aplicación debe evolucionar para cubrir las nuevas demandas. Esta etapa en el ciclo de desarrollo se llama fase de mantenimiento. El resultado de esta fase se plasma en un documento que se conoce como control de cambios y la documentación de esta información permitirá independizar las fases del desarrollo y a las personas involucradas en el mismo.

También se sugiere implementar un software de control de versiones como Git para el control de cambios. Este es un software que permite controlar los avances y los cambios en un proyecto de desarrollo. Se puede considerar como una especie de máquina del tiempo, ya que permite regresar a versiones anteriores de la codificación, además de facilitar la documentación de los cambios realizados en el desarrollo y permite crear ramas paralelas, es decir, trabajar en una funcionalidad con una copia del código sin necesidad de cambiar el desarrollo original. Al final, se pueden unir las ramas para agregar nuevas funcionalidades.

Prácticamente, el ciclo de desarrollo de aplicaciones no termina con el despliegue, sino que continúa innovándose, creando nuevas funcionalidades y adaptándose a las necesidades. Dicho proceso seguirá hasta el momento en el que la aplicación ya no sea rentable, o bien, cuando su propósito ya no tenga cabida en las necesidades presentes del ecosistema de usuarios.


Cierre

El despliegue de aplicaciones es una fase en el ciclo de desarrollo de aplicaciones móviles que suele ser complicada, debido a los requerimientos de cada plataforma. Se sugiere realizar prototipos con un mínimo de funcionalidad a modo de prueba para verificar si se cumplen los lineamientos para cada plataforma en su despliegue y, en caso contrario, hacer los ajustes. La retroalimentación que ofrece Apple y Google es vital para afinar las entregas y perfeccionarlas en futuros desarrollos.


Checkpoint

Asegúrate de:

  • Reforzar los tipos de modelos de negocio y sus implicaciones para realizar un correcto despliegue en las tiendas de aplicaciones de Android e iOS.
  • Detectar los requerimientos técnicos del despliegue web para considerar los desarrollos hacia esta plataforma.
  • Manejar las solicitudes de las plataformas para crear los paquetes de aplicación a las tiendas de Android e iOS.
  • Construir el App Bundle de Android para hacer la carga de las aplicaciones en Google Play Console.
  • Ejecutar el procedimiento de construir el paquete IPA para hacer el despliegue de la Apple App Store.
  • Elaborar el proceso de documentación y control de cambios para implementar la fase de mantenimiento de una aplicación.

Bibliografía

  • Alessandria, S., y Kayfitz, B. (2021). Over 100 proven techniques and solutions for app development with Flutter 2.2 and Dart. India: Packt Publishing.
  • Bailey, T., y Biessek, A. (2021). Flutter for Beginners: An introductory guide to building cross plataforma mobile applications with Flutter 2.5 and Dart (2a). Reino Unido: Packt Publishing.
  • Falcon, M. (2020). Qué son los Early Adopters y cómo encontrarlos. Recuperado de https://martafalcon.com/early-adopters/
  • Gómez, S., y Moraleda, E. (2020). Aproximación a la ingeniería del software (2a). España: Universitaria Ramón Aceres.
  • Google. (s.f.). Prepara y lanza una versión. Recuperado de https://support.google.com/googleplay/android-developer/answer/9859348?hl=es-419

La obra presentada es propiedad de ENSEÑANZA E INVESTIGACIÓN SUPERIOR A.C. (UNIVERSIDAD TECMILENIO), protegida por la Ley Federal de Derecho de Autor; la alteración o deformación de una obra, así como su reproducción, exhibición o ejecución pública sin el consentimiento de su autor y titular de los derechos correspondientes es constitutivo de un delito tipificado en la Ley Federal de Derechos de Autor, así como en las Leyes Internacionales de Derecho de Autor.

El uso de imágenes, fragmentos de videos, fragmentos de eventos culturales, programas y demás material que sea objeto de protección de los derechos de autor, es exclusivamente para fines educativos e informativos, y cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por UNIVERSIDAD TECMILENIO.

Queda prohibido copiar, reproducir, distribuir, publicar, transmitir, difundir, o en cualquier modo explotar cualquier parte de esta obra sin la autorización previa por escrito de UNIVERSIDAD TECMILENIO. Sin embargo, usted podrá bajar material a su computadora personal para uso exclusivamente personal o educacional y no comercial limitado a una copia por página. No se podrá remover o alterar de la copia ninguna leyenda de Derechos de Autor o la que manifieste la autoría del material.