Sunteți pe pagina 1din 17

Desarrollo de aplicaciones

para Android
2: La arquitectura: los limites y las posibilidades

Eugenio Jacobo Hernández Valdelamar


Diciembre, 2010.
Contenido
● ¿Qué puedo hacer con Android?
● La arquitectura de Android
● En la base Linux
– Plataformas de aplicaciones
● Librerías y runtime Android
● Framework de aplicaciones
● Aplicaciones
● Armando el rompecabezas: una aplicación
Introducción
● Todas las plataformas de programación permiten hacer al menos
un Hola Mundo, pero por lo general, queremos estas
herramientas para hacer mucho más.
● En mi experiencia, los factores que dictan hasta dónde se puede
llegar son:
● Dispositivo. No será lo mismo una PDA que solo sirve de agenda, que
otra con conectividad a Internet, sensores, etc.
● Sistema operativo. Todo lo que necesitemos hay que solicitarlo al SO,
así que hay que saber qué puede darnos y cómo pedírselo.
● Lenguaje de programación. Dicta cómo le indicaremos al dispositivo
qué hacer. Si el lenguaje permite fluidez en las expresiones, mejor.
● Framework/SDK/APIs. Siempre hay diferencia entre hacer algo desde
cero a consumir algo ya hecho. Para conectarse a Internet, no será
muy práctico empezar por implementar el protocolo http.
¿Qué puedo hacer con el nuevo
juguete?
● Conocer la arquitectura de la plataforma es esencial para:
● Evaluar el alcance, las formas de uso, funcionalidad, seguridad,
rendimiento, mantenimiento, extensibilidad, etc.
● Saber cómo está organizado el sistema y cuáles son sus partes
● Saber qué podemos hacer y qué no (áreas de oportunidad)
● Calcular el esfuerzo que nos puede llevar el desarrollo de algo en
la plataforma


La foto oficial de la arquitectura
La base: un kernel Linux
● Android depende de un Linux versión 2.6.x
para los servicios base del sistema como
seguridad, gestión de memoria, gestión de
procesos, stack de red y modelo de drivers.
● El núcleo se encarga de todo lo relativo al
hardware, como la administración de energía y
los drivers para el hardware del dispositivo.
● El núcleo actúa como una capa de abstracción
entre el hardware y el resto del stack de
software.
Desarrollo sobre la plataforma base vs
plataforma de aplicaciones (middleware)

Si los dispositivos solo tuvieran el SO,


para desarrollar habría que codificar en C,
y tener un amplio conocimiento a bajo
nivel para acceder a las funcionalidades
de red, el acceso a periféricos, rehacer
UIs, etc.

Para disminuir esos tiempos es que se


requiere el soporte de una capa que
permita acceder y consumir todas las
funcionalidades del dispositivo, sin tener
que conocer detalles de bajo nivel.

Este espacio está siendo llenado por


diversas ofertas, lo cual es muy sano para
las diversas comunidades de
desarrolladores.
Linux en dispositivos móviles:
“en hombros de gigantes”

Uniting Mobile Linux Application Platforms. 2008.


Bill Weinberg, LinuxPundit.com
Ahí viene .Net: Monodroid

http://monodroid.net/Documentation/Architecture

La propuesta primaria de plataforma para desarrollo de aplicaciones en Android está basada en un


runtime para Java montado sobre el kernel.

Los desarrolladores .Net se beneficiaran de una plataforma para desarrollo de aplicaciones que
tendrá el runtime Mono.

Seguramente aparecerán más plataformas con esta misma arquitectura.

De última hora (mayo 2011): “alguien” compró Novell y el futuro de Mono es incierto.
Un ambiente Monodroid
Monodroid plug-in
para VS 2010

Android SDK
Visual Studio 2010 (standard o +)
VS 2008??
http://cup-coffe.blogspot.com/2010/09/cuando-me-entere-del-comienzo-de-un.html
http://weblogs.asp.net/chrishardy/archive/2010/08/21/develop-with-c_2D00_sharp-on-the-android-sure-
introducing-monodroid.aspx
En los hombros del kernel: librerías
y una máquina virtual
● En el siguiente nivel se encuentran las
librerías del Android SDK, las librerías
Java básico y el runtime de ejecución
Android, que se basa en la Dalvick
Virtual Machine (DVM).

● En Android, todos los procesos se


ejecutan en una máquina virtual
independiente, de modo que, ningún
proceso puede interferir el otro, este
trabajo se realiza a través de DVM.
Librerías Android
● Android incluye un set de librerías C/C++ usadas por
varios componentes del sistema Android. Éstas
capacidades se exponen a los desarrolladores a través
del framework de aplicaciones de Android.
● Algunas son: System C library (implementación librería
C standard), librerías de medios, librerías de gráficos,
3d, SQLite, entre otras.
● Se puede decir que las librerías son conjuntos de
instrucciones que le dicen al dispositivo como lidiar con
distintos tipos de datos (p.ej. La librería media permite
manejar diversos formatos de audio y video).
El framework de aplicaciones
● Esta capa provee bloques de construcción de
alto nivel que permiten crear nuevas
aplicaciones
● El framework de aplicación incluye programas
para administrar el funcionamiento básico del
teléfono, switcheo entre procesos o programas,
etc.
● Componentes:
● Activity manager
● Content providers
Aplicaciones y widgets
● En esta capa están las aplicaciones que vienen
con Android o las que desarrollemos.
● Aplicaciones: cubren toda la pantalla e
interactuan con el usuario.
● Widgets: operan en el área rectangular de la
aplicación Home.
Comentarios finales
● Hasta este punto no he tenido el tiempo para
dedicarme a prototipar y empaparme de la
experiencia de desarrollo.
● Sin embargo, el tsunami de dispositivos
Android es un hecho, por lo que hay que
plantear la mejor forma de hacer desarrollo en
esta plataforma.

Referencias
● http://developer.android.com/guide/basics/what-is-android.html
● http://electronics.howstuffworks.com/google-phone2.htm
● http://benno.id.au/blog/2007/11/13/android-under-the-hood
● http://technbiz.blogspot.com/2009/05/android-architecture.html
● Android Architecture Tutorial: Developing an App with a Background Service (using
IPC)
http://mindtherobot.com/blog/37/android-architecture-tutorial-developing-an-app-with-a-b
● OpenGL ES architecture on Android
http://blog.graphtech.co.il/opengl-es-architecture-on-android/
● Android GUI Architecture http://androidapps.org.ua/i_sect13_d1e11121.html
● Android Application Development, 1st Edition http://androidapps.org.ua/
● Inside the Android Application Framework
http://sites.google.com/site/io/inside-the-android-application-framework
● What is sw architecture? http://msdn.microsoft.com/en-us/library/ee658098.aspx
● Common Tasks and How to Do Them in
Android
http://developer.android.com/guide/appendix/faq/co
● Introduction to Android development :
TouchCalculator
http://www.codeproject.com/KB/android/androidcalc

S-ar putea să vă placă și