5.1 Introducción A Las Tecnologías y Herramientas Móviles.: Dispositivos de Propósito General de Trabajo
5.1 Introducción A Las Tecnologías y Herramientas Móviles.: Dispositivos de Propósito General de Trabajo
Los dispositivos móviles son aparatos de pequeño tamaño, con algunas capacidades de procesamiento,
móviles o no, con conexión permanente o intermitente a una red, con memoria limitada, diseñados
específicamente para una función.
Los Smartphones (móviles con sistema operativo, lo que les habilita para ejecutar programas) y PDAs
(pequeños ordenadores que funcionan a modo de agenda) ofrecen mayores prestaciones que los
anteriores: pantallas táctiles y de mayor tamaño, algunos incorporan teclado alfanumérico y
conectividad WiFi. La aparición del iPhone de Apple en el mercado supuso una revolución para esta
familia de dispositivos, que se han popularizado enormemente en los últimos años. Muchos de los
nuevos smartphones tienen un diseño similar al iPhone, incorporan pantalla táctil y la posibilidad de
incorporar aplicaciones.
Los MID (Mobile Internet Device) y PC ultra-móvil son los términos más frecuentes para designar a los
pequeños ordenadores de mano pensados para la navegación.
Entre los IDE más populares para el desarrollo de aplicaciones Android se puede destacar los
siguientes:
Eclipse
NetBeans
IntelliJ
Android Studio
Eclipse:
Eclipse es un entorno de desarrollo, de código abierto y gratuito, cuyo diseño sigue un patrón de
actualización basada en plugin. El objetivo de este IDE es convertirse en una plataforma de
integración de herramientas de desarrollo. Es un IDE que se podría denominar como genérico, ya
que no fue creado para ser utilizado con un solo lenguaje de programación, sino que es
compatible con una gran variedad de lenguajes.
NetBeans:
NetBeans es un IDE que permite de forma rápida y fácil, desarrollar aplicaciones del lenguaje
Java en plataformas como: escritorios, móviles y aplicaciones web, utilizando tecnologías y
lenguajes como HTML5 con HTML, Javascript y CSS. Proporciona un conjunto de herramientas
para PHP, C y C++.
Entre sus puntos fuertes que tiene NetBeans al igual que Eclipse es que ambos son de código
abierto y gratuitos y cuenta como añadido con una gran base de usuarios que forman parte de una
comunidad de desarrolladores muy amplia en todo el mundo.
Android Studio:
Android Studio es el entorno de desarrollo integrado (IDE) oficial para el desarrollo de apps para
Android y está basado en IntelliJ IDEA. Además del potente editor de códigos y las herramientas
para desarrolladores de IntelliJ, Android Studio ofrece incluso más funciones que aumentan la
productividad a la hora de desarrollar aplicaciones para Android.
IntelliJ:
IntelliJ IDEA, es el IDE representativo de JetBrains, el cual está diseñado para el desarrollo
productivo de JVM. Con su conocimiento profundo de lenguajes y tecnologías, y su interfaz de
usuario ergonómica, IntelliJ IDEA hace que el desarrollo sea una experiencia agradable para los
desarrolladores.
Xamarin
Xamarin es un entorno de desarrollo creado por Microsoft y que permite crear aplicaciones
Android en C#. Es gratis y va integrado en Visual Studio.
5.4 Desarrollo de aplicaciones móviles
Estructura de un proyecto Android
Principalmente se debe de conocer la estructura general de un proyecto tipo.
Cuando se crea un nuevo proyecto Android en Eclipse se genera automáticamente la estructura de
carpetas necesarias para poder generar posteriormente la aplicación. Esta estructura es común en
cualquier aplicación, independientemente de su tamaño y complejidad.
En el ejemplo se muestra cómo se deben ver los elementos creados inicialmente para un nuevo
proyecto Android:
Elementos principales:
Carpeta /src/
Contiene todo el código fuente de la aplicación, código de la interfaz gráfica, clases auxiliares,
etc. Inicialmente, Eclipse crea el código básico de la pantalla (Activity) principal de la aplicación,
siempre bajo la estructura del paquete java definido.
Carpeta /res/
Contiene todos los ficheros de recursos necesarios para el proyecto: imágenes, vídeos, cadenas de
texto, etc. Los diferentes tipos de recursos de deberán distribuir entre las siguientes carpetas:
/res/drawable/
Contienen las imágenes de la aplicación. Se puede dividir en /drawableldpi, /drawable-mdpi y
/drawable-hdpi para utilizar diferentes recursos dependiendo de la resolución del dispositivo.
/res/layout/
Contienen los ficheros de definición de las diferentes pantallas de la interfaz gráfica. Se puede dividir
en /layout y /layout-land para definir distintos layouts dependiendo de la orientación del dispositivo.
/res/anim/
Contiene la definición de las animaciones utilizadas por la aplicación.
/res/menu/
Contiene la definición de los menús de la aplicación.
/res/values/
Contiene otros recursos de la aplicación como por ejemplo cadenas de texto (strings.xml), estilos
(styles.xml), colores (colors.xml), etc.
/res/xml/
Contiene los ficheros XML utilizados por la aplicación. /res/raw/. Contiene recursos adicionales,
normalmente en formato distinto a XML, que no se incluyan en el resto de carpetas de recursos.
Carpeta /gen/
Contiene una serie de elementos de código generados automáticamente al compilar el proyecto.
Cada vez que se genera un nuevo proyecto, la maquinaria de compilación de Android genera una
serie de ficheros fuente en java dirigidos al control de los recursos de la aplicación.
El más importante es el fichero R.java, y la clase R:
La clase R contiene en todo momento una serie de constantes con los ID de todos los recursos de
la aplicación incluidos en la carpeta /res/, de forma que se pueda acceder fácilmente a estos
recursos desde el código a través de este dato. Así, por ejemplo, la constante R.drawable.icon contendrá
el ID de la imagen “icon.png” contenida en la carpeta /res/drawable/.
Carpeta /assets/
Contiene todos los demás ficheros auxiliares necesarios para la aplicación (y que se incluirán en
su propio paquete), como por ejemplo ficheros de configuración, de datos, etc.
La diferencia entre los recursos incluidos en la carpeta /res/raw/ y los incluidos en la carpeta /assets/ es
que para los primeros se generará un ID en la clase R y se deberá acceder a ellos con los diferentes
métodos de acceso a recursos. Para los segundos, no se generarán ID y se podrá acceder a ellos por su
ruta como a cualquier otro fichero del sistema.
Fichero AndroidManifest.xml
Contiene la definición en XML de los aspectos principales de la aplicación, como por ejemplo su
identificación (nombre, versión, icono, etc.), sus componentes (pantallas, mensajes, etc.), o los permisos
necesarios para su ejecución.
Componentes de una aplicación Android
Existe una serie de elementos clave que resultan necesarios para desarrollar aplicaciones en Android
tales como:
Vista (View)
Las vistas son los elementos que componen la interfaz de usuario de una aplicación: por ejemplo, un
botón o una entrada de texto. Todas las vistas son objetos descendientes de la clase View, y, por tanto,
pueden ser definidas utilizando código Java. Sin embargo, lo habitual para definir las vistas es utilizando
un fichero XML y dejar que el sistema cree los objetos a partir de este fichero. Esta forma de trabajar es
muy parecida a la definición de una página web utilizando código HTML.
Layout
Un layout es un conjunto de vistas agrupadas de una determinada forma. Se llega a disponer de
diferentes tipos de layouts para organizar las vistas de forma lineal, en cuadrícula o indicando la posición
absoluta de cada vista. Los layouts también son objetos descendientes de la clase View.
Actividad (Activity)
Una aplicación en Android va a estar formada por un conjunto de elementos básicos de visualización,
conocidos como pantallas de la aplicación. En Android cada uno de estos elementos, o pantallas, se
conoce como actividad. Su función principal es la creación de la interfaz de usuario. Una aplicación suele
necesitar varias actividades para crear la interfaz de usuario. Las diferentes actividades creadas serán
independientes entre sí, aunque todas trabajarán para un objetivo común. Una actividad se define en
una clase descendiente de Activity y utiliza un layout para que define su apariencia.
Por lo general, una aplicación está formada por diferentes Activities, que están más o menos ligadas
entre sí. Cuando hay varias, éstas se van almacenando en una pila mediante el mecanismo de LIFO (Last
In – First Out: la última que entra en la pila es la primera que sale) y cuando el usuario pulsa el botón
atrás, se extrae la Activity actual de la pila y se reanuda la anterior Activity situada allí.
Servicio (Service)
Un servicio es un proceso que se ejecuta por así decirlo “detrás”, sin la necesidad de una interacción con
el usuario. Se utilizan cuando se quiere tener en ejecución un código de manera continua, aunque el
usuario cambie de actividad. En Android se dispone de dos tipos de servicios: servicios locales, que son
ejecutados en el mismo proceso, y servicios remotos, que son ejecutados en procesos separados. Cada
servicio que se crea lo se tiene que declarar en el AndroidManifest.xml mediante la etiqueta . Para ser
iniciados se puede usar dos métodos:
Método Context.startService()
Método Context.bindService()
Estos son algunos de los componentes y elementos mas importantes para el desarrollo de aplicaciones
Android.
Los ataques a la capa de aplicaciones los dividiremos en dos tipos: los ataques que se pueden ejecutar
desde cualquier tipo de aplicación y los ataques que se pueden realizar únicamente desde el navegador
web, ya que esta es una aplicación muy potente, pero a la vez un punto crítico en la seguridad de estos
sistemas.