Kernel

El sistema operativo Android posee un kernel (núcleo) basado en el kernel version 3.x de Linux (las versiones anteriores a Android 4.0 usaban kernel 2.6), con middleware (drivers) y librerías escritas en lenguaje C que incluyen, por ejemplo, un administrador de la interfaz gráfica (surface manager), soporte para reproducción de recursos multimedia (multimedia framework), una base de datos relacional SQLite, librerías gráficas OpenGL y SGL, FreeType para renderizar texto en la pantalla, un motor de renderizado WebKit que funciona como base para navegadores web, SSL para comunicaciones seguras, y la librería estándar de C (libc).

Android-System-Architecture.svg

NDK

Los programadores de aplicaciones pueden desarrollar sus proyectos para Android en lenguaje C usando el NDK (Native Development Kit) de Android, que es una conjunto de herramientas que permiten desarrollar aplicaciones o partes de ellas usando los lenguajes nativos C y C++. El uso de NDK permite desarrollar aplicaciones algo más rápidas, aunque con una programación compleja. Generalmente no se usa esta herramienta, a no ser que se quieran desarrollar aplicaciones que requieran un uso muy intensivo de la CPU. Por ejemplo, procesamiento de señales, simulaciones físicas, etc. El NDK puede obtenerse de manera gratuita desde la dirección http://developer.android.com/tools/sdk/ndk/index.html.

SDK

Para facilitar el desarrollo de aplicaciones se dispone del SDK (Software Development Kit) que proporciona Google para Android. Esta herramienta permite el desarrollo de aplicaciones usando lenguaje de programación Java (basado en Apache Harmony), lo cual facilita el desarrollo de las mismas. Para ello ofrece una serie de librerías (Application Frameworks) con las clases Java necesarias para acceder a los servicios que ofrecen los dispositivos Android, además de las librerías estándar de Java (core libraries).

Para poder ejecutar las aplicaciones Java, cuyas instrucciones debes ser interpretadas al lenguaje nativo de Android, se utiliza una máquina virtual llamada Dalvik, que se encarga de la ejecución de las aplicaciones realizando esa traducción.

El SDK, además de las librerías de desarrollo, incluye una serie de herramientas que pueden ser de ayuda a la hora de crear aplicaciones Android. Por ejemplo incluye el Android Debug Bridge (ADB) que es una utilidad que nos permite comunicarnos con el dispositivo Android desde el PC, o el emulador (AVD - Android Virtual Devices) que permite probar nuestra aplicación desde el PC sin necesidad de hacerlo directamente en el dispositivo Android.

android avd18

En la página developer.android.com puedes descargar el SDK, leer tutoriales de ayuda y la referencia completa de las APIs.

AndroidReference

Entornos de desarrollo

Hasta 2013 la herramienta recomendada por Google para el desarrollo de aplicaciones Android ha sido el entorno de desarrollo Eclipse, que permite la programación con multitud de lenguajes y plataformas, junto con el plugin ADT (Android Development Tools) que proporciona Google para integrar el SDK de Android dentro de Eclipse. En este artículo puedes obtener información sobre su instalación.

Con el entorno de desarrollo NetBeans también es posible programar aplicaciones Android. Para ello hay que añadir el plugin NBAndroid, pero este no está creado por Google al contrario del caso anterior.

Desde Junio de 2013, Google ha puesto a disposición de los programadores la aplicación Android Studio (basado en IntelliJIDEA) para desarrollar aplicaciones exclusivamente para Android. Como las anteriores, es una herramienta totalmente gratuita. Los entornos de desarrollo anteriores requieren instalar de manera separada el entorno, el SDK de Android y el plugin correspondiente, mientras que Android Studio lo instala todo directamente, y posee las mismas características. Aprende a instalar Android Studio.

AndroidStudioLogo