La aventura de mudar de iOS a Android, por Alberto Corbi

Soy programador iOS desde hace ya 5 años (en Mac, veintitantos). No puedo asegurarlo ni tampoco me vanaglorio de ello, pero creo que fui quizás el primer incauto que tuvo que hacer incansables peripecias administrativas internacionales para conseguir la licencia de desarrollo iPhone en España. Entre otras, tuve que llamar a Washington y obtener una especie de licencia de autónomo americana. Por cierto, qué fácil es allí: bastó con una llamada de teléfono y me enviaron gratuitamente a casa (sí, a casa en España) toda la documentación. Hoy en día estas gestiones son mucho más fáciles, pero sigue siendo igual de difícil (y caro) ser autónomo en nuestro país. A ver si llega de una vez la famosa alfombra roja que todos los gobiernos prometen…

Bueno, yendo al grano. Desde aquel día cuento ya con casi una veintena de aplicaciones para iPhone e iPad. Mi orgullo más reciente es FreeSector, un exitoso y gratuito juego de puzzles circular desarrollado junto a mi primo en nuestro tiempo libre.

Como buen usuario de productos Apple desde hace 25 años, Android es una plataforma que jamás me había interesado ni como usuario ni como desarrollador. Jamás hubiera considerado la idea de lanzarme al mundo del desarrollo Android si no fuera por mi amor por la docencia. Cuando en la Universidad Internacional de La Rioja me ofrecieron dar un módulo del Máster de Aplicaciones Móviles y que en el mismo debería dar una introducción a Android, no me lo pensé más: había llegado la hora de dar el paso.

¿Cómo? Yo no tenía ni idea de esta plataforma. Cada vez estaba más claro que compaginar ambos mundos no iba a funcionar. Yo soy persona de un único amor, de una única relación formal, como Alicia Keys con BlackBerry. Era necesario lanzarse a la piscina y tomar una elección. Era necesario pensar en Android, vivir para Android y respirar Android por todos los poros. Así que vendí mi iPhone al primer postor que resultó ser un amable director creativo de los increíbles estudios gráficos Socarrat, Vicente Sanfeliu. Sé de buena tinta que mi iPhone está en buenas manos y sí, ya sé que él (mi iPhone) nunca me abandonaría.

Con el dinero de la venta, me compré mi primer (y único hasta la fecha) móvil Android de marca Airis. Sí, me habéis pillado, lo obtuve con una de las famosas promociones postnavideñas del periódico regional de turno. Y no, no me había dormido en los laureles, ya llevaba semanas haciendo pinitos con el entorno de desarrollo propio de esta plataforma, para cuando tuve el terminal Android en mis manos y ya incluso había publicado mi prima app en la tienda Google Play. Paso a describiros mi experiencia como usuario, como desarrollador y como profesional durante esta migración.

El teléfono

Se trata de una de las primeras incursiones Airis en el mundo de la telefonía móvil. El modelo es concretamente el TM475. Está bastante bien: pantalla “retina”, cámara 8Mpx, fluido. Se ha comparado en potencia con un iPhone 4 (de hecho el motor es un CortexA9, sobre el que el Apple A4 está basado). Puede decirse que es un móvil español creado por una empresa española, lo cual es un plus en los tiempos que corren. No tiene ni mucho menos la robustez de un iPhone, pero me vale. Cosas que echo del menos del hardware del terminal: un botón de silencio y el no poder manejarlo con total comodidad con una única mano. Parece mentira, pero la decisión de diseño de Apple respecto a la anchura del iPhone es la (única) correcta. Es el tamaño adecuado para que la mano media pueda agarrar y usar el terminal con total confianza. ¡iPhones con pantalla grande nunca mais! Con este terminal Airis tengo miedo de que se me vaya de la mano al perder sujeción intentando alargar el pulgar todo lo posible. Me quedo con lo positivo: es un móvil “made in china” pero diseñado en España con una calidad/potencia de componentes (que no de diseño) pareja a la de algún iPhone inexistente entre 4 y el 4S.

El operativo.

Se trata de Android 4.0.4. Es prácticamente la misma versión de Google con alguna adaptación gráfica por parte el fabricante. No hay actualizaciones a versiones más recientes (al menos todavía) y puede decirse que no las espero nunca. Eso es algo que detesto: depender de tantos terceros para poder actualizar el operativo. Que si el operador, que si el fabricante, que si el mago de Oz… Con un iPhone es increíblemente más sencillo: Apple se encarga de todo. Como dijo Steve Jobs, “operador, tú encárgate de la red, que nosotros nos preocupamos por el teléfono“. Es una pena, porque hay terminales Android suficientemente nuevos y potentes para soportar muchas versiones venideras del sistema. Entonces, ¿por qué los usuarios de Android no montan en cólera? Yo veo dos razones. Primera: les da igual. En este grupo metería a jóvenes y usuarios poco o nada tecnófilos que no valoran el estar actualizados. Segunda: las aplicaciones. A diferencia de iOS, las aplicaciones de Android pueden llegar a tener un control muy profundo sobre las labores que, en mi opinión, deberían ser propias y únicas de un sistema operativo móvil. Con esto se consigue una “falsa” sensación de versatilidad, novedad, avance y de “estar a la última”. Por ejemplo, las aplicaciones pueden ser “launchers” y redefinir por completo el interfaz de usuario, pueden ser fondos de pantalla, interactivos, widgets que se ponen sobre el escritorio dando un aspecto único y personal a cada terminal. Las aplicaciones de Android pueden también alcanzar privilegios dignos de un OS que a cualquier usuario de iOS nos alertaría como mínimo (por no decir que nos espantaría). Por ejemplo: ¿Cómo es posible que una aplicación pueda iniciar y cerrar aplicaciones a su voluntad? ¿Cómo es posible que una aplicación pueda abrir o cerrar conexiones (wifi, 2G, 3G) cuando le venga en gana? ¿En qué cabeza cabe que una aplicación pueda correr en segundo plano permanentemente sin un icono bien visible? Sí, es verdad, cuando una aplicación va a instalarse se presentan/advierten los permisos y acciones que son necesarios, pero ¿qué usuario se para a leer parrafadas técnico-legales en el metro o en el autobús?

Sí, al que va de iOS a Android tanta “libertad” le da un poco de miedo, y no quiero entrar en controversias relacionadas con virus o malware. Se supone que Google está vigilante desde su tienda Google Play para que las aplicaciones no hagan nada desbocado, pero para una mente conservadora como la mía o la del usuario medio de iPhone…

Vayamos ya a aspectos relativos al desarrollo.

El lenguaje de programación

Estoy muy acostumbrado a Objective-C. Reconozco que Java es en muchos aspectos más “simple” y repensado a partir de los paradigmas de programación orientada a objetos de los 80-90. Toda la definición de las clases se hace en un único fichero: no hay cabeceras, por ejemplo. La interfaz de una clase se dirime a partir de las definiciones de sus elementos. Por otro lado, echo mucho de menos la versatilidad de las categorías de Objective-C y sobre todo, sobre todo, sobre todo, que haya una única clase para crear colecciones de elementos: NSArray (o NSMutableArray para colecciones modificables). La simplicidad y potencia de NSDictionary también se encuentra a faltar. Trabajar con la funcionalidad de estas dos clases en Java es una odisea de complejidad e innecesaria diversidad.

El entorno de desarrollo

Por defecto, el entorno de desarrollo de Android (ADT) es un Eclipse con una serie de modificaciones (realizadas a través de plugins). Tengo que decir que me sorprendió gratamente lo bien y relativamente listo para usar que lo ha preparado Google. Ha conseguido refinar un parco y raudo entorno de desarrollo basado en Java en algo muy decente y listo para lidiar con la inmensa segmentación del ecosistema Android. Cuenta con un panel de control desde donde podemos descargar el API para cada versión de Android así como documentación, emuladores y ejemplos. Por cierto, hablando de emuladores: si no trabajamos con los emuladores basados en Intel, estamos abocados a la muerte por desesperación (los emuladores basados en ARM tardan unos 10 min en arrancar). Me sorprendió gratamente también la buena comunicación entre el IDE y el emulador: me esperaba algo más humilde (por no decir “cutre”). También me gustó mucho la integración de la documentación y la ayuda del ADT para completar y corregir código necesario. Casi pondría a esta cualidad (ligeramente) por encima de la equivalente en Xcode. Android trabaja también con proyectos, pero no existe una figura de fichero de proyecto que aglutine todos los ficheros correspondientes a una aplicación. Me gustaría poder hacer doble click sobre este fichero y que el ADT lo abriera y permitiera trabajar como lo hace Xcode. En el ADT los proyectos se autodefinen por la estructura de sus directorios y punto. Tampoco me acabo de acostumbrar al omnipresente “workspace”, donde están todos las carpetas con todos los proyectos. Me gusta más el enfoque de Xcode: una ventana, una idea, un proyecto, una app. El ADT permite una alta configuración de las herramientas y zonas de operación. Esto puede parecer una ventaja, pero a la larga se encuentra a faltar la simplicidad de Xcode que apenas tiene 4 zonas bien diferenciadas: panel de la izquierda (ficheros, clases, errores, búsquedas, etc.), panel de la derecha (propiedades), zona inferior de depuración y zona central de edición (de código y gráfica).

Editor de interfaz

Aquí llegan las mayores diferencias en cuanto a desarrollo se refiere. En iOS sólo tenemos que diseñar la interfaz para básicamente dos dispositivos: iPhone e iPad. El enfoque habitual de un desarrollo suele ser o bien que la app final sea para iPhone, que sea para iPad o que sea universal (ambas). En cualquier caso los lienzos y opciones están contados. De hecho lo normal es dibujar la interfaz usando posicionamiento absoluto ya que es imposible que pueda variar más allá de la transición del modo retrato a apaisado o viceversa. El caso más complicado es el de al app universal. En este caso, lo normal es diseñar dos interfaces distintas y trabajar con dos ficheros separados: uno para iPhone y otro para iPad. Por un lado puede parecer más trabajo, pero por otro se consigue una experiencia de usuario mucho más rica en cada dispositivo. En el casos e Android es otra cosa. Se suele operar directamente con un único fichero de interfaz para todos los dispositivos. Las aplicaciones son “universales por defecto” y deben de poder adaptarse a cualquier pantalla, ya sea teléfono, tablet o un engendro intermedio anatómicamente atroz (estoy hablando de los horrendos “phablets”). Para poder llegar a todas las configuraciones, se hace uso principalmente del posicionamiento lineal y relativo entre componentes. También se evita todo lo posible las vistas anidadas (una dentro de otra, que es muy normal en iOS). Yo ya conocía esta filosofía de diseño de interfaz de mis tiempos de Unix (GTK, QT, etc.), pero reconozco que me ha costado volver a coger el tino.
A pesar de lo que acabo de decir, hay que reconocer que Apple está apostando recientemente por el posicionamiento relativo “a la Android”. ¿Por qué? Mi “pet theory” personal es que la plataforma iOS va a crecer todavía más (iWatch, iTV?) y hay que ponérselo fácil al desarrollador para que no tenga que tener en danza tantos ficheros de interfaz. Este posicionamiento relativo en iOS se consiguen mediante una tecnología llamada “constraints” (ligaduras). Sí, tendremos apps capaces de correr en cualquier dispositivo con un único binario y con una única definición de interfaz.

Licencias de desarrollador y tiendas de aplicaciones

Nuevamente hay diferencias significativas de cara al desarrollador y al usuario. Por un lado, un usuario Android puede instalar las aplicaciones que le venga en gana en su dispositivo si cuenta con el correspondiente fichero apk (paquete de instalación). Esto incluye las propias aplicaciones desarrolladas en el ADT. En iOS esto no puede hacerse si no se ha pagado la licencia anual de 79€. Podemos trabajar con el emulador pero oh boy!: nada de poder testear en un iPhone real si no hemos pasado (anualmente) por caja. La licencia para Android es de unos 18€ y es para toda la vida. Lo que permite es poder publicar en el Google Play (porque ya podíamos ejecutar nuestras apps en nuestros dispositivos sin ninguna restricción).
Otra diferencia importante: el proceso de aprobación. En el App Store es manual y lleva más o menos una semana. En Google Play es un proceso automático y lleva unas pocas horas. Se supone que este proceso se encarga de detectar virus, copycats (apps que son copias de otras) y maldad en general. Como podéis comprobar la diferencia es importante para el desarrollador: de tener que esperar una semana a que un ser humano decida si tu app es digna de ser distribuida, a tenerla publicada en unas cuantas horas sin ningún o casi nulo proceso inquisitorio. Ya me he encontrado apps en Android que han sido actualizadas varias veces en un día, dado que no representa ningún dilema para el desarrollador. En el caso de iOS, antes de publicar una versión, hay que pensarlo bien dos veces, porque en el escenario de una metedura de pata no podremos reparar el daño hasta una semana después.

Las herramientas para el desarrollador de gestión y puesta a la venta de sus aplicaciones son muy parecidas y no voy a destacar ninguna diferencia significativa. En iOS tenemos iTunes Connect y en Android tenemos el Developer Console.

Nada más, espero que os haya parecido interesante esta humilde comparativa de un experto en iOS y un novato en Android. Os preguntaréis: ¿entonces cuál es tu plataforma ganadora? No lo voy a decir. Estamos en crisis y no hay que hacer ascos a nada, sino mantener una actitud abierta y deseosa de aprender. Sólo confesaré que sí: tengo una favorita, pero también creo y defiendo la libertad y apertura tecnológica como expresa muy bien Vic Gundotra (Vicepresidente de Google). Ambas plataformas son interesantes, respetables y útiles. Elegid la vuestra, o mejor, si podéis, elegid las dos.

Si queréis aprender más sobre desarrollo móvil en Android e iOS, no dudéis en preguntar por el fantástico Postgrado en Desarrollo de Aplicaciones Móviles de la Universidad Internacional de la Rioja. Allí os espero con ganas de aprender y con inquietudes.

0 0 votos
Article Rating
Subscribe
Notify of
15 Comments
Oldest
Newest Most Voted
Opiniones Inline
Ver todos los comentarios
autoy
9 years ago

Magnífico artículo, bien razonado y ponderado. Muchas gracias Alberto.

Pammac Dot Net
Pammac Dot Net
9 years ago

De nada. Un placer.

Pablo Romeu
Pablo Romeu
9 years ago

Hola Alberto,

Yo me encuentro como tú, solo que todavía no he tenido tiempo para saltar a Android, pero es que si ya me dan miedo las “constraints” de iOS… Lo de Android me da un poco de dentera…

En fin, gracias, esto que escribes me suena a mi futuro próximo.

n3k0
n3k0
9 years ago

Es verdad que en apple, han intentado mantener bastante controlada la desfragmentación, pero esta también existe:
iphone: 480 x 320
iphone retina: 960 x 640
Iphone 5: 1136 x 640
ipad: 1024 x 768
ipad retina: 2048 x 1536

En realidad, el más rompedor en este sentido es el iphone 5. En muchos casos esto no creo que sea un problema. Para una aplicación de twitter le da igual mostrar 10 líneas o 12, y tener menos scroll. En otro tipo de aplicaciones, igual hay que tener más control, p.e. en aplicaciones que quieran mostrar toda la información en la pantalla sin scroll. (p.e. Juegos).

Otra mala costumbre de apple, es no habilitar todas las características a dispositivos antiguos, y a veces sin ningún tipo de justificación. ¿Pq siri no puede ejecutarse en un iphone 4? Yo creo que es meramente por marketing, y que quieras tener el siguiente modelo que te permite cierta funcionalidad.

Por cierto, es verdad que la primera vez que arrancas un emulador con arm tarda 10 minutos en cargar. Pero puedes elegir que la aplicación se guarde un snapshot, y de esta forma la siguiente vez tardará mucho menos en cargar.

Un saludo,

Mandibul
Mandibul
9 years ago

[quote]la plataforma iOS va a crecer todavía más (iWatch, iTV?)[/quote] ¿Y no podría ser también camino andado para el Mac? En aras de una fusión de OSs como la de Wimdows?
Bonito artículo. No entendí casi nada, pero la historia me gustó.
Saludos

Yules
Yules
9 years ago

#4 En cuanto al “capricho” de Apple de no haber implementado las mismas funciones que en los modelos más modernos, sabe que un iPhone 4S con iOS 6 va de culo, aun sin más procesos en multitarea que el correo , así que imagínate un iPhone 4.

Te pongo el último ejemplo de esta incapacidad con el que me he topado: Con el iPhone 4, con iOS 5, usaba con frecuencia la aplicación Endomondo para controlar mis caminatas. Muchas veces paraba por el camino y hacía algunas fotos. Ningún problema. Con el 4S con iOS 6, si abro la cámara Endomondo se cierra y se pone en pausa, porque el sistema no puede con los dos. La primera vez que me pasó creí que había sido casual, pero ayer mismo volvió a ocurrir. Si paro a hacer una foto tendré que rearrancar Endomondo y despausarlo, y eso sólo con el correo en ejecución. Ya ves qué gracia el dichoso iOS 6. Y eso sólo es la punta del iceberg de constantes berrinches y pataletas.

Si el iPhone 4 se hubiera quedado en iOS 5, eso que hubieran ganado sus usuarios porque lo que ha aportado iOS 6 ha sido hacer un pan como unas hostias.

Mendiaco
Mendiaco
9 years ago

yules, yo uso un iphone 3G, y estoy peor que tu.
No puedo descargar ninguna aplicación de la applestore, pq con al actualización a ios 6. Cada una de las aplicaciones que se actualizan pierden su compatibilidad con el iphone 3g (Eso simplemente por la ley de apple, ya que no se genera código para el procesador del iphone 3g).
Lo de cerrarse aplicaciones, cada 2×3 tengo ese problema, a veces unicamente abriendo una aplicación me pasa esto, uso el runtastic, parecido al endomondo y no veas los problemas que me da de este tipo.

Si apple no te hubiera dejado subir al ios6, te encontrarias como yo con el iphone 3G. Que la mayoria de aplicaciones no las podrias instalar, o si puedes hacerlo ahora, en unos meses no podrias. Yo por eso me tuve que subir el sitema hasta el màximo, el 4.02 que permite el iphone 3g, pero la velocidad en dejar “deprecated” sus ios por parte de apple, hace que me planteo, un proximo cambio de movil a android.
Pero aun va más el afan de apple, me he encontrado que los móviles android con la última versión, no se pueden leer las targetas de memoria, o la memoria interna del telefono, sin una aplicación especial, ya que no es capaz el osx de reconocerlas, y hay que instalar un programa aparte, que no es lo mismo que tener un disco duro virtual. Supongo que es para chinchar al usuario que escoge android y usa un mac.
Todo un desproposito de intentar enrocarse en si misma apple, usando componentes estandar, pero poniendonos a los usuarios piedras en el camino para que no abandonemos su plataforma.

firewire
firewire
9 years ago

Artículo muy interesante. Muchas gracias. 🙂

lamwnidna
lamwnidna
9 years ago

¡Buenas noticias! Wow! Decidí darle mi marido un teléfono móvil! 1G RAM N9330 Nota II i7100 5,3 Pulgadas QHD 960 * 540 Pantalla multi-táctil MTK6577 Dual Core CPU 1G Android 4.1 GPS Teléfono. Sólo 129,99 Euro!Lo he usado durante una semana. siguen funcionando bien, toque flexible, Internet de banda ancha, se cayó dos veces, todavía no hay ningún daño. Yo soy el más agradable con este acuerdo. es el mejor teléfono que compré oline. en esta tienda: http://adres.name/4dd
Perfecto! Realmente genial! Supongo Que No Se Puede encontrar más Las NINGUN PRECIO BAJO! Amigos, Tal vez usted puede comprar para regalar a tu esposa o esposo!

wenmusic
9 years ago

#6 Pues debo contradecirte. Yo tengo un iPhone 4 y mi novia un 4S y van muy muy bien, especielmente el suyo, claro con iOS6. Sigo pensando que algo le pasa a tu terminal para dar tantos poblemas, pero iOS6 va bien, comprobado ya en muchos terminales de otros también, sin problema alguno.

Pablo Romeu
Pablo Romeu
9 years ago

#6 lo mismo digo. Mi mujer tiene mi antiguo iPhone 4 con iOS 6 y va de lujo.

Yules
Yules
9 years ago

#7 A ver, tampoco exageremos, estamos hablando de un 3G de 2008. Yo tengo los iPads 2 con iOS 5.1 y las aplicaciones que no puedo instalar porque requieren iOS 6.0 rondarán el 1%, y esto te lo digo sobre unas 1.800 aplicaciones instaladas entre los 2 iPads.

Eso sí, según mi experiencia con el 4S, no los subo a iOS 6 ni de coña, igual que no hubiera subido el 4 que andaba, a pesar de estar siempre a reventar, como la seda. Alguna vez lo recargué después de 48 horas con cerca de un 30% de batería. El 4S ahora mismo me ha gastado un 30% en 7 horas, y no estoy seguro de que el dato sea cierto, porque a veces después de tenerlo un rato descargando conectado por wifi, me pega saltos de más de un 10% en 5 minutos.

Mendiaco
Mendiaco
9 years ago

yules, para un iphone 3G, ya no se puden descargar aplicaciones desde el applestore, no hay compatibilidad. rondaran el 99,5% las incompatibles.
En cuanto a que sea el teléfono del 2008, que más da, lo que tienen que hacer es mantener las antiguas versiones, almenos. Y no hacer desaparecer todas las versiones. A mi un teléfono me dura 4 o 5 años, mínimo. Y lo menos que se le puede exigir, es que realize LAS MISMAS funciones que cuando lo compre y a la misma velocidad, y no me digais que pq he cambiado el sistema operativo del telefóno. Si lo he hecho pero debido a que si no no podia instalar las aplicaciones.

Yules
Yules
9 years ago

#¿Y qué piensas, que con un Android, un Symbian o un Windows Mobile de 2008 estarías mejor? Es que tú también partes de unos supuestos…

Yo en los últimos 10 años he tenido al uso 11 teléfonos: 6 Windows Mobile y 5 iPhone y, además de estos, los que no me gustaron y revendí sin llegar a usarlos a diario, como un HTC HD2, un Galaxy S2 y un Galaxy Note que tengo ahora mismo y que no sé si aguantaré una semana antes de despacharlo. Lo que no pretendo es que mi caso particular sea la norma colectiva.

haihao
haihao
9 years ago

Wow, ayer me compré online Samsung i9300 teléfono inteligente es perfecto! Express es a la fuerza. Al igual que los teléfonos Samsung. Corre rápido. Tiendas actitud es muy buena, y me imagino, para enviar una juerga, los colegas dicen que el precio es muy favorable. Actitud de servicio también es muy bueno, como un amigo, muy satisfecho! Muy recomendado:[url]http://url.ie/h2qo[/url]

15
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x