More Related Content
Similar to Workshop de programación en Android (20)
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
- 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
- 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
- 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
- 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
- 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
- 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
- 34. CREAR UN PROYECTO ANDROID
• New à Other à Android Application
Project
©
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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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