Desarrollo de programas para Android

De Wikipedia, la enciclopedia libre
Esta es una versión antigua de esta página, editada a las 13:24 12 sep 2014 por 85.219.42.154 (discusión). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.
Galaxy Nexus, teléfono recomendado por el Android Open Source Project para desarrollar programas[1]​ parte de la serie Google Nexus, una línea de "developer-friendly" phones.

Desarrollo de Programas para Android se hace habitualmente con el lenguaje de programación Java y el conjunto de herramientas de desarrollo ( SDK, Software Development Kit ), pero hay otras opciones disponibles. En abril del 2011 existían más de 200.000 aplicaciones contabilizadas para Android, con unos 3 millardos de descargas.[2][3]​ La plataforma Android ha crecido hasta ser una de las preferidas por los desarrolladores para plataformas móviles. Un estudio de junio del 2011 indica que el 67 % de los desarrolladores para móviles utilizaban la plataforma en el momento de la publicación del estudio. [4]

Herramientas para Desarrollo de Software

Android SDK

El SDK (Software Development Kit) de Android, incluye un conjunto de herramientas de desarrollo.[5]​ Comprende un depurador de código, biblioteca, un simulador de teléfono basado en QEMU, documentación, ejemplos de código y tutoriales. Las plataformas de desarrollo soportadas incluyen Linux (cualquier distribución moderna), Mac OS X 10.4.9 o posterior, y Windows XP o posterior. La plataforma integral de desarrollo (IDE, Integrated Development Environment) soportada oficialmente es Eclipse junto con el complemento ADT ( Android Development Tools plugin), aunque también puede utilizarse un editor de texto para escribir ficheros Java y XML y utilizar comandos en un terminal (se necesitan los paquetes JDK, Java Development Kit y Apache Ant) para crear y depurar aplicaciones. Además, pueden controlarse dispositivos Android que estén conectados (es decir, reiniciarlos, instalar aplicaciones en remoto, etc.).

Las Actualizaciones del SDK están coordinadas con el desarrollo general de Android. El SDK soporta también versiones antiguas de Android, por si los programadores necesitan instalar aplicaciones en dispositivos ya obsoletos o más antiguos. Las herramientas de desarrollo son componentes descargables, de modo que una vez instalada la última versión, pueden instalarse versiones anteriores y hacer pruebas de compatibilidad.

Una aplicación Android está compuesta por un conjunto de ficheros empaquetados en formato .apk y guardada en el directorio /data/app del sistema operativo Android (este directorio necesita permisos de superusuario, root, por razones de seguridad). Un paquete APK incluye ficheros .dex (ejecutables Dalvik, un código intermedio compilado), recursos, etc.

Native Development Kit. Desarrollo Nativo

El NDK permite instalar bibliotecas escritas en C y otros lenguajes, una vez compiladas para ARM o código x86 nativo. Los programas Java corriendo en la máquina virtual Dalvik ( Dalvik VM ) pueden llamar a clases nativas por medio de la función System.loadLibrary, que forma parte de las clases estándar Java en Android.

Se pueden compilar e instalar aplicaciones completas utilizando las herramientas de desarrollo habituales. El depurador ADB proporciona un shell root en el Simulador de Android que permite cargar y ejecutar código nativo ARM o x86. Este código puede compilarse con GCC en un ordenador normal. La ejecución de código nativo es difícil porque Android utiliza una biblioteca de C propia (libc, llamada Bionic). Se accede al dispositivo gráfico como un framebuffer disponible en /dev/graphics/fb0. La biblioteca gráfica que utiliza Android para controlar el acceso a este dispositivo se llama Skia Graphics Library (SGL), disponible con licencia de código abierto. Skia tiene implementaciones en win32 y Unix, permitiendo el desarrollo cruzado de aplicaciones, y es el motor de gráficos que soporta al navegador web Google Chrome.

Android Open Accessory Development Kit

La plataforma de Android 3.1 ( portado también a Android 2.3.4 ) introduce soporte para Android Open Accesory, que permite interactuar a dipositivos USB externos ( accesorios USB Android ) interactuar con el dispositivo en un modo especial llamado "accessory". Cuando un dispositivo Android está en modo "accessory" el dispositivo externo actúa como hub usb ( proporciona alimentación y ennumera los dispositivos ) y el dispositivo Android actúa como dispositivo USB. Los accesorios Android USB están diseñados específicamente para conectarse a dispositivos Android y utilizan un protocolo simple ( Android accessory protocol ) que les permite detectar dispositivos Android que soportan modo "accessory".

App Inventor para Android

Google anunció en julio de 2010 la disponibilidad de App Inventor para Android, que es un entorno de desarrollo visual Web, para programadores noveles, basado en la biblioteca Open Blocks Java, del MIT. Este entorno proporciona acceso a funciones GPS, acelerómetro y datos de orientación, funciones de teléfono, mensajes de texto, conversión habla a texto, datos de contacto, almacenamiento permanente, y servicios Web, incluyendo inicialmente Amazon y Twitter. Hal Abelson, director de proyecto en el MIT, dijo: "Sólo hemos podido hacerlo porque la arquitectura Android es tan abierta". Después de un año de desarrollo, la herramienta de edición de bloques se ha utilizado para enseñanza a principiantes en ciencias de computación en Harvard, MIT, Wellesley, y en la Universidad de San Francisco, donde el profesor David Wolber, desarrolló un curso de introducción a la ciencia de los ordenadores y un libro de enseñanza para estudiantes que no estudian computación, basado en App Inventor para Android.

HyperNext Android Creator

HyperNext Android Creator (HAC) es un sistema de desarrollo de programas dirigido a programadores que empiezan, permitiéndoles crear sus propias aplicaciones sin necesitar conocimientos de Java y del SDK de Android. Está basado en HyperCard, que gestiona el software como una pila de tarjetas en la que sólo una de ellas es visible en un momento dado y por tanto encaja bien en aplicaciones para teléfonos móviles, con una sola ventana disponible a la vez. El lenguaje principal de desallollo se llama simplemente HyperNext y está relacionado con el lenguaje de HyperCards HyperTalk. HyperNext es un intérprete de un lenguaje similar al Inglés y tiene muchas funciones para crear aplicaciones Android. Soporta un subconjunto creciente del SDK de Android incluyendo sus propias vesiones de controles gráficos de interfaz de usuario ( GUIs ) y ejecuta autómaticamente su propio servicio, de forma que las aplicaciones pueden continuar ejecutándose y procesando información, sin estar en el frontal del usuario.

El proyecto Simple

El objetivo de Simple es ser un lenguaje fácil de aprender para la plataforma Android. Simple es un dialecto de BASIC para Android. Sirve tanto para programadores profesionales como aficionados permitiendo escribir rápidamente aplicaciones que utilizan los componentes de Android.

Parecido a Visual Basic 6 de Microsoft, los programas Simple consisten en definiciones de formularios ( que contienen componentes ) y código ( con la lógica del programa ). La interacción entre ellos se hace por médio de eventos lanzados por los componentes. La lógica del programa consiste en gestores de eventos, que ejecutan código dependiendo del evento.

El proyecto Simple no tiene mucha actividad. La última actualización de código se realizó en agosto de 2009. Existe un producto comercial parecido llamado Basic4android, inspirado en Visual Basic 6 y Microsoft Visual Studio. Este proyecto si tiene actividad y hay una comunidad sólida de programadores.

Appcelerator Titanium

Appcelerator Titanium es una plataforma para desarrollar aplicaciones móviles y de escritorio utilizando tecnologías web. Appcelerator Titanium está desarrollado por Appcelerator Inc. y fue lanzado en diciembre del 2008. En junio de 2009 se añadió soporte para el desarrollo de aplicaciones móviles para Android e iPhone

Appcelerator Titanium utiliza el entorno de programación Eclipse y está basado en JavaScript

Es gratuito, aunque requiere registro. Dada su gratuidad, sus amplias posibilidades por abarcar varias plataformas con un mismo código de programación y la sencillez del lenguaje JavaScript, está ganando en popularidad entre los programadores.

Existen muchos vídeos en Youtube en los que se enseñan los primeros pasos en este entorno de programación.

El Concurso de Desarrollo Android

El Concurso de Desarrollo Android (ADC Android Developer Challenge ) fue una competición a la aplicación más innovadora para Android. Google ofreció premios por valor de 10 millones de dólares, distribuidos en dos fases ADC 1 y ADC 2. ADC 1 aceptaba subscripciones entre el 2 de enero y el 14 de abril de 2008. Las 50 aplicaciones más prometedoras, seleccionadas el 12 de mayo del 2008, recibieron 25.000 dólares para soporte a su desarrollo. A principios de septiembre diez equipos recibieron 275.000 dólares, y otros diez, 100.000 dólares. ADC II empezó el 27 de mayo de 2009. La primera ronda concluyó el 6 de octubre. Los ganadores, 200 aplicaciones, se publicaron el 5 de noviembre. La votación de la segunda ronda empezó ese mismo día y acabó el 25 de noviembre. Google publicó los ganadores el 30, con SweetDreams, What the Doodle!? y WaveSecure como los ganadores totales del concurso...

Firmware de Comunidad

Hay una comunidad de apoyo al código abierto que construye y comparte firmware basado en Android con modificaciones y funciones adicionales, por ejemplo, soporte para audio FLAC y la capacidad de guardar aplicaciones en la tarjeta microSD. Normalmente, esto implica acceso como superusuario al dispositivo ("rooting"). "Rooting" permite al superusuario acceder al sistema operativo con un control completo del teléfono. Para utilizar firmwares modificados hay que desbloquear el cargador de arranque del dispositivo. Solamente hacer "rooting" no permite grabar un firmware propio. Los firmwares modificados permiten la utilización de teléfonos antiguos con aplicaciones disponibles en dispositivos recientes.

Los paquetes de firmware se actualizan con frecuencia, incorporan funciones a Android que no se distribuyen oficialmente dentro del firmware autorizado por un operador, y suelen tener menos limitaciones. Como ejemplo están CyanogenMod y OMFGB.

El 24 de septiembre de 2009, Google envió una carta solicitando el cese de estas actividades a Cyanogen, mencionando problemas con la redistribución de aplicaciones Google con código cerrado en el firmware modificado. Aunque la mayor parte del S.O. Android es código abierto, los teléfonos incorporan código propietario de Google para aplicaciones como Android Market y navegación GPS. Google ha declarado que estas aplicaciones sólo pueden distribuirse a través de canales de distribución aprobados con su correspondiente licencia. Cyanogen ha cumplido los deseos de Google y continúa distribuyendo sus modificaciones sin código propietario, proporcionando un método para copiar las aplicaciones con licencia Google durante la instalación y recuperarlas al finalizar la misma.

Estándares de Java

Android no utiliza los estándares establecidos de Java, i.e. Java SE y ME, lo cual es un problema para el desarrollo. Esto impide la compatibilidad entre aplicaciones Java escritas para otras plataformas. Android sólo utiliza la sintáxis y la semántica de Java, pero no incorpora en su totalidad las bibliotecas de clases de Java y APIs ( Application Programming Interface ) que acompañan a Java SE o ME. Sin embargo, hay diversas herramientas en el mercado de empresas como Myriad Group y UpOnTek que dan un servicio de conversión entre J2ME y Android.

Fragmentación

Los desarrolladores informaron de la dificultad de mantener aplicaciones para versiones diferentes de Android, debido a problemas de compatibilidad entre la versión 1.5 y 1.6, especialmente, por diferencias de resolución entre los distintos teléfonos Android.

Estos problemas se hicieron latentes durante el concurso ADC2. Posteriormente, el rápido aumento de modelos de teléfono basados en Android con diferentes capacidades de hardware complicaban el desarrollo de aplicaciones para todos lo modelos de teléfonos Android.

Sin embargo, la situación parece haber mejorado. Google informó en Julio de 2011 que el 95% de los teléfonos android en servicio eran variantes de la plataforma 2.1 o más recientes. Aproximadamente el 60% eran versiones 2.2 o más recientes. Un año antes, Google informó que el 83% de los teléfonos utilizaban, las versiones 2.x, las actuales en ese momento, con un 17% todavía con 1.5 y 1.6. Además, las versiones de Android para tabletas y teléfonos se han unificado en la plataforma 4.0.

Historia

Uno de los primeros dispositivos con el sistema Android.

La Open Handset Alliance, liderada por Google, es la creadora de Android. Los primeros informes de desarrollo de aplicaciones para la plataforma Android eran confusos. Entre los temas expuestos se incluían errores, falta de documentación, infraestructura de control de calidad inadecuada, inexistencia de un sistema de seguimiento de problemas (Google anunció un sistema de seguimiento de incidencias el 18 de enero de 2008). En diciembre del 2007, Adam MacBeth, fundador de MergeLab mobile, expresó "No hay funcionalidad, está mal documentada o no funciona... desde luego no está lista para el lanzamiento". A pesar de todo, las aplicaciones dirigidas a Android empezaron a la semana siguiente de su aparición. La primera aplicación publicada fue el juego de la serpiente. El Teléfono de Desarrollo Android es un dispositivo con el SIM y el hardware desbloqueados, orientado a desarrolladores avanzados. Así como pueden usarse dispositivos de consumo normales para probar y utilizar aplicaciones, algunos programadores prefieren dispositivos desbloqueados y sin contrato.

El 12 de noviembre de 2007 se lanzó una versión de prueba de Android SDK. El 15 de julio de 2008, El equipo del Concurso de Desarrollo Android envió accidentalmente un correo electrónico a todos los participantes anunciando una nueva versión de SDK en el área restringida de descargas. El correo debía dirigirse únicamente a los ganadores de la primera ronda. El hecho de que Google proporcionara una nueva versión de SDK a unos desarrolladores y no a otros, mediante un acuerdo privado, originó un gran descontento en la comunidad de desarrolladores de Android.

El 19 de agosto apareció la versión Beta de Android 0.9 SDK. Proporcionaba una API mejorada extendida, mejoras en las herramientas y un diseño actualizado de la pantalla principal. Hay instrucciones detalladas de actualización para aquellos que todavía utilicen versiones anteriores. Android 1.0 SDK ( versión 1) aparece el 23 de septiembre del 2008. Según las notas de la versión, incluía fundamentalmente correcciones de errores, aunque incorporaba pequeñas novedades. Incluso incluía varios cambios en el API sobre la versión 0.9. Desde esa fecha, se han distribuido múltiples versiones.

Referencias

  1. http://source.android.com/source/building-devices.html
  2. «Android App Stats». Consultado el 31 December 2010. 
  3. Leena Rao (14 April 2011). «Google: 3 Billion Android Apps Installed; Downloads Up 50 Percent From Last Quarter». Techcrunch. Consultado el 13 de mayo de 2011. 
  4. «Developer Economics 2011». 
  5. «Tools Overview». Android Developers. 21 de julio de 2009. 

Bibliografía

Enlaces externos