Android

Pues ya he hecho mi primera aplicación en Android.

Y mi impresión final es:

¿OTRA VEZ?

¿OTRA VEZ?

A pesar del tiempo que lleva Android por aquí, no había programado nada por varias razones. Una de ellas, que era insufrible intentar ejecutar ese entorno de desarrollo. Mi ordenador era demasiado viejo. Y ahora que lo he renovado, me decidí a practicar un poco. Nada del otro mundo; una libreta de contactos corporativa. Una aplicación muy sencilla, que llama a un servicio web que le devuelve los contactos. La aplicación los presenta y permite buscar o llamar. Supongo que hay miles. Una sola pantalla, y además cedí a presentar la información componiendo HTML, que suele ser lo que me resulta más fácil. Además, esto ya lleva unos años por aquí, ya ha avanzado mucho, así que las herramientas tienen que ser ya muy utilizables, me dije.

Y viví el día de la marmota.

Primero: cuando vas a instalar Eclipse, resulta que ya no mola, que ya no le dan soporte y tiene que ser el Android Studio. No es que esté mal, pero está basado en IntelliJ y es un poco diferente y hay que adaptarse. Bueno, no pasa nada.

Hay que instalarse 1 GB de herramientas para empezar… y de ahí ir subiendo. No hablamos de modelado 3D; creo que nunca he usado una herramienta de desarrollo que ocupase tanto para un chisme tan pequeño y que hace tan pocas cosas. Pero bueno, no pasa nada.

La documentación es bastante mejorable. Tienes que andar adivinando. No hay hojas de ruta decentes para iniciarse, no hay una explicación de conceptos que te permita, a partir de ahí, orientarte. Te vas encontrando las cosas una por una, deslavazadas y sin previo aviso. Bueno, no pasa nada.

Quien desarrolló este sistema de programación decidió reinventar todas las ruedas posibles. Ya no son pantallas, ni diálogos; ahora son actividades. Por alguna razón, toda la historia del desarrollo de interfaces de usuario ya no vale, aunque esto no deje de ser un ordenador con una pantalla (pequeña) y un sistema operativo mucho más sencillo que los de escritorio. Además, hay un batiburrillo, un caos, sorprendente. Una appbar no es lo mismo que una toolbar, y una de las dos está obsoleta, o quizás no. Todo así. Pero bueno, no pasa nada.

Cuando empecé a programar aplicaciones nativas en Windows, vi que era extremadamente complejo, pero se entendía por qué; aquello eran palabras mayores. Ventanas, multitarea, asincronía. Cualquiera que, viniendo de la programación clásica en Pascal o C o COBOL o BASIC, leyera el Programming Windows, de Charles Petzold, que era la biblia del asunto (prácticamente la única fuente; recordemos, Internet no estaba en las casas ni en las empresas), se encontraba con bucles de mensajes (¿qué coño era aquello?), mensajes entre ventanas, hilos (sin tener realmente hilos), montones de tipos de datos, miles de constantes, prefijos para poder aclararse con los nombres de las variables… El Hola, mundo de Windows requería un montón de estudio y mucho código. Pero era comprensible; eras un pionero desarrollando algo como no se había visto antes.

De aquello han pasado casi treinta años (¡en informática!) Hace muchísimo que llegaron los objetos, lenguajes de programación nuevos, editores sensibles a la sintaxis (sí, amigos; no siempre han estado ahí), herramientas increíbles. Estamos en otro siglo, y eso en informática es mucho decir.

Sin embargo, una mierda de aplicación en Android vuelve a requerir el despliegue de una fontanería impresionante. Tienes que enlazar unos identificadores con otros, editar aquí y allá, crear una clase y otra y otra. Vuelves a emplear tu mente, tu tiempo y tu esfuerzo en aprender montones de cosas inútiles, no en desarrollar tu puta aplicación. En lo que se refiere a desarrollo, estamos como en los ochenta; tienes que volver a empezar, como si trabajaras en ensamblador. U enorme porcentaje de tiempo dedicado a cosas totalmente irrelevantes e improductivas.

Y no me lo podía creer. ¿Otra vez? ¿OTRA VEZ? ¿¡OTRA VEZ!?

Una aplicación en Android es… una aplicación de ventanas, con una sola ventana en pantalla, y en vez de en un ordenador estás en un teléfono, que es un ordenador con ciertos periféricos. Todo eso está inventado hace décadas. Hay una enorme experiencia acumulada. ¿Por qué se empieza desde cero otra vez?

Pero eso no es todo.

En Windows, Microsoft hacía verdaderos encajes de bolillos para manejar la compatibilidad entre versiones, y con hardware terriblemente variable. Aun así, todos vivimos el infierno de las DLL. Por suerte, se sacaron enseñanzas de aquello, y hoy en día ya apenas ocurre.

Entonces llega Android, y… es un absoluto desastre. Las aplicaciones funcionan, como funcionan, cuando funcionan (la mía, una sola ventana -perdón, activity– cutre, casca cuando pones el teléfono horizontal), pero reza si cambias de versión de Android. A cada nueva versión, toman decisiones drásticas, que no sé por qué no se plantearon en un principio, y tu aplicación deja de funcionar. En mi caso, la aplicación, además de poder llamar, identifica las llamadas (con un enfoque muy poco intrusivo) y también permite saber de quién es el teléfono que tienes entre manos (para autentificarlo contra tu servidor sin tener que pedirle nombre de usuario, por ejemplo).

Bueno, pues en Android 6 ya no funciona ninguna de las dos cosas. En Android 4, al instalar la aplicación decides darle permisos o no, y ya está. En Android 6 cambian algo tan fundamental como eso; ahora, al parecer, hay que dar permisos a la aplicación en tiempo de ejecución. ¿De verdad que algo tan fundamental como el esquema de permisos se está improvisando de esta manera? Hablamos de la versión 4.4.4, no de la 1.0. Por cierto, todas las aplicaciones release de Android tienen que ir firmadas. ¿No pueden establecer un sistema de confianza para los certificados, y que si el usuario sabe quién eres y se fía de ti, el sistema operativo te deje trabajar en paz? ¿De verdad que no pudieron pensar todo esto el primer día?

Pero bueno, no pasa nada. Si la rueda la reinventa Google, está todo bien aunque sea una chapuza miserable.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: