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)

Android logo

Android és un sistema operatiu basat el el nucli Linux dissenyat principalment per a dispositius mòbils i pantalles tàctils com smartphones o tablets. El sistema ha estat desenvolupat per Google i la Open Handset Alliance. Inicialment va ser creat per la companyia Android Inc, primer suportada finaciarament 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.

Google allibera el codi d'Android com a codi lliure sota la llicència Apache License.El projecte Android Open Source Project (AOSP), liderat per google, s'encarrega del manteniment i el desenvolupament d'Android.

Android has a large community of developers writing applications ("apps") that extend the functionality of devices. Developers write primarily in a customized version of Java,[12] and apps can be downloaded from online stores such as Google Play (formerly Android Market), the app store run by Google, or third-party sites. In June 2012, there were more than 600,000 apps available for Android, and the estimated number of applications downloaded from Google Play was 20 billion.[13]

El primer dispositiu Android es va vendre al octubre de 2008, i cap a finals de 2010 va esdevenir la plataforma per a smortphones més venuda.

Historia

Android, Inc. fa ser fundada a Palo Alto, California, Estats Units a l'octubre de 2003 per Andy Rubin (cofundador de Danger),[19] Rich Miner (cofundador de Wildfire Communications), Nick Sears, i Chris White per tal de desenvolupar segons les pròpies paraules de Rubin:

"...smarter mobile devices that are more aware of its owner's location and preferences."

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.

A Google un equip liderat per Rubin va desenvolupar un dispositiu mòbil basat en el kernel Linux.

El 5 de novembre de 2007 es va crear la Open Handset Alliance, un consorci d'empreses tecnològiques entre les quals està Google, fabricants de dispositius com HTC o Samsung, ISPs com Sprint, Nextel o T-Mobile, i fabricants de chipsets com Qualcomm o Texas Instruments. El seu objectiu és la creació d'estàndards oberts per a dispositius mòbils. El mateix dia es va presentar Android com el primer producte d'aquesta aliança.

El primer mòbil comercial que va utilitzar Android va ser el HTC Dream, alliberat el 22 d'octubre de 2008. A principis del 20120 Google va col·laborar amb HTC per llançar el seu propi mòbil el Nexus One. Al 2010 també es van llançar els mòbils de Samsung, Nexus S i al 2011 Galaxy Nexus.

Android versions

TODO: http://eceansar.blogspot.com.es/2011/07/complete-history-of-android-successthe.html

Abans de l'alliberament de la versió Ice Cream Sandwich, el primer que calia tenir en compte respecte a les versions d'Android és si es tracta d'una Tauleta o d'un mòbil o smartphone:

  • Smartphones: Fins a la versió 3.0 (no inclosa) les versions d'Android estaven dedicades a mòbils.
  • Tauletes: La versió 3.0, coneguda com a honeyComb, és dedicada a les Tablets (algunes tablets però suportaven 2.x)

Més endavant als diferents formats se'ls a anomenat Form Factors hi han aparegut form factors extres com:

Des de la versió Ice Cream Sandwich (alliberada a l'octubre de 2011) les dos variants de la plataforma s'han fusionat en una.

Fins a la data (--acacha (discussió) 15:51, 24 set 2012 (CEST)), l'última versió d'Android alliberada és la 4.1 amb el codename Jelly Bean que es centra en la velocitat i els gràfics alhora que s'alliberen noves apps com Google Beam, Google Now i una millor aplicació per a càmeres.

Consulteu:

Com consultar la vostra versió d'Android?

per tal de saber quin és el procediment per conèixer la vostra versió d'Android.

Com haureu observat els noms en codi (codenames) de les versions d'Android fan referència a noms de postres.

TODO: Penjar la imatge: Android+code+name.png

Vegeu els paràmetres targetSDKversion i MinSdkVersion

Consulteu:

http://developer.android.com/about/dashboards/index.html

Per veure una distribució d'ús de les versions d'Android a data de setembre de 2012.

Recursos:

Android API Levels

IMPORTANT: Despite its name, this element is used to specify the API Level, not the version number of the SDK (software development kit) or Android platform. The API Level is always a single integer. You cannot derive the API Level from its associated Android version number (for example, it is not the same as the major version or the sum of the major and minor versions).

API Level és un valor enter que identifica de forma única la revisió o versió del framework API de la plataforma Android.

La plataforma Android proveïx un framework API que les aplicacions poden utilitzar per interactuar amb el sistema operatiu Android. El framework API conté.

  • A core set of packages and classes
  • A set of XML elements and attributes for declaring a manifest file
  • A set of XML elements and attributes for declaring and accessing resources
  • A set of Intents
  • A set of permissions that applications can request, as well as permission enforcements included in the system

Cada nova versió d'Android pot incloure actualitzacions el framework API. Les actualitzacions es dissenyen de forma que una nova API sigui compatible amb les versions anteriors. Això provoca que la majoria de canvis siguin extres o afegits, que inclouen noves funcionalitats o funcionalitats millorades. Les parts antigues del API es marquen com a deprecated però no s'eliminen, indicant als desenvolupadors que es millor que no les utilitzin en noves aplicacions però mantenint la compatibilitat endarrere.

NOTA: en alguns casos comptats, parts de l'API són modificades o eliminades però no solen tenir rellevància per a la robustes i la seguretat de les aplicacions

La següent taula:

http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels

Mostra el API level suportat per cada versió d'Android.

Vegeu també:

Recursos:

Android devices

Android com a sistema operatiu

Plataformes suportades

La plataforma principal és:

També hi ha suport per a:

Arquitectura

Vegeu també Android_i_seguretat#Arquitectura_de_seguretat
SergiTurArquitectura.png


Arquitectura2ferranpallares.png

TODO: traduir:

Para empezar con el desarrollo de aplicaciones en Android es importante conocer cómo está estructurado este sistema operativo. A esto le llamamos arquitectura y en el caso de Android está formada por varias capas que facilitan al desarrollador la creación de aplicaciones. Además, esta distribución permite acceder a las capas más bajas mediante el uso de librerías para que así el desarrollador no tenga que programar a bajo nivel las funcionalidades necesarias para que una aplicación haga uso de los componentes de hardware de los teléfonos.

Cada una de las capas utiliza elementos de la capa inferior para realizar sus funciones, es por ello que a este tipo de arquitectura se le conoce también como pila. Para entender mejor, a continuación cito el diagrama de la arquitectura de Android tomada del sitio oficial de Android developers:

Explicamos ahora cada una de las capas iniciando de abajo hacia arriba.

  • Kernel de Linux: El núcleo del sistema operativo Android está basado en el kernel de Linux versión 2.6, similar al que puede incluir cualquier distribución de Linux, como Ubuntu, solo que adaptado a las características del hardware en el que se ejecutará Android, es decir, para dispositivos móviles. El núcleo actúa como una capa de abstracción entre el hardware y el resto de las capas de la arquitectura. El desarrollador no accede directamente a esta capa, sino que debe utilizar las librerías disponibles en capas superiores. De esta forma también nos evitamos el hecho de quebrarnos la cabeza para conocer las características precisas de cada teléfono. Si necesitamos hacer uso de la cámara, el sistema operativo se encarga de utilizar la que incluya el teléfono, sea cual sea. Para cada elemento de hardware del teléfono existe un controlador (o driver) dentro del kernel que permite utilizarlo desde el software.

El kernel también se encarga de gestionar los diferentes recursos del teléfono (energía, memoria, etc.) y del sistema operativo en sí: procesos, elementos de comunicación (networking), etc.

  • Librerías: La siguiente capa que se sitúa justo sobre el kernel la componen las bibliotecas nativas de Android, también llamadas librerías. Están escritas en C o C++ y compiladas para la arquitectura hardware específica del teléfono. Estas normalmente están hechas por el fabricante, quien también se encarga de instalarlas en el dispositivo antes de ponerlo a la venta. El objetivo de las librerías es proporcionar funcionalidad a las aplicaciones para tareas que se repiten con frecuencia, evitando tener que codificarlas cada vez y garantizando que se llevan a cabo de la forma “más eficiente”.

Entre las librerías incluidas habitualmente encontramos OpenGL (motor gráfico), Bibliotecas multimedia (formatos de audio, imagen y video), Webkit (navegador), SSL (cifrado de comunicaciones), FreeType (fuentes de texto), SQLite (base de datos), entre otras.

  • Entorno de ejecución: Como podemos apreciar en el diagrama, el entorno de ejecución de Android no se considera una capa en sí mismo, dado que también está formado por librerías. Aquí encontramos las librerías con la funcionalidades habituales de Java así como otras específicas de Android. El componente principal del entorno de ejecución de Android es la máquina virtual Dalvik. Las aplicaciones se codifican en Java y son compiladas en un formato específico para que esta máquina virtual las ejecute. La ventaja de esto es que las aplicaciones se compilan una única vez y de esta forma estarán listas para distribuirse con la total garantía de que podrán ejecutarse en cualquier dispositivo Android que disponga de la versión mínima del sistema operativo que requiera la aplicación. Cabe aclarar que Dalvik es una variación de la máquina virtual de Java, por lo que no es compatible con el bytecode Java. Java se usa únicamente como lenguaje de programación, y los ejecutables que se generan con el SDK de Android tienen la extensión .dex que es específico para Dalvik, y por ello no podemos correr aplicaciones Java en Android ni viceversa.
  • Framework de aplicaciones: La siguiente capa está formada por todas las clases y servicios que utilizan directamente las aplicaciones para realizar sus funciones. La mayoría de los componentes de esta capa son librerías Java que acceden a los recursos de las capas anteriores a través de la máquina virtual Dalvik. Siguiendo el diagrama encontramos:
  • Activity Manager. Se encarga de administrar la pila de actividades de nuestra aplicación así como su ciclo de vida.
  • Windows Manager. Se encarga de organizar lo que se mostrará en pantalla. Básicamente crea las superficies en la pantalla que posteriormente pasarán a ser ocupadas por las actividades.
  • Content Provider. Esta librería es muy interesante porque crea una capa que encapsula los datos que se compartirán entre aplicaciones para tener control sobre cómo se accede a la información.
  • Views. En Android, las vistas los elementos que nos ayudarán a construir las interfaces de usuario: botones, cuadros de texto, listas y hasta elementos más avanzados como un navegador web o un visor de Google Maps.
  • Notification Manager. Engloba los servicios para notificar al usuario cuando algo requiera su atención mostrando alertas en la barra de estado. Un dato importante es que esta biblioteca también permite jugar con sonidos, activar el vibrador o utilizar los LEDs del teléfono en caso de tenerlos.
  • Package Manager. Esta biblioteca permite obtener información sobre los paquetes instalados en el dispositivo Android, además de gestionar la instalación de nuevos paquetes. Con paquete nos referimos a la forma en que se distribuyen las aplicaciones Android, estos contienen el archivo .apk, que a su vez incluyen los archivos .dex con todos los recursos y archivos adicionales que necesite la aplicación, para facilitar su descarga e instalación.
  • Telephony Manager. Con esta librería podremos realizar llamadas o enviar y recibir SMS/MMS, aunque no permite reemplazar o eliminar la actividad que se muestra cuando una llamada está en curso.
  • Resource Manager. Con esta librería podremos gestionar todos los elementos que forman parte de la aplicación y que están fuera del código, es decir, cadenas de texto traducidas a diferentes idiomas, imágenes, sonidos o layouts. En un post relacionado a la estructura de un proyecto Android veremos esto más a fondo.
  • Location Manager. Permite determinar la posición geográfica del dispositivo Android mediante GPS o redes disponibles y trabajar con mapas.
  • Sensor Manager. Nos permite manipular los elementos de hardware del teléfono como el acelerómetro, giroscopio, sensor de luminosidad, sensor de campo magnético, brújula, sensor de presión, sensor de proximidad, sensor de temperatura, etc.
  • Cámara: Con esta librería podemos hacer uso de la(s) cámara(s) del dispositivo para tomar fotografías o para grabar vídeo.
  • Multimedia.Permiten reproducir y visualizar audio, vídeo e imágenes en el dispositivo.
  • Aplicaciones. En la última capa se incluyen todas las aplicaciones del dispositivo, tanto las que tienen interfaz de usuario como las que no, las nativas (programadas en C o C++) y las administradas (programadas en Java), las que vienen preinstaladas en el dispositivo y aquellas que el usuario ha instalado. En esta capa encontramos también la aplicación principal del sistema: Inicio (Home) o lanzador (launcher), porque es la que permite ejecutar otras aplicaciones mediante una lista y mostrando diferentes escritorios donde se pueden colocar accesos directos a aplicaciones o incluso widgets, que son también aplicaciones de esta capa.

Como podemos ver, Android nos proporciona un entorno sumamente poderoso para que podamos programar aplicaciones que hagan cualquier cosa. Nada dentro de Android es inaccesible y podemos jugar siempre con las aplicaciones de nuestro teléfono para optimizar cualquier tarea.

El potencial de Android se sitúa en el control total que se le da al usuario para que haga de su teléfono un dispositivo a su medida.


Aplicacions

File managers:

  • Root Explorer (de pagament)

Gestors d'aplicacions

Seguretat

Consulteu Android i seguretat

Android Strictmode

TODO

ANR Dialog aka ANR. ANR són les inicials de:

Application Not Responding

Consulteu:

On podeu trobar un exemple de programació amb Sockets que peta si s'està amb el mode estricte activat.

Recursos:

Instal·lació

Instal·lació a Virtual Box

NOTA: Prèviament cal instal·lar Virtual Box:

$ sudo apt-get install virtualbox-4.2

GenyMotion

GenyMotion abans conegut com:

AndroVM

Per instal·lar cal registrar-se a la web de genymotion i descarregar el bin:

$ sudo chmod +x genymotion-1.3.0_x64.bin
$ ./genymotion-1.3.0_x64.bin

I executeu:

$ cd ~/Baixades/genymotion
$ ./genymotion
$ ./genymotion-1.3.0_x64.bin 
Installing to folder /home/sergi/Baixades/genymotion. Are you sure [y/n] ? y

- Trying to find VirtualBox toolset .................... WARNING (Virtualbox was not found in you PATH. Please install it manually)
- Extracting files ..................................... OK (Extract into: /home/sergi/Baixades/genymotion)

Installation done successfully.

You can now use these tools from /home/sergi/Baixades/genymotion:
 - genymotion
 - genymotion-shell


Les AVD es guarden al cloud amb el vostre compte genymotion. És una eina for Dummies,per que un cop executada la màquina virtual fins i tot executa el adb connect:

$ adb devices
List of devices attached 
192.168.56.101:5555	device

I configura xarxa:

$ ifconfig vboxnet0
vboxnet0  Link encap:Ethernet  direcciónHW 0a:00:27:00:00:00  
         Direc. inet:192.168.56.1  Difus.:192.168.56.255  Másc:255.255.255.0
         Dirección inet6: fe80::800:27ff:fe00:0/64 Alcance:Enlace
         ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
         Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
         Paquetes TX:69 errores:0 perdidos:0 overruns:0 carrier:0
         colisiones:0 long.colaTX:1000 
         Bytes RX:0 (0.0 B)  TX bytes:14116 (14.1 KB)

Que no funciona:

  • Envió de SMS, simulación de llamadas, utilizar la webcam de nuestro equipo como cámara del dispositivo. Lo que si nos permite Genymotion es manipular el estado de la batería y setear la posición vía GPS.

Si tu aplicacion requiere de alguna de esas cosas, tendras que descartar esta herramienta de entrada. :(

Si has llegado hasta este punto es seguro que te he convencido (a pesar de los puntos flacos que tiene) de darle una oportunidad a esta herramienta, entonces no te detengas ahora, aprende como instalarlo, configurarlo y dejarlo listo como parte de tu ambiente de desarrollo.

Recursos:

Androvm

Aneu a:

http://androvm.org/blog/download/

Baixeu el fitxer:

http://androvm.org/Download/androVM_vbox86tp_4.1.1_r6.1-20130222-gapps-houdini-flash.ova
TODO: Com fer adb connect

Importeu la Ova al Virtual Box

Recursos:

Pas a Pas primera execució

Introducció

Aquesta part és possiblement la més avorrida, ja que és la més teòrica, però és important. Està orientada als usuaris que no tenen coneixements en la instal·lació de Android en un dispositiu mòbil. Si ja tens coneixement amb la primera instal·lació i estàs familiaritzat amb el SO, pots saltar-te el següent punt.

Ràpid repàs de Android

  • Es una SO / plataforma d'Open source basada en el kernel de Linux. Permet controlar dispositius per mitja de biblioteques desenvolupades o adaptades per Google mitjançant Java.
  • Esta orientat, generalment, a dispositius mòbils.
  • Executa l'aplicació en la maquina virtual Dalvik. Dalvik esta optimitzada per a requerir poca memòria i permetre executar diverses instàncies simultàniament.

Pas a Pas

El primer que veiem quan obrim el nostre nou dispositiu es la pantalla de benvinguda on hem de triar el nostre idioma, i posteriorment vincular el nostre compte de gmail.

Avm1.png


En aquesta pantalla triem que SI per poder vincular el nostre dispositiu al el gmail amb uns senzills passos.

Avm2.png


Introduïm el nostre ocmpte de Google i la contrasenya.

Avm3.png


En el cas de que no tinguem compte o ens hem equivocat amb algun dels camps anteriors ens avisara i haurem de tornar a completar-los.

Avm4.png


Un cop comprovats els camps seguim amb la vinculació.

Avm5.png


Ara ens ofereix restaurar el nostre compte de Google al nou dispositiu i crear una nova copia de seguretat per si en algun cas tenim un problema i no podem recuperar els arxius.

Avm6.png


Utilitzar la ubicació de Google per a poder controlar on estas connectat de forma anònima des de Google.

Avm7.png


Per finalitzar introduïm la hora i data correctes segons on estem ubicats, que normalment ja estan correctes per defecte, però tot i així ho hem de comprovar.

Avm8.png


Ja hem finalitzat la nostra instal·lació i podem començar a utilitzar el nostre nou Android.

Avm9.png


Un cop estem dintre del Android podem veure els ultims petits conçells per mourens mes rapidament dintre del nostre dispositiu i algunes captures de la pantalla.

Documentació obsoleta (crec ;-))

Es pot obtenir una màquina virtual preconfigurada amb Android per a virtual Box a vmlite:

http://www.vmlite.com/index.php?option=com_content&view=article&id=68:android&catid=17:vmlitenewsrotator

Executeu:

$ cd && mkdir vmlite_android && cd vmlite_android
$ sudo apt-get install p7zip
$ wget http://www.vmlite.com/vmlite/VMLite-Android-v4.0.4.7z
$ p7zip -d VMLite-Android-v4.0.4.7z

Ara entreu a la carpeta amb l'entorn gràfic:

$ nautilus VMLite-Android-v4.0.4

I feu clic a:

VMLite-Android-v4.0.4.vbox

I us instal·larà la màquina Android a VIrtual Box.

Si us dona l'error del USB i us demana instal·lar:

Oracle VM VirtualBox Extension Pack

Vegeu Virtual Box:


Android X86

Ubuntu a Android

Desenvolupament Android

Vegeu Desenvolupament Android

Vegeu també

Enllaços externs