IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Introducció

És un sistema operatiu basat en nucli Linux dissenyat per dispositius mòbils, desenvolupat per Google i la Open Handset Alliance. Inicialment va ser creat per la companyia Android Inc, primer suportada financiarament per Google i finalment comprada al 2005. Android es va presentar al 2007 conjuntament amb la Open Handset Alliance, un consorci d'empreses de maquinari, software i telecomunicacions.

Historia

Android, Inc. fa ser fundada a Palo Alto, California, Estats Units a l'octubre de 2003 per Andy Rubin (cofundador de Danger), Rich Miner (cofundador de Wildfire Communications), Nick Sears, i Chris White.

Google va adquirir Android el 17 d'agost de 2005 i la majoria de empleats claus de Android Inc es van mantenir a la empresa que pasava a dependre totalment de Google.


Arquitectura

Jordiromeroandroid01.png

Per començar amb el desenvolupament d'aplicacions en Android és important conèixer com està estructurat aquest sistema operatiu. D'això en diem arquitectura i en el cas d'Android està formada per diverses capes que faciliten al desenvolupador la creació d'aplicacions. A més, aquesta distribució permet accedir a les capes més baixes mitjançant l'ús de llibreries perquè així el desenvolupador no hagi de programar a baix nivell les funcionalitats necessàries perquè una aplicació faci ús dels components de maquinari dels telèfons.

Cadascuna de les capes utilitza elements de la capa inferior per realitzar les seves funcions, és per això que a aquest tipus d'arquitectura se la coneix també com a pila. Per entendre millor, a continuació cito el diagrama de l'arquitectura d'Android presa del lloc oficial d'Android developers:

Expliquem ara cadascuna de les capes iniciant de baix a dalt.

  • Kernel de Linux: El nucli del sistema operatiu Android està basat en el nucli de Linux versió 2.6, similar al que pot incloure qualsevol distribució de Linux, com Ubuntu, però adaptat a les característiques del maquinari en el qual s'executarà Android, és a dir , per a dispositius mòbils. El nucli actua com una capa d'abstracció entre el maquinari i la resta de les capes de l'arquitectura. El desenvolupador no accedeix directament a aquesta capa, sinó que ha d'utilitzar les llibreries disponibles en capes superiors. D'aquesta manera també ens evitem els mals de cap per conèixer les característiques precises de cada telèfon. Si necessitem fer ús de la càmera, el sistema operatiu s'encarrega de fer servir la que inclogui el telèfon, sigui quina sigui. Per a cada element de maquinari del telèfon hi ha un controlador (o driver) dins del nucli que permet utilitzar des del programari.

El nucli també s'encarrega de gestionar els diferents recursos del telèfon (energia, memòria, etc.) I del sistema operatiu en si: processos, elements de comunicació (networking), etc.

  • Llibreries: La següent capa que se situa just sobre el nucli la componen les biblioteques natives d'Android, també anomenades llibreries. Estan escrites en C o C++ i compilades per a l'arquitectura maquinari específica del telèfon. Aquestes normalment estan fetes pel fabricant, qui també s'encarrega d'instal·lar-les al dispositiu abans de posar-lo a la venda. L'objectiu de les llibreries és proporcionar funcionalitat a les aplicacions per a tasques que es repeteixen amb més freqüència, evitant haver de codificar cada vegada i garantint que es duen a terme de la manera "més eficient".

Entre les llibreries incloses habitualment trobem OpenGL (motor gràfic), Biblioteques multimèdia (formats d'àudio, imatge i vídeo), Webkit (navegador), SSL (xifrat de comunicacions), FreeType (fonts de text), SQLite (base de dades), entre d'altres.

  • Entorn d'execució: Com podem apreciar en el diagrama, l'entorn d'execució d'Android no es considera una capa en si mateix, atès que també està format per llibreries. Aquí trobem les llibreries amb la funcionalitats habituals de Java així com altres específiques d'Android. El component principal de l'entorn d'execució d'Android és la màquina virtual Dalvik. Les aplicacions es codifiquen en Java i són compilades en un format específic perquè aquesta màquina virtual les executi. L'avantatge d'això és que les aplicacions es compilen una única vegada i d'aquesta manera estaran llestes per distribuir-se amb la total garantia que podran executar-se en qualsevol dispositiu Android que disposi de la versió mínima del sistema operatiu que requereixi l'aplicació. Cal aclarir que Dalvik és una variació de la màquina virtual de Java, pel que no és compatible amb el bytecode Java. Java s'usa únicament com a llenguatge de programació, i els executables que es generen amb l'SDK d'Android tenen l'extensió. Dex que és específic per Dalvik, i per això no podem córrer aplicacions Java en Android ni viceversa.
  • Framework d'aplicacions: La següent capa està formada per totes les classes i serveis que utilitzen directament les aplicacions per realitzar les seves funcions . La majoria dels components d'aquesta capa són llibreries Java que accedeixen als recursos de les capes anteriors a través de la màquina virtual Dalvik . Seguint el diagrama trobem:
  • Activity Manager. S'encarrega d'administrar la pila d'activitats de la nostra aplicació així com el seu cicle de vida.
  • Window Manager. S'encarrega d'organitzar el que es mostrarà a la pantalla. Bàsicament crea les superfícies a la pantalla que posteriorment passaran a ser ocupades per les activitats.
  • Content Provider. Aquesta llibreria és molt interessant perquè crea una capa que encapsula les dades que es compartiran entre aplicacions per tenir control sobre com s'accedeix a la informació.
  • Views.En Android, les vistes dels elements que ens ajudaran a construir les interfícies d'usuari: botons, quadres de text, llistes i fins a elements més avançats com un navegador web o un visor de Google Maps.
  • Notification Manager. Engloba els serveis per notificar a l'usuari quan alguna cosa requereixi la seva atenció mostrant alertes a la barra d'estat. Una dada important és que aquesta biblioteca també permet jugar amb sons, activar el vibrador o utilitzar els LEDs del telèfon en cas de tenir-los.
  • Package Manager. Aquesta biblioteca permet obtenir informació sobre els paquets instal·lats al dispositiu Android, a més de gestionar la instal·lació de nous paquets. Amb paquet ens referim a la forma en què es distribueixen les aplicacions Android, aquests contenen el fitxer. Apk, que al seu torn inclouen els arxius. Dex amb tots els recursos i arxius addicionals que necessiti l'aplicació, per facilitar la seva descàrrega i instal·lació.
  • Telephony Manager. Amb aquesta llibreria podrem fer trucades o enviar i rebre SMS / MMS, encara que no permet reemplaçar o eliminar l'activitat que es mostra quan una trucada està en curs.
  • Resource Manager. Amb aquesta llibreria podrem gestionar tots els elements que formen part de l'aplicació i que estan fora del codi, és a dir, cadenes de text traduïdes a diferents idiomes, imatges, sons o layouts. En un post relacionat a l'estructura d'un projecte Android veurem això més a fons.
  • Location Manager. Permet determinar la posició geogràfica del dispositiu Android mitjançant GPS o xarxes disponibles i treballar amb mapes.
  • Sensor Manager. Ens permet manipular els elements de maquinari del telèfon com l'acceleròmetre, giroscopi, sensor de lluminositat, sensor de camp magnètic, brúixola, sensor de pressió, sensor de proximitat, sensor de temperatura, etc.
  • Càmera: Amb aquesta llibreria podem fer ús de la (s) càmera (s) del dispositiu per fer fotografies o per a gravar vídeo.
  • Multimedia. Permiteix reproduir i visualitzar àudio, vídeo i imatges al dispositiu.
  • Aplicacions. En l'última capa s'inclouen totes les aplicacions del dispositiu, tant les que tenen interfície d'usuari com les que no, les natives (programades en C o C++) i les administrades (programades en Java), les que vénen preinstal·lades al dispositiu i aquelles que l'usuari ha instal·lat. En aquesta capa hi trobem també l'aplicació principal del sistema: Inici (Home) o llançador (launcher), perquè és la que permet executar altres aplicacions mitjançant una llista i mostrant diferents escriptoris on es poden posar accessos directes a aplicacions o fins i tot widgets, que són també aplicacions d'aquesta capa.

Com podem veure, Android ens proporciona un entorn summament poderós perquè puguem programar aplicacions que facin qualsevol cosa. Res dins d'Android és inaccessible i podem jugar sempre amb les aplicacions del nostre telèfon per optimitzar qualsevol tasca. El potencial d'Android es situa en el control total que se li dóna a l'usuari perquè faci del seu telèfon un dispositiu a mida.

Android Versions

Comandes

  • lsusb

Provar les aplicacions al mòbil

Connecteu el vostre dispositiu mòbil. Abans cal configurar el mòbil de la següent manera. Aneu a:

Settings > Applications

Activeu:

Unknown sources

I també aneu a

Settings > Applications > Development 

I activeu:

USB debugging

Indiqueu que l'aplicació es depurable al manifest de l'aplicació. A Eclipse ho podeu fer a la pestanya

Application

Del fitxer manifest. Ara mirem si l'eina adb detecta el dispositiu:

$ cd
$ cd android-sdks/platform-tools
$ ./adb devices
List of devices attached 
emulator-5554	device
????????????	no permissions

Com podeu veure el detectat però no tenim permisos. Observeu el ID del fabricant (a l'exemple HTC):

$ lsusb
...
Bus 002 Device 006: ID 0bb4:0c86 High Tech Computer Corp. 

és el que utilitzarem per indicar els permisos a udev. Creeu el fitxer:

$ sudo nano /etc/udev/rules.d/51-android.rules

I afegiu:

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"

Ara executeu:

$ sudo chmod a+r /etc/udev/rules.d/51-android.rules

Desendolleu el USB del mòbil i torneu a connectar. Ara:

$ ./adb devices
List of devices attached 
emulator-5554	device
HT15NV811787	device

Enllaços Externs

http://developer.android.com/

http://www.openhandsetalliance.com/

Vegeu També

android

Desenvolupament Android