Una de las ventajas de Flutter es que podemos desarrollar una aplicación multiplataforma con una misma base de código. Esto está genial, pero ¿qué pasa si no tenemos un equipo de Apple?, ¿cómo probamos la app en iOS?
Gracias a tecnologías como Flutter, podemos desarrollar una aplicación que funcione en iOS en cualquier equipo con Linux o con Windows, pero si queremos probarla en un emulador de iPhone, generar un ejecutable o subir la aplicación al Apple Store, tenemos que pasar por utilizar un equipo de Apple (desde luego se lo han montado muy bien).
Si no queremos o no podemos adquirir un dispositivo que nos permita hacer esto, tenemos algunas alternativas. Una de ellas es utilizar macincloud.com, una plataforma que nos proporciona un escritorio remoto para poder tener un Mac en la nube con el que poder hacer nuestras cosas de programador. Vamos a probarlo a ver qué tal…
Acceder a un Mac en la nube con macincloud.com
Por supuesto todo esto no es gratis, vamos a utilizar para esta prueba un plan de 20$ al mes. Hay planes con un importe más algo pero que te dan mejores prestaciones. Creo que no merece la pena describir los planes y características, el su web está toda la información.
A los pocos minutos de completar el registro y el pago (el proceso es muy sencillo), recibimos un email con las instrucciones para acceder a nuestro nuevo equipo Mac en la nube. Básicamente hay que bajar un zip desde un enlace que nos envían. Si lo descomprimimos veremos varios ejecutables que nos permitirá abrir el escritorio remoto en diferentes resoluciones.
En el caso de Windows, que es en el que estoy probando, no hace falta descargar nada más, con ejecutar el fichero rdp de la resolución que escojamos, veremos como se abre una ventana de escritorio remoto donde directamente nos piden los datos de acceso.
Estos datos de acceso también los tenemos en el email que hemos recibido. Los introducimos y tras esperar unos minutos (imagino que por ser la primera vez), accedemos a nuestro escritorio. Por cierto, antes de conseguir acceder me ha aparecido un error raro un par de veces, imagino que necesitaría un tiempo para prepararse porque acabo de crear mi cuenta y es normal.
Una vez dentro, ¡sorpresa! ya tenemos unas cuantas aplicaciones instaladas, entre ellas Android Studio y Visual Studio Code. Esta gente sabe lo que se hace.
Instalar Flutter en nuestro Mac
Ya tenemos nuestro Mac en la nube para trabajar o hacer lo que queramos. En mi caso lo que me interesa es probar mis apps con Flutter en iOS, así que lo primero que voy a hacer es precisamente instalar Flutter.
Simplemente hay que abrir un navegador, por ejemplo Chrome, descargar el zip con Flutter para Mac de la web oficial, descomprimirlo en la carpeta que más nos guste y añadir el ejecutable de Flutter al path del sistema para tener el comando siempre disponible en consola. Viene todo muy bien explicado en la web de Flutter.
Una vez hecho todo eso, ya podemos ejecutar Flutter en nuestra consola. Si ejecutamos por ejemplo el comando «flutter doctor» vemos información de nuestra instalación y sugerencias de cosas que podemos o debemos configurar:
Configurando Android Studio
Lo siguiente que voy a hacer es abrir mi IDE de desarrollo para ponerlo a punto, en mi caso utilizo Android Studio. Como decía, también viene pre-instalado Vistual Studio Code, para aquellos que lo prefiráis.
Abro el IDE y voy siguiendo los pasos del asistente manteniendo en principio la configuración por defecto. Uno de los pasos acerca de dar más recursos a nivel de procesador al IDE no lo puedo hacer porque necesito tener permisos de root y con este plan básico que he contratado no lo tengo, pero ningún problema, cancelo ese paso y no pasa nada.
Android Studio se ejecuta correctamente. Voy a probar a abrirlo importando directamente un pequeño proyecto de pruebas que tengo en Github. Para ello pulso en la opción «Check out project from Version Control» y después selecciono «Git».
Introduzco la URL del proyecto que quiero clonar.
Al ser un proyecto privado en este caso me pedirá login con mi usuario y password de Github. Después pregunta si deseo crear un nuevo proyecto con estas fuentes. A mí me gusta decir que no y después abrir el proyecto que se ha descargado. Si tenéis dudas me lo comentáis y si os viene bien hago un post sobre como importar proyectos de Github en Android Studio.
Total, que ya tenemos Android Studio abierto con nuestro proyecto. Lo que pasa es que no reconoce bien el código porque no tenemos plugins de dart, ni de flutter ni nada. Vamos al apartado de plugins y le ponemos remedio a eso pulsando el botón «Install» del plugin de Flutter.
Aparece un mensajes indicando que este plugin necesita el plugin de Dart, así que le decimos que lo instale también. Después de unos minutos me pide un reinicio y le hago caso.
Ahora ya parece que reconoce el código de Flutter, aunque aparece un mensaje que nos pide configurar el Dart SDK, ya que no sabe dónde está.
No es necesario descargar el SDK de Dart porque ya lo tenemos con nuestra instalación de Flutter. Pulsamos sobre la opción «Open Dart settings» para configurarlo y le indicamos que está dentro de la carpeta flutter\bin\cache\dart-sdk en la ruta donde hayamos colocado nuestra instalación de Flutter.
Probar nuestra app en un emulador de iPhone
Ahora que ya tenemos nuestro mac, Flutter instalado y nuestro IDE preparado, voy a intentar probar la app en un emulador de iPhone, que es la razón por la que me he metido en esta historia.
Si despliego el selector de dispositivos donde poder ejecutar la aplicación, observo que tengo directamente una opción «Open iOS Simulator».
¡Perfecto! esta gente de MacinCloud nos lo pone fácil. Pulso sobre ella con alegría y tras unos minutos veo que se abre un precioso emulador.
Pulso el botón de «run» para ejecutar la app y veo que se se abre correctamente.
¡Pues parece que esto funciona! un recurso a tener en cuenta si queremos desarrollar para iOS y no tenemos un equipo de Apple a mano. Y no sólo esto, ¿y no no uso este escritorio solamente para probar?, ¿y si lo uso como entorno principal de desarrollo? desde cualquier ordenador tendría disponible mi espacio de trabajo. Ya veremos.
De momento esta herramienta me va a servir perfectamente para solucionar el problema que tenía, desarrollar apps para iOS sin tener un Mac.