¿Eres desarrollador móvil? Entonces la primera decisión que seguro que tomas es en cuál de las dos plataformas mayoritarias iniciarse, ¿iOS? ¿Android? ¿De qué depende la decisión final? Entre otras cosas, de los conocimientos previos que tengamos a priori o de la capacidad de adaptación a nuevos retos.

Se lanzan a la arena dos de nuestros desarrolladores para enfrentar esas dos plataformas y ver qué ventajas e inconvenientes tiene desarrollar en cada sistema operativo. ¡Comienza la batalla! ¡Vota por tu favorito!

Héctor Rubial

Héctor Rubial

Ha llegado un nuevo chico a la clase y su nombre es Swift. Ha aprendido la lección de todo lo que no nos gustaba los programadores, o nos resultaba engorroso, y está dispuesto a facilitar nuestro trabajo con ventajas tanto a nivel visual (mejorando la lectura del código con menos estructuras innecesarias) como a nivel de compilador (proporcionándole suficiente información para que pueda optimizar el uso de memoria y tiempo de ejecución).

Y, por si eso fuera poco, el nuevo no viene con las manos vacías. Está repleto de nuevas opciones y funciones que nos facilitarán nuestro día a día. Ahora tenemos playgrounds y podemos ejecutar código interpretado sin tener que esperar a una compilación. Cuando tus funciones estén optimizadas y funcionen como quieres, puedes pasar a generar un código compilado óptimo para tener las ejecuciones limpias y rápidas a las que nos tienen acostumbrados los iPhone.

Tenemos las ventajas del código interpretado y compilado en un mismo lenguaje y en un mismo entorno. Son tales las ventajas de este lenguaje que hasta Google se plantea usarlo para Android. Jorge, hay que modernizarse, no se puede vivir en el pasado.

Por otra parte, todo el código lo desarrollaremos dentro de nuestro IDE y, de nuevo, se nota mucho la sinergia generada entre Swift y Xcode. En este entorno, también tenemos una integración completa con simuladores (que tienen una velocidad de ejecución correcta, y no me puedes negar Jorge que los simuladores de Android son prácticamente imposibles de usar) visualizando en todo momento, mediante gráficas, nuestra ocupación de memoria, procesador e impacto en consumo de batería.

También en este entorno puedes diseñar tu interface mediante un drag and drop que funciona de verdad. Hasta hace relativamente poco ni siquiera necesitábamos estar escalando componentes porque todo se llevaba a la aplicación exactamente como pedía el diseñador y no hacíamos una aproximación que se pareciese algo al diseño original como pasa en Android.

Ya que ésta se ha introducido mucho más tarde que en Android, se ha podido desarrollar con un entorno más moderno y enfocado a resolver el problema que aporta mucha más potencia a la hora de escalar, redimensionar y ubicar elementos en posiciones relativas a otros.

No tenemos un pseudo html escalando nuestros componentes. Los anclajes y reglas de escalado son más exactas, precisamente por tener la experiencia de los errores de Android. Incluso tenemos Storyboards que nos ofrecen un mapa completo o parcial de navegación dentro de nuestra aplicación.

Dispositivos… Muchos, variados, cada uno de su fabricante y solo comprendido completamente en su casa, ¿verdad, Jorge? Esta es la pesadilla que sufren los desarrolladores de Android y en la que no nos vemos inmersos los desarrolladores de iOS.

En nuestro ecosistema, si quieres hacer pruebas exhaustivas y completas, se pueden realizar; en Android es prácticamente imposible. En iOS siempre se pueden generar aplicaciones más robustas que están más probadas y, sobre todo, a los desarrolladores nos van a dar menos dolores de cabeza.

Las cosas cambian de versión a versión y hay cosas que se quedan en el pasado. Pero antes de dejar algo fuera, siempre está “deprecado” durante dos versiones. Si no has mirado una parte del código en al menos dos años igual hay algo que se puede mejorar.

Esto también implica que en cada código nuevo que haces puedes utilizar las nuevas y relucientes funciones que acaban de sacar, algo impensable en Android. No puedo evitar acordarme de una conferencia de Android en la que estaban hablando de unas funcionalidades nuevas de diseño que habían presentado hacía 6 meses y la carcajada generalizada de todo el público asistente cuando el ponente dijo: “Esto lo podremos usar… dentro de un mes”. Vivís en el pasado, a modo de novedad podéis utilizar funciones de hace como poco 2 o 3 años. Eso es innegable, Jorge.

Es cierto que hay cosas que no están permitidas dentro de iOS, pero al final las limitaciones que encuentro me llevan a preguntar si realmente la aplicación debería estar haciendo eso y si no existe una forma mejor de hacer las cosas.

De hecho considero, al igual que Microsoft hizo en su momento, que Android es un entorno ideal para experimentar con nuevos conceptos al ser un terreno en el que “se permite todo”, y por eso no me parece seguro en relación al usuario final.

¿No os habéis preguntado por qué un iPhone con una batería de 1800 mah dura lo mismo o más que un Android con una de 3000 mah? Estas limitaciones nos ayudan a tener un código más limpio y elegante, que se traduce en una mayor duración de la batería gracias a un uso óptimo de los recursos disponibles.

También la seguridad es un punto débil en Android, por ser territorio sin ley. iOS, tanto a nivel de usuario como del sistema, muestra una seguridad que prima por encima de la libertad que se le da al programador. Esto revierte en confianza en la plataforma y una experiencia óptima, lo que nos lleva a que el usuario use más aplicaciones (y durante más tiempo) que el usuario medio de Android.

Hablamos también de la buena praxis en la programación. Muchas veces en Android se dejan hilos funcionando en segundo plano cuando se podría realizar de otra forma más óptima. Unas aplicaciones acceden a información de otras cuando no deberían… Dentro de un Android siempre reina cierto grado de anarquía.

iOS inspira mayor confianza de cara al usuario, además de tener un público de terminales distinto, nos encontraremos con un entorno en el que el usuario está más dispuesto a realizar compras sin miedo a que sus datos acaben en manos del típico hacker ruso.

Esto nos lleva al punto en el que menor número de usuarios genera más beneficios. Según este artículo de la revista Forbes (¿Sensacionalista? ¿En serio?) los ingresos que se pueden obtener son el doble de beneficios con una aplicación iOS que con una en Android. Incluso cuando el número de descargas de la misma sea la mitad en una plataforma que en la otra.

Si bien España es un mercado anómalo debido al exceso de cuota de mercado de Android, el mercado internacional es algo distinto. No me sirve de nada que me digas que el 80% del mercado es Android si al final es un target de mercado de gente que apenas tiene para comer, por poner un ejemplo en la India o África.

Si nos vamos al primer mundo la cosa cambia y lo sabes. Estados Unidos, como bien dices, 44% de cuota de mercado, sí, pero la que está dispuesta a gastar dinero y por una razón tan simple como tener mayor poder adquisitivo.

Si Zowi no funciona en iOS simplemente es por el ahorro en coste que hace BQ en sus componentes. Solo con haber utilizado un chip Bluetooth 4.0 en lugar del 2.1 que usan sí podría funcionar con iOS. Perder un target con un gran poder adquisitivo por no gastar 50 céntimos más, en un chip de tu producto de 100 euros, que además optimiza el consumo de batería, no diría que sea un gran acierto por parte de esta compañía.

Por todas estas razones, desde mí, iOS es una plataforma en la que se pueden obtener mayores resultados con menos dolores de cabeza. Por eso iOS siempre ha sido la niña bonita para los programadores de aplicaciones multiplataforma. Curioso que la mayoría de apps salgan primero en iOS y después en Android.

Jorge Calleja

Jorge Calleja

Querido Héctor, sabes igual que yo que Android suele ser una buena opción para la mayoría, ya que la base es JAVA (aunque también puede desarrollarse en C++, pero eso requiere más nivel de conocimiento de la plataforma).

JAVA es uno de los lenguajes más universales y extendidos en el mundo del desarrollo, así que prácticamente todos los desarrolladores lo encontrarán amigable y desde el primer minuto estarán cómodos. Desde luego es más amigable que Objective C o Swift para la mayoría, eso no me lo puedes negar.

El desarrollo en Android actualmente requiere usar el IDE Android Studio, basado en IntelliJ, ya que Google ha dejado de dar soporte al anticuado IDE Eclipse. De todos modos, el cambio no es nada traumático.

El punto más débil del desarrollo para Android, y el que más miedo suele dar a un desarrollador nuevo, es la vastísima cantidad de terminales diferentes que hay en el mercado, como bien dices.

Mientras que en iOS sólo hay un fabricante, que es Apple (aunque tenga varios terminales con prestaciones y resoluciones diferentes), en Android hay miles de fabricantes con cientos de terminales disponibles. Desarrollar para todos ellos puede dar algo de vértigo, pero una ventaja de Android frente a iOS en este aspecto es que, desde su nacimiento, se hizo pensando en esta necesidad y desde siempre sus interfaces se han hecho "responsive" para que se adapten lo mejor posible a todos estos dispositivos. Con esto consiguen abstraer al desarrollador del 95% de estos problemas y le permiten centrarse en el desarrollo funcional común a todos los dispositivos.

En iOS esta adaptación se hizo a posteriori, ya que al inicio solo había una resolución y un tamaño de pantalla y no tuvieron la necesidad de hacer las interfaces “responsive” desde el principio.

Y esto, por mucho que me lo trates de justificar, es un fallo en iOS que ha provocado se hayan hecho auténticas chapuzas desde mi punto de vista, como por ejemplo que desarrolles para una resolución fija (320x480) y luego el sistema “escale” estas proporciones multiplicando x2,x3,x4… etc. Si eso no es “improvisar”, dime tú que es.

De todos modos, menos mal que iOS copió el “responsive” de Android para enfrentarse desde iOS 6 a los problemas que Android llevaba solucionando años antes. ¿O no es así?

También da miedo a un desarrollador saber que, quizá, con una actualización de nueva de iOS tu aplicación puede dejar de funcionar o funcionar mal porque han cambiado comportamientos clave: por ejemplo cuando en iOS 5 quitaron la posibilidad de que un TextView fuera Clickable, recuerdo a compañeros míos echando humo recompilando todas las versiones de sus apps y volviéndolas a subir porque ya no funcionaban bien.

Ambos sabemos que esto en Android es mucho más complicado que pase, puesto que Android incluye todas las máquinas virtuales de todas las versiones anteriores para que no se altere el funcionamiento de una app ya subida por un cambio en algún componente de una versión nueva.

Android es un sistema más abierto y “libre” para el desarrollador, permitiéndole crear apps sin tantas trabas, pudiendo tener en una app un control mucho más amplio del terminal que en iOS.

En muchos casos las restricciones que impone Apple al desarrollador pueden implicar que haya que ponerse en contacto directo con la plataforma o, directamente, no puedan llevarse a cabo en el sistema de Apple por no cumplir los patrones que impone la compañía.

Acerca de la seguridad, tal y como tú mismo dices, Héctor, ha estado más cuestionada en Android que en iOS. En primer lugar, decir que en Android el sistema te deja a ti escoger el nivel de seguridad que deseas.

Si quieres instalar aplicaciones “inseguras” en un principio es algo bloqueado, pero puedes desactivar esa seguridad si lo deseas. El terminal es tuyo. En iOS, Apple decide cómo debes usar tu móvil, no digo más...

En el caso de Android, al ser un sistema abierto, y con su código fuente disponible para cualquier persona, es más fácil detectar alguna vulnerabilidad que explotar. Pero también es cierto que es más fácil de analizar para un desarrollador y que si encuentra un bug, pueda arreglarlo.

Un sistema no puede basar su seguridad en que el código fuente no esté disponible ni tampoco lo hace más seguro de por sí.

Otro punto a tener en cuenta es el coste de las herramientas para desarrollar. Mientras iOS requiere un Mac (y no de los más baratos precisamente, que luego se llena el disco duro solo con las actualizaciones del XCODE…) y pagar una licencia anual de 99$, en Android vale cualquier equipo actual (incluso uno de 300€), y la licencia es de 25€ en un único pago para publicar en Google Play, permitiéndose distribuir también por canales alternativos (como por ejemplo la tienda de Amazon).

Si hablamos de potencial de distribución de una app en cada uno de los sistemas, Android domina el mercado mundial. Es cierto que en USA el mercado es similar (53% Android, 44% iOS), pero en casos como España la diferencia se dispara hasta 10 veces más: Android 91,2%; iOS 8,3%, en junio de 2016.

A nivel mundial, Apple tiene el 13% del mercado global, y Android en torno al 80%. Como puedes ver, Hector, el mercado español no es “anómalo”. De hecho, a nivel mundial es más parecido a la media que USA; y para nada hablamos de una proporción de 2:1, sino de más de un 6:1.

Esto es algo a tener muy en cuenta a la hora de iniciar el desarrollo en una plataforma o en otra, puesto que con el desarrollo inicial se cubrirá más mercado si se opta por Android.

De todos modos, Héctor, hablando sobre qué plataforma es más rentable, aquí habría mucho por discutir. Como comentas, tradicionalmente se ha dicho que los usuarios de iOS están más predispuestos a comprar apps que los de Android, poco a poco ésto se va diluyendo. De hecho, muchas de las aplicaciones y juegos ya son gratuitas con micro-pagos, y en el caso de Android las apps llegan a mucho más público potencial.

De hecho, Héctor, te diría que hicieras el ejercicio de mirar en tu móvil personal . Verás cómo el 90% de tus propias aplicaciones SON GRATUITAS, y esto hace difícilmente justificable que sea “más rentable” hacerlas en iOS (repito, 14% del mercado) que en Android, puesto que esta gran parte de aplicaciones, la rentabilidad se ve de un modo indirecto y es directamente proporcional al número de usuarios a las que lleguen.

Por esta razón, artículos sensacionalistas, como el de Forbes, no sirven de mucho, ya que solo tienen en cuenta las ventas directas de apps, ya que calcular la rentabilidad de una app “gratuita” o de servicios es prácticamente imposible.

Como resumen, yo veo que entrar en el desarrollo Android es más fácil, más barato y encima se cubren a más usuarios potenciales. Aunque si tu app va a ser de pago directo, quizá sea más rentable empezar por iOS.

Además, en Android se permite hacer casi cualquier app que se te ocurra y en iOS la plataforma te va a impedir hacer ciertos tipos de desarrollos. Y si no que se lo digan a BQ y su robot Zowi, incompatible con iOS porque la plataforma les cierra ciertos usos del Bluetooth a bajo nivel.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.