Está en la página 1de 26

Android Introduccin

Changelog Versin inicial

Version 0.0.1

Este curso diseado por Diego Ral Mercado (diego.mercado@black-tobacco.com) y Juan Alejandro Giannuzzo (juan.giannuzzo@black-tobacco.com) se encuentra bajo Licencia Creative Commons Atribucin-NoComercial-CompartirIgual 3.0 Unported.

Por qu Android?

Basada en Linux (kernel 2.6) Open-source Portabilidad Gran auge en el mercado Mltiples dispositivos

Por qu NO Android?

Java

cdigo interpretado manejo oscuro de memoria

Costo de portabilidad

Fundamentos

Aislacin (isolation) => + Seguridad


Cada proceso tiene su propia VM Cada aplicacin esta asociada a un nico user ID con sus permisos correspondientes (por defecto) Cada aplicacin se ejecuta sobre su propio proceso de Linux (por defecto) Principio de menor privilegio (least privilege)

Fundamentos
Capas del sistema

Fundamentos
Building process

Fundamentos
Building process

Tools

aapt aidl javac dx jarsigner zipalign

Fundamentos
Building process aapt

AAPT (Android Asset Packaging Tool) Compila los recursos y Genera el archivo R.java de acuerdo a la ubicacin y al tipo de recurso.

Fundamentos
Building process AIDL

AIDL (Android Interface Definition Language) Permite definir interfaces para comunicacin cliente-servidor de IPC (Inter-Process comunication). Similar a RMIIIOP o CORBA

Fundamentos
Building process Java Compler

Java Compiler Compila el codigo java (archivos .java, incluido R.java y las interfaces de aidl) en bytecode (archivos .class)

Fundamentos
Building process dex

Dex Tool Convierte los archivos .class generados y los archivos .class de cualqueir librera agregada en Dalvik byte code (archivos .dex)

Fundamentos
Building process apkBuilder

ApkBuilder Los recursos no compilados (como imagenes), los recursos compilados y los archivos de Dalvik Byte Code (.dex) son empaquetados en un archivo apk.

Fundamentos
Building process jar Signer

Jar Signer Se firma el apk con una clave de Debug o Release. Se genera un apk firmado

Fundamentos
Building process jar Signer

Zipalign Si el apk esta firmado para release, el zipalign optimiza el apk para tener un acceso mas rpido a su contenido generando un menor consumo de recursos de la aplicacin final.

Fundamentos
Componentes de una aplicacin

Componentes de una aplicacin


A) Actividades (Activities) B) Servicios (Services) C) Proveedores de contenido (Content providers) D) Receptores de difusin (Broadcast receivers)

Fundamentos
Componentes de una aplicacin

A) Actividades

Representa una sola pantalla con su UI Es una subclase de android.app.Activity Diferentes point-entry para otras aplicaciones

Fundamentos
Componentes de una aplicacin

B) Servicios

Es un componente ideado para ejecuciones de largo plazo en background (en otro hilo o thread) Es una subclase de android.app.Service

Fundamentos
Componentes de una aplicacin

C) Proveedores de contenido

Maneja un set de datos compartidos encapsulndolos Otras app pueden acceder a estos datos e inclusive modificarlos Es una subclase de
android.content.ContentProvider

Fundamentos
Componentes de una aplicacin

D) Receptores de difusin

Pueden ser generados por el sistema o por la aplicacin Responden como un sistema de notificaciones Es una subclase de
android.content.BroadcastReceiver.

Cada difusin (o broadcast) es propagado como una instancia de android.content.Intent

Fundamentos
El archivo Manifest.xml

El archivo manifest.xml sirve para:


Declarar los componentes de la aplicacin Identificar los premisos que necesita la aplicacin (acceso a internet, acceso a la camara de fotos, etc). Declara la version de SO minima requerida. Declarar el hardware necesario para correr la app. Y otras cosas mas...

Fundamentos
El archivo Manifest.xml

Ejemplo:

Fundamentos
API Levels

Niveles de API (API Levels)

Un nivel de API es un nmero entero que identifica la versin de Android. Consiste en


Clases y paquetes Conjunto de elementos y atributos XML (manifest, recursos) Conjunto de intents y permisos

Cada versin del dispositivo de Android soporta una sola

Platform Version Android 4.0.3 Android 4.0, 4.0.1, 4.0.2 Android 3.2 Android 3.1.x Android 3.0.x Android 2.3.4Android 2.3.3 Android 2.3.2Android 2.3.1Android 2.3 Android 2.2.x Android 2.1.x Android 2.0.1 Android 2.0 Android 1.6 Android 1.5 Android 1.1 Android 1.0

API Level 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

Version Code ICE_CREAM_SANDWICH_MR1 ICE_CREAM_SANDWICH HONEYCOMB_MR2 HONEYCOMB_MR1 HONEYCOMB GINGERBREAD_MR1 GINGERBREAD FROYO ECLAIR_MR1 ECLAIR_0_1 ECLAIR DONUT CUPCAKE BASE_1_1 BASE

Fundamentos
API Levels

Es importante destactar que la API intenta en todo momento ser compatible hacia atrs (backward compatible)

Es aditiva con la nueva funcionalidad La funcionalidad que no se recomienda emplear se seala (@deprecated) pero sigue manteniendo Rara vez elimina / modifica algo existente

Bibliografa

http://developer.android.com/guide/developing/index.html

Hello, Android: Introducing Google's Mobile Development Platform (Pragmatic Programmers) - 2nd Edition - Ed Burnette