SlideShare a Scribd company logo
1 of 80
Download to read offline
WORKSHOP DE PROGRAMACIÓN EN ANDROID

                                                                               Luis Muñoz Hueso
                                                                               @munozluis

                                                                               http://es.linkedin.com/in/lumunoz/

                                                                               http://www.slideshare.net/lrmunoz

©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
INTRODUCCIÓN


©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
VUESTRO PROFESOR…
•  Luis Muñoz Hueso
•  Ingeniero de Telecomunicación
•  Posgrado en emprendimiento (entrepreneurship)
•  +11 años de experiencia en desarrollo de
   software en diferentes industrias y países
•  Fundador de la red social Serendipio, y la
   plataforma de desarrollo de apps Fabriapps
•  Contacto:
             –  Twitter: @munozluis
             –  Linkedin: http://es.linkedin.com/in/lumunoz
             –  Email: luis@serendipio.com



©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
MI TIMELINE
                                                  1996                         2001   2002   2005   2006   2007   2010   2012




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
EL MOMENTO QUE LO CAMBIÓ TODO




                                         Julio 07                              Noviembre 07




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
LA TECNOLOGÍA MÁS PENETRANTE DE LA HISTORIA




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
PUNTO DE INFLEXIÓN: MÁS SMARTPHONES QUE PCS




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
SMARTPHONES EQUIVALE A APPS




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
PRINCIPALES PLATAFORMAS

•  La plataforma líder
   es Android
•  El 90% del mercado
   lo copan Android,
   iOS, y la web móvil




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
UN NUEVO NICHO PROFESIONAL


                                                                             +200%	
  año/año*	
  
                                                                             +500K	
  nuevos	
  empleos	
  (US)	
  




                                                                                              Descargas	
  (miles	
  de	
  millones)	
  
    2011	
                                                        2012	
  
                                                                               400	
  

                                                                               300	
  

                                                                               200	
                                                       Gra3s	
  
Evolución	
  exponencial	
  de	
  las	
  descargas	
                                                                  287,9	
  
                                                                                                                                           Pago	
  
                                                                               100	
  

                                                                                   0	
          22	
  
                                                                                                2,9	
                  21,7	
  
                                                                                               2012	
                  2016	
  
*Fuente:	
  Dice.com,	
  Elan	
  
**Fuente:	
  Sta3sta	
   licencia	
  	
  Crea3ve	
  Commons	
  
  ©	
  Luis	
  Muñoz	
  Hueso	
  con	
  
OPCIONES PARA DESARROLLO DE APPS




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
REFERENCIAS Y RECURSOS
•  Documentación de Android
             –  http://developer.android.com/training/
                index.html
             –  http://developer.android.com/guide/components/
                index.html
•  Libros
             –  Learning Android – O’Reilly
             –  Programming Android – O’Reilly
•  Stack overflow
             –  http://stackoverflow.com/




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
CURSO DE ANDROID

                                                                               •  Este workshop es
                                                                                  parte de un curso
                                                                                  de Android para
                                                                                  principiantes de 20
                                                                                  horas
                                                                               •  Para más
                                                                                  información:

                                                                                 luis@serendipio.com




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
EN ESTE CURSO…
•  Trataremos el uso de aplicaciones nativas
   en Android a un nivel introductorio
             –  Orientado a un entorno profesional
•  Otros cursos en proyecto:
             –  Niveles intermedio-avanzado de desarrollo
                nativo bajo Android
             –  Desarrollo de aplicaciones nativas en iOS
                (niveles inicial-intermedio-avanzado).
             –  Desarrollo de aplicaciones híbridas basadas en
                Phonegap (Apache Cordova) y HTML5




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
A TENER EN CUENTA SOBRE EL CURSO
•  A veces escribiremos código o haremos
   cosas que no entenderemos (en principio)
             –  Tened un poco de paciencia J
•  Terminología en inglés
             –  Mótivo: búsquedas en foros, resolución de
                problemas, etc.
•  Estructura temporal: bloques de 25 min + 5
   min de descanso
             –  4 bloques
             –  Descanso de 30 min
             –  4 bloques




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
AGENDA DEL CURSO DE ANDROID
•  Día 1
             –        Introducción
             –        Preparación del entorno de desarrollo
             –        Hello Android World!
             –        Fundamentos de la plataforma Android
             –        Estructura de un proyecto Android
             –        Herramientas del SDK
•  Día 2
             –  Repaso de Java y Eclipse
             –  Arquitectura de las aplicaciones Android
             –  Diseño de una aplicación de ejemplo




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
AGENDA DEL CURSO DE ANDROID
•  Día 3
             –  Interfaz gráfica de las apps Android (UI)
                           •  Componentes gráficos y layouts
                           •  Mejores prácticas para el diseño de Uis en Android
•  Día 4
             –  Librerías Android
                           •  Bases de datos
                           •  Comunicación con un servidor
                           •  Acceso a las capacidades del teléfono
•  Día 5
             –  Gestión del ciclo de vida de un app Android
                           •  Desarrollo, testeo, depuración, publicar en Google
                              Play
             –  Resumen del curso y próximos pasos.


©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
PREPARACIÓN DEL ENTORNO
        DE DESARROLLO
©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
QUÉ NECESITAMOS PARA DESARROLLAR EN ANDROID?

•  Un PC con uno de los sistemas operativos
   principales
             –  Recomendado Mac o Linux
•  Java 6
             –  Se puede usar Java 7, pero compilando para 6
•  Un entorno de desarrollo (IDE)
             –  Como veremos, el mejor soportado y el más
                utilizado es Eclipse, por lo que se recomienda
                su uso
•  El SDK de Android
•  Idealmente, un móvil Android con el que
   poder realizar pruebas en un terminal real
             –  No es estríctamente necesario


©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
JAVA
•  Descargar Java SE 6 SDK
             –  http://www.oracle.com/technetwork/java/javase/
                downloads/index.html




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
FUNDAMENTOS DE JAVA
•  Lenguaje de programación creado por Sun
   Microsystems en 1995
•  Orientado a Objetos
•  Basado en C++ y Smalltalk
             –  Pero más simple
•  Lenguaje interpretado independiente de la
   plataforma
             –  Máquina virtual – Write once, run everywhere
•  Multitud de beneficios
             –  Seguro, escalable, eficiente, simple, multi-
                hilo, librerías gráficas, etc.



©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ECLIPSE
•  Instalar Eclipse Indigo Classic o EE
   Edition
             –  http://www.eclipse.org/downloads/




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
FUNDAMENTOS DE ECLIPSE
•  Eclipse es un proyecto open source
   iniciado por IBM
             –  Basado en el antiguo VisualAge
•  Originalmente concebido para Java, se
   utiliza para multitud de lenguajes de
   programación
             –  El propio Eclipse está desarrollado en Java,
                con algunas extensiones
•  Arquitectura de plugins
             –  Eclipse es extensible mediante plugins
                orientados a diferentes propósitos (lenguajes
                de programación, herramientas, etc.)



©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
CONCEPTOS DE ECLIPSE
•  Workspace (entorno de trabajo)
•  Proyectos
•  Perspectivas
             –  Java
             –  Java Browsing
             –  Debug
•  Plugins
             –  Todos los elementos de Eclipse son plugins
                           •  Arquitectura totalmente modular
             –  Plugins para multitud de usos
                           •  Inclusive para Android como veremos




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
EL ENTORNO DE TRABAJO DE ECLIPSE




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
SELECCIONAR EL JDK CORRECTO




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
EJEMPLO: HELLO WORLD EN JAVA




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
INSTALAR EL ANDROID SDK
•  http://developer.android.com/sdk/index.html
             –  Añadir al PATH




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
CONTINUAR CON EL SDK MANAGER

•  Ejecutar “android”
•  Seleccionar “platform-
   tools”
•  Seleccionar al menos
   una SDK platform
             –  P.e. Android 4.1
             –  Seleccionar una
                “System image” (x86 si
                está disponible)
•  Extras
             –  Seleccionar “Android
                Support Library”
             –  HAXM


©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ESTRUCTURA DEL SDK




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
INSTALAR ADT EN ECLIPSE
•  Help à Install new software… à Add…
             –  https://dl-ssl.google.com/android/eclipse/




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
CONFIGURAR ADT Y ANDROID SDK
•  Eclipse à Preferences à Android à SDK
   location




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
HELLO ANDROID WORLD!


©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
CREAR UN PROYECTO ANDROID
•  New à Other à Android Application
   Project




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
CREAR UN PROYECTO ANDROID




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
RESULTADO CREACIÓN PROYECTO




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
CREAR UN AVD (ANDROID VIRTUAL DEVICE)




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
AVD CON EMULACIÓN X86
•         “HAX is not working and emulator runs in emulation mode”
             –  http://stackoverflow.com/questions/10761696/android-
                running-the-new-intel-emulator
             –  [Android SDK Root]extrasintel
                Hardware_Accelerated_Execution_Manager




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ARRANCAR EL EMULADOR




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
EL EMULADOR DE ANDROID
•  Se trata de un emulador, no un simulador
             –  Un simulador “simula” lo que se está ejecutando
                para que aparente el resultado final
                           •  P.e. una vista previa en un constructor de
                              ventanas
                           •  Los binarios sobre el simulador y los de
                              producción son diferentes
             –  Un emulador “emula” una plataforma y el código
                que se quiere ejecutar, encima de otra que
                probablemente sea diferente
                           •  P.e. un sistema ARM sobre una plataforma x86
                           •  La razón por la cual a veces el emulador es lento
                           •  Las aplicaciones se ejecutan encima de la misma
                              imagen que se instala en el móvil
                                         –  Resultado fidedigno

©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
LANZAR HELLO ANDROID!
•  Right-click à Run As à Android
   Application




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ANDROID DEVICE CHOOSER




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
LANZAR HELLO ANDROID EN UN TERMINAL
•  En Windows es necesario instalar los
   drivers del fabricante
             –  Terminales Google: descargables desde el
                Android Manager
             –  Otros fábricantes: descargar el driver OEM
                correspondiente
                           •  http://developer.android.com/tools/extras/oem-
                              usb.html
•  No es necesario en el caso de Mac/Linux
•  Ejecutar el proyecto desde Eclipse
•  Seleccionar el dispositivo una vez
   reconocido en el “Android Device Chooser”


©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
LANZAR HELLO ANDROID EN UN TERMINAL




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
FUNDAMENTOS DE LA
        PLATAFORMA ANDROID
©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
HISTORIA DE ANDROID
•  2003 - Android Inc. se funda en Palo Alto liderado
   por Andy Rubin
•  2005 - Google compra Android Inc.
             –  Rumores sobre el lanzamiento del “GPhone”
•  2007 – Google anuncia Android junto con la Open
   Handset Alliance
•  2008 – Se libera el primer móvil Android
             –  HTC Dream G1
•  2010 – El sistema Android se convierte en la
   plataforma líder en smartphones
•  2011 - Google compra Motorola
•  2012 y futuro – Otros factores de forma y
   dispositivos


©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
HISTORIA DE ANDROID




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
CLAVES DEL ÉXITO DE ANDROID
•  Antes que Android y iOS ya existían los
   smartphones y estándares para desarrollar
   sobre ellos
             –  Java J2ME
•  Android no fue el primer sistema operativo
   para móviles Open Source
             –  Iniciativa Openmoko
•  Ecosistema alrededor de la plataforma
             –        Apoyo de los fabricantes
             –        Creación de apps
             –        Generación de contenido
             –        Segmento de precio


©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
VERSIONES DE ANDROID
                                                  Versión	
                    API	
  level	
         Apodo	
  
                                                  Android	
  1.0	
             1	
                    Android	
  
                                                  Android	
  1.1	
             2	
                    Android	
  
                                                  Android	
  1.5	
             3	
                    Cupcake	
  
                                                  Android	
  1.6	
             4	
                    Donut	
  
                                                  Android	
  2.0	
             5	
                    Éclair	
  
                                                  Android	
  2.01	
            6	
                    Éclair	
  
                                                  Android	
  2.1	
             7	
                    Éclair	
  
                                                  Android	
  2.2	
             8	
                    Froyo	
  
                                                  Android	
  2.3	
             9	
                    Gingerbread	
  
                                                  Android	
  2.3.3	
           10	
                   Gingerbread	
  
                                                  Android	
  3.x	
             11,	
  12,	
  13	
     Honeycomb	
  
                                                  Android	
  4.0	
             14,	
  15	
            Ice	
  Cream	
  Sandwich	
  
                                                  Android	
  4.1	
             16	
                   Jelly	
  Bean	
  
                                                  Android	
  4.2	
             17	
                   Jelly	
  Bean	
  (también)	
  


©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
VERSIONES DE ANDROID




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
DISTRIBUCIÓN DE VERSIONES




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
EVOLUCIÓN DE LAS VERSIONES




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
FAMILIAS
•  Google Nexus
             –  Familia de dispositivos implementación de
                referencia de Android
                           •  Primeros en recibir actualizaciones
                           •  Recomendados para desarrollo
                           •  Hasta ahora, 3 fabricantes
                                         –  HTC, Samsung, Asus
•  Versiones de fabricantes
             –  HTC: SenseUI
             –  Samsung: TouchWiz
             –  Motorola: MotoBlur
•  “With Google”
             –  Versiones con licencia para incluir las apps de
                Google
                           •  Maps, Gmail, Gtalk

©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
PILA TECNOLÓGICA




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
LINUX KERNEL
•  Android está construido sobre el Kernel de
   Linux (2.6 y 3.x)
             –        Abstracción del hardware (drivers)
             –        Gestión de memoria
             –        Gestión de procesos
             –        Networking
             –        Seguridad
•  Muchas cosas de Linux quedan fuera
             –  Gestión de usuarios, X11, mount, etc.
•  Hardware base: Arquitecturas ARM
             –  Versiones x86 para las APIs más recientes
•  El usuario nunca accede al subsistema Linux
   directamente
•  El desarrollador sí puede acceder a través
   del shell adb


©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
LIBRERÍAS
•  Webkit: Framework de navegador web
             –  Desarrollado por Apple como base de Safari (y
                otras aplicaciones OS X), también es el motor
                usado por Chrome.
•  OpenGL: Para los gráficos
•  Codecs: Para soportar los estándares de
   audio/video más comunes
•  SQLite: Base de datos
•  Surface manager: Sistema de ventanas
•  Freetype: Motor de fuentes
•  Y muchas más…


©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
DALVIK Y JAVA
•  El elemento fundamental del desarrollo
   Android
•  Es una “Virtual Machine” de Java (VM)
             –  Optimizada para dispositivos móviles (uso
                eficiente de la CPU y ahorro de batería)
•  Existen diferencias respecto a la versión
   de Oracle
             –  Código à Bytecode .class à Ficheros .dex
             –  .dex ≈ “Dalvik Executable”
             –  Las librerías difieren
                           •  Por ejemplo se elimina todo lo referente a AWT/
                              Swing y se añaden librerías específicas de Android
                                         –  P.e. utilidades Base64


©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
APPLICATION FRAMEWORK
•  Librerías desarrolladas específicamente
   para Android
             –  Orientadas al desarrollo en Smartphones
•  Exponen las capacidades de la plataforma a
   las apps que se construyen sobre ellas
•  Cada “API Level” contiene una serie de
   capacidades distintas de las anteriores
             –  Mejoras y nuevas capacidades de manera
                incremental
             –  También algunas APIs se deshechan (deprecation)
•  Android Support Library
             –  Permite emplear APIs recientes en versiones
                antiguas de Android

©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
APLICACIONES
•  Son el código que corre por encima de la
   API de Android, y que cumplen una función
   de valor para el usuario
             –  Aplicaciones del sistema, Aplicaciones de
                desarrolladores, juegos, servicios, etc.
•  Cada vez más se les conoce como “apps”
•  Consisten en un fichero con extensión .apk
             –  Formado por el ejecutable Dalvik junto con los
                recursos (iconos, xml, audio/vídeo, etc.) y
                librerías adicionales
             –  Se trata de un fichero Zip
•  Deben firmarse
             –  Pero para testeo vale una clave de desarrollo

©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
DISTRIBUCIÓN DE APPS
•  El mecanismo principal es a través de un
   “store”
             –  El principal es Google Play
                           •  Hay que pagar un registro de $25 (una vez)
             –  Pero hay muchos más
             –  Amazon Appstore
                           •  http://www.amazon.com/mobile-apps/
             –  GetJar
                           •  http://www.getjar.com/
•  Pero hay más mecanismos: “Side Loading”
             –  Email, Descargar de una web, USB, etc.




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
DISTRIBUCIÓN DE APPS

                                                                               •  Habilitar “Unknown
                                                                                  sources” – Fuentes
                                                                                  desconocidas
                                                                                 –  Para instalar desde otra
                                                                                    fuente que no sea
                                                                                    Android Play
                                                                                    •  Otros app stores
                                                                                    •  “Side Loading”




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
SISTEMA DE ARCHIVOS

•  Tres puntos principales
             –  Sistema, Apps, SD
•  Cada app tiene su
   propio subsistema
             –  /data/data/app.package
•  La tarjeta SD siempre
   se supone presente
             –  Todas las apps tienen
                acceso
•  La partición del
   sistema contiene el SO
             –  Específico del
                fabricante o genérico




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ESTRUCTURA DE UN PROYECTO
        ANDROID
©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ESTRUCTURA DE UN PROYECTO ANDROID




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ELEMENTOS PRINCIPALES
•  Bajo “src” se encuentra el código fuente
   de nuestra app
•  Bajo “res” se encuentran los recursos de
   nuestra app
•  Bajo “gen” se encuentra el código
   autogenerado a partir de los recursos
             –  Clase R: el enlace entre el código fuente y los
                recursos
•  Bajo “libs” se encuentran las librerias
   Android que nuestra app requiere
•  AndroidManifest.xml
•  Otros ficheros y directorios

©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ANDROID MANIFEST




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
RECURSOS
•  Bajo “values” se almacenan cadenas y estilos
•  Bajo “layout” se define la interfaz gráfica
   (UI) para cada “Activity”
•  Bajo “drawable” se almacenan los diferentes
   recursos gráficos según el tipo de pantalla
•  Bajo “menu” se almacenan la configuración de
   menú para cada actividad
•  Los recursos son especializables para
   diferentes configuraciones
             –  Idioma, formato de pantalla, versión de la API…
•  Más tipos de recursos
             –  http://developer.android.com/guide/topics/
                resources/available-resources.html

©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ALGUNOS RECURSOS IMPORTANTES

•  El fichero values/
   strings.xml
   almacena las
   cadenas de texto de
   la aplicación
             –  Utilizado para la
                internacionalización
                (I18N) de la app




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ALGUNOS RECURSOS IMPORTANTES

•  Los ficheros
   layout/*.xml
   definen la interfaz
   de las diferentes
   ventanas de la app
             –  El plugin ADT
                integra un editor
                visual avanzado para
                editar los “widgets”
                de la ventana




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
LA CLASE R

•  La clase R es el
   enlace entre el
   código Java y los
   recursos
             –  Permite acceder a
                los recursos con
                comodidad desde el
                código
•  Es autogenerada




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
EL CÓDIGO JAVA

•  Al final, toda la
   lógica de nuestra
   app se encuentra en
   el código Java
•  La unidad
   fundamental de
   código en Android
   es la “Activity”
             –  Se puede decir que
                cada “Activity”
                representa una
                pantalla de nuestro
                app


©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ASISTENTE PARA LA CREACIÓN DE RECURSOS

•  Los recursos pueden
   ser cualificados
   según el entorno en
   tiempo de ejecución
             –  El Android Runtime
                decide que opción
                elegir según el
                dispositivo
•  Se traduce en
   carpetas con
   “qualifiers”
             –  Es recomendable usar
                el asistente XML de
                Android

©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
TIPOS DE PANTALLA

•  Android maneja 2
   parámetros de
   pantalla
             –  Tamaño
             –  Densidad
•  Se deben dejar los
   recursos gráficos
   apropiados en cada
   directorio
   cualificado



©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ANDROID DEVELOPER TOOLS


©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ADB – ANDROID DEBUG BRIDGE
•  Se trata del proceso que comunica los
   dispositivos (reales o emuladores) con el
   hardware de desarrollo
             –  Siempre, incluido el emulador, consiste en
                hardware independiente real o emulado
•  Muchas veces se vuelve inestable
             –  adb devices
             –  adb kill-server
             –  adb start-server




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
KEYSTORES

•  Todas las
   aplicaciones Android
   deben ser firmadas
•  Producción: clave
   válida durante 25
   años
•  Desarrollo: clave
   válida durante 1 año
             –  Generada
                automáticamente por
                las “tools”
             –  Si expira basta con
                borrarla

©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ANDROID
•  Utilidad para gestionar el SDK
             –  ./android
•  También se utiliza para gestionar
   proyectos desde la línea de comandos
             –  http://developer.android.com/tools/projects/
                projects-cmdline.html


            android create project                                            android update project 
            --target <target_ID>                                              --name <project_name> 
            --name <your_project_name>                                        --target <target_ID> 
            --path path/to/your/project                                       --path <path_to_your_project>
            --activity <your_activity_name> 
            --package <your_package_namespace>




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
ANT
•  Ant es una utilidad genérica para compilar
   proyectos Java
             –  Muy empleado en la comunidad Java
•  Se utiliza mucho en Android si se emplea
   la línea de comandos




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
DDMS




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  
TRACEVIEW




©	
  Luis	
  Muñoz	
  Hueso	
  con	
  licencia	
  	
  Crea3ve	
  Commons	
  

More Related Content

Viewers also liked

Videos1
Videos1Videos1
Videos1
Nokia
 
Marcelo andrés barra sáez
Marcelo andrés barra sáezMarcelo andrés barra sáez
Marcelo andrés barra sáez
xelo11
 
Formazione italia (fr)
Formazione italia (fr)Formazione italia (fr)
Formazione italia (fr)
Pop Apps
 

Viewers also liked (20)

ich danke meinem glück
ich danke meinem glückich danke meinem glück
ich danke meinem glück
 
Sabes que son las tics
Sabes que son las ticsSabes que son las tics
Sabes que son las tics
 
Lecole en france
Lecole en franceLecole en france
Lecole en france
 
Fisica moderna
Fisica modernaFisica moderna
Fisica moderna
 
Recette de madeleines. teresa et cristina
Recette de madeleines. teresa et cristinaRecette de madeleines. teresa et cristina
Recette de madeleines. teresa et cristina
 
Structures
StructuresStructures
Structures
 
Videos1
Videos1Videos1
Videos1
 
Clase 3 de ing
Clase 3 de ingClase 3 de ing
Clase 3 de ing
 
HLABC Forum: September 1998
HLABC Forum: September 1998HLABC Forum: September 1998
HLABC Forum: September 1998
 
Les 13 2
Les 13 2Les 13 2
Les 13 2
 
Diseño de presentación
Diseño de presentaciónDiseño de presentación
Diseño de presentación
 
Libro blanco resumenpag 1 86
Libro blanco resumenpag 1 86Libro blanco resumenpag 1 86
Libro blanco resumenpag 1 86
 
Marcelo andrés barra sáez
Marcelo andrés barra sáezMarcelo andrés barra sáez
Marcelo andrés barra sáez
 
Alba. cesc fábregas
Alba. cesc fábregasAlba. cesc fábregas
Alba. cesc fábregas
 
Brochure Ecole De Langue Italienne 2011
Brochure Ecole De Langue Italienne 2011Brochure Ecole De Langue Italienne 2011
Brochure Ecole De Langue Italienne 2011
 
Sandra yarce
Sandra yarceSandra yarce
Sandra yarce
 
Formazione italia (fr)
Formazione italia (fr)Formazione italia (fr)
Formazione italia (fr)
 
Serious Games : Définitions et concepts
Serious Games : Définitions et conceptsSerious Games : Définitions et concepts
Serious Games : Définitions et concepts
 
EL
ELEL
EL
 
Blok pacie patricio_r.[1]
Blok pacie patricio_r.[1]Blok pacie patricio_r.[1]
Blok pacie patricio_r.[1]
 

Similar to Workshop de programación en Android

Similar to Workshop de programación en Android (20)

Las apps
Las appsLas apps
Las apps
 
Isummit loxa
Isummit loxaIsummit loxa
Isummit loxa
 
Las apss en tipo presentacion
Las apss en tipo presentacionLas apss en tipo presentacion
Las apss en tipo presentacion
 
Que es la web 2
Que es la web 2Que es la web 2
Que es la web 2
 
Que es la web 2
Que es la web 2Que es la web 2
Que es la web 2
 
Que es la web 2
Que es la web 2Que es la web 2
Que es la web 2
 
Cursos verano explora
Cursos verano   exploraCursos verano   explora
Cursos verano explora
 
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdf
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdfFICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdf
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdf
 
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdf
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdfFICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdf
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdf
 
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0 (1).pdf
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0 (1).pdfFICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0 (1).pdf
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0 (1).pdf
 
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdf
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdfFICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdf
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdf
 
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdf
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdfFICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdf
FICHA TECNICA N° 03 HERRAMIENTAS WEB 2.0.pdf
 
Presentación.pptx
Presentación.pptxPresentación.pptx
Presentación.pptx
 
1_1_Introducción.pdf
1_1_Introducción.pdf1_1_Introducción.pdf
1_1_Introducción.pdf
 
Sistema Operativos
Sistema OperativosSistema Operativos
Sistema Operativos
 
Introduccion a la creacion de aplicaciones en Windows Phone 8.1
Introduccion a la creacion de aplicaciones en Windows Phone 8.1Introduccion a la creacion de aplicaciones en Windows Phone 8.1
Introduccion a la creacion de aplicaciones en Windows Phone 8.1
 
Proyecto de aula 4 semestre terminando
Proyecto de aula 4 semestre terminandoProyecto de aula 4 semestre terminando
Proyecto de aula 4 semestre terminando
 
Desarrollo Android
Desarrollo AndroidDesarrollo Android
Desarrollo Android
 
Sistema Operativos Android
Sistema Operativos Android Sistema Operativos Android
Sistema Operativos Android
 
Presentación1
Presentación1Presentación1
Presentación1
 

Recently uploaded

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Recently uploaded (11)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 

Workshop de programación en Android

  • 1. WORKSHOP DE PROGRAMACIÓN EN ANDROID Luis Muñoz Hueso @munozluis http://es.linkedin.com/in/lumunoz/ http://www.slideshare.net/lrmunoz ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 2. INTRODUCCIÓN ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 3. VUESTRO PROFESOR… •  Luis Muñoz Hueso •  Ingeniero de Telecomunicación •  Posgrado en emprendimiento (entrepreneurship) •  +11 años de experiencia en desarrollo de software en diferentes industrias y países •  Fundador de la red social Serendipio, y la plataforma de desarrollo de apps Fabriapps •  Contacto: –  Twitter: @munozluis –  Linkedin: http://es.linkedin.com/in/lumunoz –  Email: luis@serendipio.com ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 4. MI TIMELINE 1996 2001 2002 2005 2006 2007 2010 2012 ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 5. EL MOMENTO QUE LO CAMBIÓ TODO Julio 07 Noviembre 07 ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 6. LA TECNOLOGÍA MÁS PENETRANTE DE LA HISTORIA ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 7. PUNTO DE INFLEXIÓN: MÁS SMARTPHONES QUE PCS ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 8. SMARTPHONES EQUIVALE A APPS ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 9. PRINCIPALES PLATAFORMAS •  La plataforma líder es Android •  El 90% del mercado lo copan Android, iOS, y la web móvil ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 10. UN NUEVO NICHO PROFESIONAL +200%  año/año*   +500K  nuevos  empleos  (US)   Descargas  (miles  de  millones)   2011   2012   400   300   200   Gra3s   Evolución  exponencial  de  las  descargas   287,9   Pago   100   0   22   2,9   21,7   2012   2016   *Fuente:  Dice.com,  Elan   **Fuente:  Sta3sta   licencia    Crea3ve  Commons   ©  Luis  Muñoz  Hueso  con  
  • 11. OPCIONES PARA DESARROLLO DE APPS ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 12. REFERENCIAS Y RECURSOS •  Documentación de Android –  http://developer.android.com/training/ index.html –  http://developer.android.com/guide/components/ index.html •  Libros –  Learning Android – O’Reilly –  Programming Android – O’Reilly •  Stack overflow –  http://stackoverflow.com/ ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 13. CURSO DE ANDROID •  Este workshop es parte de un curso de Android para principiantes de 20 horas •  Para más información: luis@serendipio.com ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 14. EN ESTE CURSO… •  Trataremos el uso de aplicaciones nativas en Android a un nivel introductorio –  Orientado a un entorno profesional •  Otros cursos en proyecto: –  Niveles intermedio-avanzado de desarrollo nativo bajo Android –  Desarrollo de aplicaciones nativas en iOS (niveles inicial-intermedio-avanzado). –  Desarrollo de aplicaciones híbridas basadas en Phonegap (Apache Cordova) y HTML5 ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 15. A TENER EN CUENTA SOBRE EL CURSO •  A veces escribiremos código o haremos cosas que no entenderemos (en principio) –  Tened un poco de paciencia J •  Terminología en inglés –  Mótivo: búsquedas en foros, resolución de problemas, etc. •  Estructura temporal: bloques de 25 min + 5 min de descanso –  4 bloques –  Descanso de 30 min –  4 bloques ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 16. AGENDA DEL CURSO DE ANDROID •  Día 1 –  Introducción –  Preparación del entorno de desarrollo –  Hello Android World! –  Fundamentos de la plataforma Android –  Estructura de un proyecto Android –  Herramientas del SDK •  Día 2 –  Repaso de Java y Eclipse –  Arquitectura de las aplicaciones Android –  Diseño de una aplicación de ejemplo ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 17. AGENDA DEL CURSO DE ANDROID •  Día 3 –  Interfaz gráfica de las apps Android (UI) •  Componentes gráficos y layouts •  Mejores prácticas para el diseño de Uis en Android •  Día 4 –  Librerías Android •  Bases de datos •  Comunicación con un servidor •  Acceso a las capacidades del teléfono •  Día 5 –  Gestión del ciclo de vida de un app Android •  Desarrollo, testeo, depuración, publicar en Google Play –  Resumen del curso y próximos pasos. ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 18. PREPARACIÓN DEL ENTORNO DE DESARROLLO ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 19. QUÉ NECESITAMOS PARA DESARROLLAR EN ANDROID? •  Un PC con uno de los sistemas operativos principales –  Recomendado Mac o Linux •  Java 6 –  Se puede usar Java 7, pero compilando para 6 •  Un entorno de desarrollo (IDE) –  Como veremos, el mejor soportado y el más utilizado es Eclipse, por lo que se recomienda su uso •  El SDK de Android •  Idealmente, un móvil Android con el que poder realizar pruebas en un terminal real –  No es estríctamente necesario ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 20. JAVA •  Descargar Java SE 6 SDK –  http://www.oracle.com/technetwork/java/javase/ downloads/index.html ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 21. FUNDAMENTOS DE JAVA •  Lenguaje de programación creado por Sun Microsystems en 1995 •  Orientado a Objetos •  Basado en C++ y Smalltalk –  Pero más simple •  Lenguaje interpretado independiente de la plataforma –  Máquina virtual – Write once, run everywhere •  Multitud de beneficios –  Seguro, escalable, eficiente, simple, multi- hilo, librerías gráficas, etc. ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 22. ECLIPSE •  Instalar Eclipse Indigo Classic o EE Edition –  http://www.eclipse.org/downloads/ ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 23. FUNDAMENTOS DE ECLIPSE •  Eclipse es un proyecto open source iniciado por IBM –  Basado en el antiguo VisualAge •  Originalmente concebido para Java, se utiliza para multitud de lenguajes de programación –  El propio Eclipse está desarrollado en Java, con algunas extensiones •  Arquitectura de plugins –  Eclipse es extensible mediante plugins orientados a diferentes propósitos (lenguajes de programación, herramientas, etc.) ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 24. CONCEPTOS DE ECLIPSE •  Workspace (entorno de trabajo) •  Proyectos •  Perspectivas –  Java –  Java Browsing –  Debug •  Plugins –  Todos los elementos de Eclipse son plugins •  Arquitectura totalmente modular –  Plugins para multitud de usos •  Inclusive para Android como veremos ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 25. EL ENTORNO DE TRABAJO DE ECLIPSE ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 26. SELECCIONAR EL JDK CORRECTO ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 27. EJEMPLO: HELLO WORLD EN JAVA ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 28. INSTALAR EL ANDROID SDK •  http://developer.android.com/sdk/index.html –  Añadir al PATH ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 29. CONTINUAR CON EL SDK MANAGER •  Ejecutar “android” •  Seleccionar “platform- tools” •  Seleccionar al menos una SDK platform –  P.e. Android 4.1 –  Seleccionar una “System image” (x86 si está disponible) •  Extras –  Seleccionar “Android Support Library” –  HAXM ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 30. ESTRUCTURA DEL SDK ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 31. INSTALAR ADT EN ECLIPSE •  Help à Install new software… à Add… –  https://dl-ssl.google.com/android/eclipse/ ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 32. CONFIGURAR ADT Y ANDROID SDK •  Eclipse à Preferences à Android à SDK location ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 33. HELLO ANDROID WORLD! ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 34. CREAR UN PROYECTO ANDROID •  New à Other à Android Application Project ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 35. CREAR UN PROYECTO ANDROID ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 36. RESULTADO CREACIÓN PROYECTO ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 37. CREAR UN AVD (ANDROID VIRTUAL DEVICE) ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 38. AVD CON EMULACIÓN X86 •  “HAX is not working and emulator runs in emulation mode” –  http://stackoverflow.com/questions/10761696/android- running-the-new-intel-emulator –  [Android SDK Root]extrasintel Hardware_Accelerated_Execution_Manager ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 39. ARRANCAR EL EMULADOR ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 40. EL EMULADOR DE ANDROID •  Se trata de un emulador, no un simulador –  Un simulador “simula” lo que se está ejecutando para que aparente el resultado final •  P.e. una vista previa en un constructor de ventanas •  Los binarios sobre el simulador y los de producción son diferentes –  Un emulador “emula” una plataforma y el código que se quiere ejecutar, encima de otra que probablemente sea diferente •  P.e. un sistema ARM sobre una plataforma x86 •  La razón por la cual a veces el emulador es lento •  Las aplicaciones se ejecutan encima de la misma imagen que se instala en el móvil –  Resultado fidedigno ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 41. LANZAR HELLO ANDROID! •  Right-click à Run As à Android Application ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 42. ANDROID DEVICE CHOOSER ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 43. LANZAR HELLO ANDROID EN UN TERMINAL •  En Windows es necesario instalar los drivers del fabricante –  Terminales Google: descargables desde el Android Manager –  Otros fábricantes: descargar el driver OEM correspondiente •  http://developer.android.com/tools/extras/oem- usb.html •  No es necesario en el caso de Mac/Linux •  Ejecutar el proyecto desde Eclipse •  Seleccionar el dispositivo una vez reconocido en el “Android Device Chooser” ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 44. LANZAR HELLO ANDROID EN UN TERMINAL ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 45. FUNDAMENTOS DE LA PLATAFORMA ANDROID ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 46. HISTORIA DE ANDROID •  2003 - Android Inc. se funda en Palo Alto liderado por Andy Rubin •  2005 - Google compra Android Inc. –  Rumores sobre el lanzamiento del “GPhone” •  2007 – Google anuncia Android junto con la Open Handset Alliance •  2008 – Se libera el primer móvil Android –  HTC Dream G1 •  2010 – El sistema Android se convierte en la plataforma líder en smartphones •  2011 - Google compra Motorola •  2012 y futuro – Otros factores de forma y dispositivos ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 47. HISTORIA DE ANDROID ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 48. CLAVES DEL ÉXITO DE ANDROID •  Antes que Android y iOS ya existían los smartphones y estándares para desarrollar sobre ellos –  Java J2ME •  Android no fue el primer sistema operativo para móviles Open Source –  Iniciativa Openmoko •  Ecosistema alrededor de la plataforma –  Apoyo de los fabricantes –  Creación de apps –  Generación de contenido –  Segmento de precio ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 49. VERSIONES DE ANDROID Versión   API  level   Apodo   Android  1.0   1   Android   Android  1.1   2   Android   Android  1.5   3   Cupcake   Android  1.6   4   Donut   Android  2.0   5   Éclair   Android  2.01   6   Éclair   Android  2.1   7   Éclair   Android  2.2   8   Froyo   Android  2.3   9   Gingerbread   Android  2.3.3   10   Gingerbread   Android  3.x   11,  12,  13   Honeycomb   Android  4.0   14,  15   Ice  Cream  Sandwich   Android  4.1   16   Jelly  Bean   Android  4.2   17   Jelly  Bean  (también)   ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 50. VERSIONES DE ANDROID ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 51. DISTRIBUCIÓN DE VERSIONES ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 52. EVOLUCIÓN DE LAS VERSIONES ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 53. FAMILIAS •  Google Nexus –  Familia de dispositivos implementación de referencia de Android •  Primeros en recibir actualizaciones •  Recomendados para desarrollo •  Hasta ahora, 3 fabricantes –  HTC, Samsung, Asus •  Versiones de fabricantes –  HTC: SenseUI –  Samsung: TouchWiz –  Motorola: MotoBlur •  “With Google” –  Versiones con licencia para incluir las apps de Google •  Maps, Gmail, Gtalk ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 54. PILA TECNOLÓGICA ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 55. LINUX KERNEL •  Android está construido sobre el Kernel de Linux (2.6 y 3.x) –  Abstracción del hardware (drivers) –  Gestión de memoria –  Gestión de procesos –  Networking –  Seguridad •  Muchas cosas de Linux quedan fuera –  Gestión de usuarios, X11, mount, etc. •  Hardware base: Arquitecturas ARM –  Versiones x86 para las APIs más recientes •  El usuario nunca accede al subsistema Linux directamente •  El desarrollador sí puede acceder a través del shell adb ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 56. LIBRERÍAS •  Webkit: Framework de navegador web –  Desarrollado por Apple como base de Safari (y otras aplicaciones OS X), también es el motor usado por Chrome. •  OpenGL: Para los gráficos •  Codecs: Para soportar los estándares de audio/video más comunes •  SQLite: Base de datos •  Surface manager: Sistema de ventanas •  Freetype: Motor de fuentes •  Y muchas más… ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 57. DALVIK Y JAVA •  El elemento fundamental del desarrollo Android •  Es una “Virtual Machine” de Java (VM) –  Optimizada para dispositivos móviles (uso eficiente de la CPU y ahorro de batería) •  Existen diferencias respecto a la versión de Oracle –  Código à Bytecode .class à Ficheros .dex –  .dex ≈ “Dalvik Executable” –  Las librerías difieren •  Por ejemplo se elimina todo lo referente a AWT/ Swing y se añaden librerías específicas de Android –  P.e. utilidades Base64 ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 58. APPLICATION FRAMEWORK •  Librerías desarrolladas específicamente para Android –  Orientadas al desarrollo en Smartphones •  Exponen las capacidades de la plataforma a las apps que se construyen sobre ellas •  Cada “API Level” contiene una serie de capacidades distintas de las anteriores –  Mejoras y nuevas capacidades de manera incremental –  También algunas APIs se deshechan (deprecation) •  Android Support Library –  Permite emplear APIs recientes en versiones antiguas de Android ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 59. APLICACIONES •  Son el código que corre por encima de la API de Android, y que cumplen una función de valor para el usuario –  Aplicaciones del sistema, Aplicaciones de desarrolladores, juegos, servicios, etc. •  Cada vez más se les conoce como “apps” •  Consisten en un fichero con extensión .apk –  Formado por el ejecutable Dalvik junto con los recursos (iconos, xml, audio/vídeo, etc.) y librerías adicionales –  Se trata de un fichero Zip •  Deben firmarse –  Pero para testeo vale una clave de desarrollo ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 60. DISTRIBUCIÓN DE APPS •  El mecanismo principal es a través de un “store” –  El principal es Google Play •  Hay que pagar un registro de $25 (una vez) –  Pero hay muchos más –  Amazon Appstore •  http://www.amazon.com/mobile-apps/ –  GetJar •  http://www.getjar.com/ •  Pero hay más mecanismos: “Side Loading” –  Email, Descargar de una web, USB, etc. ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 61. DISTRIBUCIÓN DE APPS •  Habilitar “Unknown sources” – Fuentes desconocidas –  Para instalar desde otra fuente que no sea Android Play •  Otros app stores •  “Side Loading” ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 62. SISTEMA DE ARCHIVOS •  Tres puntos principales –  Sistema, Apps, SD •  Cada app tiene su propio subsistema –  /data/data/app.package •  La tarjeta SD siempre se supone presente –  Todas las apps tienen acceso •  La partición del sistema contiene el SO –  Específico del fabricante o genérico ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 63. ESTRUCTURA DE UN PROYECTO ANDROID ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 64. ESTRUCTURA DE UN PROYECTO ANDROID ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 65. ELEMENTOS PRINCIPALES •  Bajo “src” se encuentra el código fuente de nuestra app •  Bajo “res” se encuentran los recursos de nuestra app •  Bajo “gen” se encuentra el código autogenerado a partir de los recursos –  Clase R: el enlace entre el código fuente y los recursos •  Bajo “libs” se encuentran las librerias Android que nuestra app requiere •  AndroidManifest.xml •  Otros ficheros y directorios ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 66. ANDROID MANIFEST ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 67. RECURSOS •  Bajo “values” se almacenan cadenas y estilos •  Bajo “layout” se define la interfaz gráfica (UI) para cada “Activity” •  Bajo “drawable” se almacenan los diferentes recursos gráficos según el tipo de pantalla •  Bajo “menu” se almacenan la configuración de menú para cada actividad •  Los recursos son especializables para diferentes configuraciones –  Idioma, formato de pantalla, versión de la API… •  Más tipos de recursos –  http://developer.android.com/guide/topics/ resources/available-resources.html ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 68. ALGUNOS RECURSOS IMPORTANTES •  El fichero values/ strings.xml almacena las cadenas de texto de la aplicación –  Utilizado para la internacionalización (I18N) de la app ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 69. ALGUNOS RECURSOS IMPORTANTES •  Los ficheros layout/*.xml definen la interfaz de las diferentes ventanas de la app –  El plugin ADT integra un editor visual avanzado para editar los “widgets” de la ventana ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 70. LA CLASE R •  La clase R es el enlace entre el código Java y los recursos –  Permite acceder a los recursos con comodidad desde el código •  Es autogenerada ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 71. EL CÓDIGO JAVA •  Al final, toda la lógica de nuestra app se encuentra en el código Java •  La unidad fundamental de código en Android es la “Activity” –  Se puede decir que cada “Activity” representa una pantalla de nuestro app ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 72. ASISTENTE PARA LA CREACIÓN DE RECURSOS •  Los recursos pueden ser cualificados según el entorno en tiempo de ejecución –  El Android Runtime decide que opción elegir según el dispositivo •  Se traduce en carpetas con “qualifiers” –  Es recomendable usar el asistente XML de Android ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 73. TIPOS DE PANTALLA •  Android maneja 2 parámetros de pantalla –  Tamaño –  Densidad •  Se deben dejar los recursos gráficos apropiados en cada directorio cualificado ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 74. ANDROID DEVELOPER TOOLS ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 75. ADB – ANDROID DEBUG BRIDGE •  Se trata del proceso que comunica los dispositivos (reales o emuladores) con el hardware de desarrollo –  Siempre, incluido el emulador, consiste en hardware independiente real o emulado •  Muchas veces se vuelve inestable –  adb devices –  adb kill-server –  adb start-server ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 76. KEYSTORES •  Todas las aplicaciones Android deben ser firmadas •  Producción: clave válida durante 25 años •  Desarrollo: clave válida durante 1 año –  Generada automáticamente por las “tools” –  Si expira basta con borrarla ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 77. ANDROID •  Utilidad para gestionar el SDK –  ./android •  También se utiliza para gestionar proyectos desde la línea de comandos –  http://developer.android.com/tools/projects/ projects-cmdline.html android create project android update project --target <target_ID> --name <project_name> --name <your_project_name> --target <target_ID> --path path/to/your/project --path <path_to_your_project> --activity <your_activity_name> --package <your_package_namespace> ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 78. ANT •  Ant es una utilidad genérica para compilar proyectos Java –  Muy empleado en la comunidad Java •  Se utiliza mucho en Android si se emplea la línea de comandos ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 79. DDMS ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons  
  • 80. TRACEVIEW ©  Luis  Muñoz  Hueso  con  licencia    Crea3ve  Commons