Android és un conjunt de programari per a telèfons mòbil que inclou un sistema operatiu, programari intermediari i aplicacions. Google Inc. va comprar el desenvolupador inicial del programari, Android Inc., el 2005. El sistema operatiu per a mòbils d'Android es basa en una versió modificada del nucli Linux. Google i altres membres de la Open Handset Alliance van col·laborar en el desenvolupament i llançament de l'Android. L'Android Open Source Project (AOSP) té l'objectiu de mantenir i continuar desenvolupant l'Android. Google va llançar gran part del codi de l'Android sota la Llicència Apache, una llicència de programari lliure oberta.
Vegeu també Android_i_seguretat#Arquitectura_de_seguretat
*Libc: la llibreria de android. Conte el basic de funcionament de C, per a començar a treballar. *Webkit: Es un navegador, URLs, processament de URLs, descarga de URLs... *Ssl: Xifratge i criptografia. *Sqlite: Es la base de dades estàndard. Utilitza l'open office. *Freetyme: Gestio de fonts. *Media frame: Gestor del contingut multimèdia vídeo, imatge, sons... *OpenGl: Gestió dels gràfics. *Surface manager: Gràfics 3D per a jocs
El nucli actua com una capa d'abstracció entre el hardware y la resta de capes. No pot accedir directament a esta capa, si no que te que utilitzar les llibreries disponible en capes superiors. Per a cada element del hardware del telefon existeix un controlador o "driver" dins del kernel que permet utilitzar-ho des de el software.
A nivell de sistema operatiu Android proveïx de segurat mitjançant el Kernel Linux i una comunicació segura entre processos de forma que es puguin intercomunicar si és necessari però que en tot cas mai un procés pugui afectar el rendiment d'un altre procés.
Inclús el codi nadiu o codi propi del sistema s'executa en una Application Sandbox. El sanbox és un entorn controlat en el que s'executa un procés de forma que qualsevol vulnerabilitat o eplotació i·licíta del procés no afecti a la resta de processos.
IMPORTANT: The system would prevent the rogue application from harming other applications, the Android system, or the device itself
The foundation of the Android platform is the Linux kernel. The Linux kernel itself has been in widespread use for years, and is used in millions of security- sensitive environments. Through its history of constantly being researched, attacked, and fixed by thousands of developers, Linux has become a stable and secure kernel trusted by many corporations and security professionals.
El nucli de Linux proveïx les següents característiques de seguretat:
En un sistema operatiu multiusuari és important la isolació dels recursos d'usuari. La idea es protegir els usuaris els uns dels altres per tal de:
Prevenir que l'usuari A tingui accés als fitxers de l'usuari B Assegurar que l'usuari A no s'acaba la memòria de l'usuari B ni altres recursos com la CPU Assegurar que l'usuari A no monopolitza l'ús de dispositius (telèfon, GPS Bluetooth)
Android assigna un unique user ID (UID) a cada aplicació Android i l'executa com si fos d'aquest usuari en un procés separat.
IMPORTANT: Vegeu la important diferència amb altres sistemes operatius. Android no és multisuari amb la idea típica d'usuari! Cada procés és executat per un usuari diferent
Això és el que s'anomena un
kernel-level Application Sandbox
El nucli força la seguretat entre aplicacions a nivell de sistema utilitzant els recursos típics de Linux (com els usuaris i grups de linux i els permisos)
IMPORTANT: Per defecte les aplicacions no poden interactuar entre sí i tenen un accés molt limitat al sistema operatiu.
If application A tries to do something malicious like read application B's data or dial the phone without permission (which is a separate application), then the operating system protects against this because application A does not have the appropriate user privileges. The sandbox is simple, auditable, and based on decades-old UNIX-style user separation of processes and file permissions.
Cal tenir en compte que aquest model no només s'aplica a les aplicacions d'usuari sinó a les aplicacions natives del SO Android. Tot el software que està per sobre del kernel està sota aquestes restriccions (p.ex. operating system libraries, application framework, application runtime...)
NOTA: native code is just as secure as interpreted code.
TODO
In some operating systems, memory corruption errors generally lead to completely compromising the security of the device. This is not the case in Android due to all applications and their resources being sandboxed at the OS level. A memory corruption error will only allow arbitrary code execution in the context of that particular application, with the permissions established by the operating system.
Like all security features, the Application Sandbox is not unbreakable. However, to break out of the Application Sandbox in a properly configured device, one must compromise the security of the the Linux kernel.
Esta situada damunt del kernel i està formada per les biblioteques natives de android. Estan escrites en C o C++. Aquestes normalment estan fetes pel fabricant, qui també s'encarrega d'instal·lar-les en el dispositiu abans de posar-ho a la venda. L'objectiu de les llibreries és proporcionar funcionalitat a les aplicacions per a tasques que es repeteixen amb freqüència, evitant haver de codificar-les cada vegada i garantint que es duen a terme de la forma “més eficient”.
Entre les llibreries incloses habitualment trobem OpenGL (motor gràfic), Biblioteques multimèdia (formats d'àudio, imatge i video), Webkit (navegador), SSL (xifrat de comunicacions), FreeType (fonts de text), SQLite (base de dades), entre unes altres.
Com podem apreciar en el diagrama, l'entorn d'execució de 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 de Android. El component principal de l'entorn d'execució de 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 forma 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, per la qual cosa no és compatible amb el bytecode Java. Java s'usa únicament com a llenguatge de programació, i els executables que es generen amb el SDK de 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:
En l'última capa s'inclouen totes les aplicacions del dispositiu, tant les que tenen interfície d'usuari com les quals no, les nadives (programades en C o C++) i les administrades (programades en Java), les que vénen preinstaladas en el dispositiu i aquelles que l'usuari ha instal·lat. En aquesta capa 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 col·locar accessos directes a aplicacions o fins i tot ginys, 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. Gens dins de Android és inaccessible i podem jugar sempre amb les aplicacions del nostre telèfon per optimitzar qualsevol tasca.
El potencial de Android se situa en el control total que se li dóna a l'usuari perquè faci del seu telèfon un dispositiu a la seva mesura.
TODO: http://eceansar.blogspot.com.es/2011/07/complete-history-of-android-successthe.html
Un activity es una classe, que te una gerarquia d'herencia.
Activity launched
App process killed
Activity running
Son les activitats que estem veient.
'
Un intent és una descripció abstracta d'una operació a reañlitzar. Es pot utilitzar amb:
Un dels usos més comuns és iniciar noves activitats des de altres activitats, hi en aquest sentit és un component que descriu la relacióm, el lligam, entre activitats.
Un intent té la següent estructura, resumida en dos parts:
Hi ha dos tipus d'intents:
Sembla que fan com de màscara que indixca quins intents implicits podrà realitzar o no l'aplicació. Els intents filters son la forma en que qualsevol component pot fer saber al sistema operatiu Android quines són les seves capacitats.Aquestes capacitats es declaren al fitxer AndroidManifest.xml