Está en la página 1de 14

Tema 3: Introducción a Android

Introducción al tema
Android es la primera plataforma móvil completamente abierta y libre, que además ofrece a
los desarrolladores un Kit de poderosas herramientas para la creación de todo tipo de
aplicaciones. 
La plataforma es totalmente es totalmente Open Source basado en Linux  y los desarrolladores
cuentan con numerosas opciones para distribuir y comercializar sus aplicaciones.  Está
enfocado para ser utilizado en dispositivos móviles como teléfonos inteligentes, tabletas,
Google TV y otros dispositivos. 
Se desarrolló por una compañía llamada Android, Inc. y en el año 2005 Google adquiere la
empresa para seguir trabajando en el mismo proyecto que después conociera la luz como un
S.O. para móviles denominado Android.  Hoy sigue siendo desarrollado y mantenido por
Google.
Android es actualmente la plataforma móvil más popular del mundo.  Sobre la base de las
contribuciones de la comunidad de código abierto Linux y más de 300 socios operadores de
hardware y software, Android se ha convertido rápidamente en el sistema operativo móvil de
más rápido crecimiento.
Cada día más de 1 millón de nuevos dispositivos Android se activan en todo el mundo.  Los
usuarios descargan más de 1,5 mil millones de aplicaciones y juegos de Google Play (La tienda
de aplicaciones Android) cada mes.

Mapa conceptual referido al tema

3.1. Conceptos y fundamentos


Empecemos mostrando un repaso de las versiones del Sistema Operativo Android, las cuales
de alguna manera quizá estratégica siempre han tenido un nombre de un postre:
Versión 1.0 Apple Pie - Septiembre del 2008.
Versión 1.1 Banana Bread - Febrero 2009.
Versión 1.5 Cup Cake - Abril 2009
Versión 1.6 Donut - Septiembre 2009
Versión 2.0 Eclair - Octubre 2009
Versión 2.2 Froyo - Mayo 2010
Versión 2.3 Gingerbread - Diciembre 2010
Versión 3.0 Honeycomb - Febrero 2011
Versión 4 .0 Ice Cream Sandwich - Octubre 2011
Versión 4.1 Jelly Bean - Julio 2012
Versión 4.4 KitKat - Octubre 2013
Versión 5.0 L - Junio 2014
La fuente de información oficial para el desarrollo de aplicaciones Android la encontramos
en http://developer.android.com/, donde además de tener toda la referencia necesaria para
diseñar, desarrollar y distribuir aplicaciones, cuenta con una sección de ejemplos de
aplicaciones http://developer.android.com/intl/es/samples/index.html, aquí puedes ver
ejemplos de códigos y aprender a construir diferentes componentes para tus aplicaciones. 
Cada ejemplo es una aplicación Android que funciona plenamente.  Podemos navegar por los
recursos, archivos de código fuente y ver la estructura general del proyecto.  Podemos copiar y
pegar el código que necesitamos.  También es posible descargar un proyecto completo.

Android deriva del Kernel de Linux, pero es un fork separado de ese Kernel.  Un Fork hace
referencia a cuando partiendo de un código fuente de un paquete de código Open Source se
inicia un desarrollo, independiente de él. Creándose por tanto un trozo distinto de Software.
Lo que significa que al día de hoy hoy los equipos de Android y Linux son totalmente
independientes, aunque desde luego Android es totalmente Open Source y deriva de Linux.
Cuenta con una poderosa plataforma de desarrollo Open Source conocida como el SDK
(software development kit) de Android para el desarrollo de aplicaciones, usando puramente
Java y el paradigma de la Programación Orientada a Objetos. El SDK está diseñado con el
objetivo de simplificar el desarrollo de aplicaciones para dispositivos móviles, con las mejores
prácticas y patrones de diseños de ingeniería de software.  El Android SDK tools compila el
código, junto con todos los datos y archivos de recursos en un paquete APK de Android, que es
un archivo comprimido con un sufijo .apk.  Un archivo APK contiene todo el contenido de una
aplicación para Android y es el archivo que los dispositivos con Android utilizan para instalar la
aplicación.  Se caracteriza porque se ha cuidado en lo posible que la ejecución de cada
aplicación no interfiera o dañe procesos importantes del sistema operativo. Una vez instalado
en un dispositivo, cada aplicación Android vive en su propio entorno limitado de seguridad:

 El sistema operativo Android es un sistema Linux multiusuario en el que cada


aplicación es un usuario diferente.
 Por defecto, el sistema asigna a cada aplicación un identificador único de usuario de
Linux (el ID es utilizado sólo por el sistema y es desconocido para la aplicación). El
sistema establece los permisos para todos los archivos en una aplicación de modo que
sólo el ID de usuario asignado a esa aplicación se puede acceder a ellos.
 Cada proceso tiene su propia máquina virtual (VM), por lo que el código de una
aplicación se ejecuta en forma aislada de otras aplicaciones.
 De forma predeterminada, cada aplicación se ejecuta en su propio proceso de Linux.
Android inicia el proceso cuando alguno de los componentes de la aplicación deben
ser ejecutados, luego cierra el proceso cuando ya no es necesario o cuando el sistema
debe recuperar la memoria para otras aplicaciones.

De esta manera, el sistema Android implementa el principio de privilegios mínimos. Es decir,


cada aplicación, por defecto, sólo tiene acceso a los componentes que necesita para hacer su
trabajo y nada más. Esto crea un ambiente muy seguro en el que una aplicación no puede
acceder a partes del sistema para las que no se le da permiso. Sin embargo, hay formas para
que una aplicación pueda compartir datos con otras aplicaciones y para que una aplicación
acceda a los servicios del sistema:

 Es posible hacer que dos aplicaciones puedan compartir el mismo ID de usuario Linux,
en cuyo caso se podrá acceder a los archivos de cada uno.
 Una aplicación puede solicitar permiso para acceder a los datos del dispositivo, como
los contactos del usuario, mensajes SMS, el almacenamiento montable (tarjeta SD),
cámara, Bluetooth, y más. Todos los permisos de aplicaciones debe ser concedida por
el usuario durante la instalación.

3.1.1. Arquitectura

La estructura del sistema operativo Android se compone de aplicaciones que se ejecutan en un


framework Java de aplicaciones orientadas a objetos sobre el núcleo de las bibliotecas de Java
en una máquina virtual Dalvik con compilación en tiempo de ejecución.  Aunque a partir de la
última versión de Android 5.0 conocida como Lollipop, Android ya ha cambiado de máquina
virtual, ahora es Android Run Time (ART).

Las bibliotecas escritas en lenguaje C incluyen un administrador de interfaz gráfica (surface


manager), un framework OpenCore, una base de datos relacional SQLite, una API gráfica
OpenGL ES 2.0 3D, un motor de renderizado WebKit, un motor gráfico SGL, SSL y una
biblioteca estándar de C Bionic. El sistema operativo está compuesto por 12 millones de líneas
de código, incluyendo 3 millones de líneas de XML, 2,8 millones de líneas de lenguaje C, 2,1
millones de líneas de Java y 1,75 millones de líneas de C++.

3.1.2 Componentes de Aplicación


Los componentes de la aplicación son los componentes esenciales para la construcción de una
aplicación Android.  Cada componente es un punto diferente a través de la cual el sistema
puede entrar a su aplicación.  No todos los componentes son puntos de entrada para el
usuario y algunos dependen unos de otros, pero cada uno existe como una entidad propia y
desempeña un papel específico.  Cada uno es un bloque único que ayuda a definir el
comportamiento general de su aplicación.

Hay cuatro tipos diferentes de componentes de aplicaciones. Cada tipo tiene un propósito
distinto y tiene un ciclo de vida distinto que define cómo el componente es creado y destruido.
Aquí están los cuatro tipos de componentes de aplicaciones:

3.1.2.1 Actividades (Activities)

Una actividad representa una única pantalla con una interfaz de usuario. Por ejemplo, una
aplicación de correo electrónico puede tener una actividad que muestra una lista de los
nuevos mensajes de correo electrónico, otra actividad para componer un correo electrónico, y
otra de las actividades para la lectura de mensajes de correo electrónico.  Aunque las
actividades trabajan juntos para formar una experiencia de usuario coherente en la aplicación
de correo electrónico, cada uno es independiente de los demás.  Como tal, una aplicación
diferente puede iniciar cualquiera de estas actividades (si la aplicación de correo electrónico lo
permite). Por ejemplo, una aplicación de cámara puede iniciar la actividad en la aplicación de
correo electrónico que compone el correo nuevo, con el fin de que el usuario pueda compartir
una imagen.

Una actividad se implementa como una subclase de la clase Activity y se puede aprender más
sobre esto en la la guía para desarrolladores sobre Actividades.

3.1.2.2 Servicios (Services)

Un servicio es un componente que se ejecuta en segundo plano para realizar operaciones de


ejecución larga o para llevar a cabo el trabajo para procesos remotos.  Un servicio no
proporciona una interfaz de usuario.  Por ejemplo, un servicio puede reproducir música en
segundo plano mientras el usuario está en una aplicación diferente, o puede obtener los datos
desde la red sin bloquear la interacción del usuario con una actividad.  Otro componente,
como una actividad, puede iniciar el servicio y dejar que se ejecute o se integra a el con el fin
de interactuar.

Un servicio se implementa como una subclase de la clase Service y se puede aprender más


sobre este en guía para desarrolladores sobre Servicios.

3.1.2.3 Los proveedores de contenido (content providers)

Un proveedor de contenido gestiona un conjunto compartido de datos de aplicaciones. Puede


almacenar los datos en el sistema de archivos, una base de datos SQLite, en la web, o cualquier
otro lugar de almacenamiento persistente a la que su aplicación puede tener acceso. A través
del proveedor de contenido, otras aplicaciones pueden consultar o incluso modificar los datos
(si el proveedor de contenido lo permite). Por ejemplo, el sistema Android ofrece un
proveedor de contenidos que gestiona la información de contacto de los usuarios.  Como tal,
cualquier aplicación con los permisos adecuados puede consultar el proveedor de contenidos
(como ContactsContract.Data ) para leer y escribir información sobre una persona en
particular.
Un proveedor de contenido se implementa como una subclase de ContentProvider y debe
implementar un conjunto estándar de APIs que permiten a otras aplicaciones ejecutar
transacciones. Para obtener más información, puedes revisar la guía desarrollador
sobre Content Providers.

3.1.2.4 Receptores de radiodifusión (broadcast receivers)

Un receptor de radiodifusión es un componente que responde a eventos de difusión


(broadcasts) del  sistema.  Muchas de estos anuncios se originan en el sistema.  Por ejemplo,
una anuncio que la pantalla se ha apagado, la batería está baja, o una imagen fue capturada.
Las aplicaciones también pueden iniciar anuncios (broadcasts), por ejemplo, dejar que otras
aplicaciones sepan que algunos datos se han descargado al dispositivo y están disponible para
que los utilicen.  A pesar de que los receptores de radiodifusión no muestran una interfaz de
usuario, pueden crear una notificación en la barra de estado para alertar al usuario cuando se
produce un evento de difusión.  Más comúnmente, sin embargo, un receptor de radiodifusión
es sólo una "puerta de entrada" a otros componentes y tiene la intención de hacer una
cantidad muy mínima de trabajo. Por ejemplo, podría iniciar un servicio que realice algún
trabajo basado en el evento.
Un receptor de radiodifusión se implementa como una subclase de BroadcastReceiver y cada
evento de difusión se entrega como un objeto Intent.  Para obtener más información, consulte
la clase BroadcastReceiver.

Un aspecto único del diseño del sistema Android es que cualquier aplicación puede iniciar el
componente de otra aplicación. Por ejemplo, si desea que el usuario capture una foto con la
cámara del dispositivo, es probable que haya otra aplicación que hace eso y su aplicación
puede utilizarlo, en lugar de desarrollar una actividad para capturar una foto por sí mismo.  No
es necesario incorporar o incluso enlazar a el código de la aplicación de la cámara.   En lugar de
ello, sólo tiene que iniciar la actividad en la aplicación de la cámara que captura una foto.
Cuando se haya completado, la foto es incluso retornada a su aplicación para que pueda
utilizarla.  Para el usuario, parecerá como si la cámara es en realidad una parte de su
aplicación.

Cuando el sistema inicia un componente, se inicia el proceso de la aplicación (si no está ya en


ejecución) y crea la instancia de las clases necesarias para el componente.  Por ejemplo, si su
aplicación se inicia el Activity en la aplicación de la cámara que captura una foto, la
actividad(Activity) se ejecuta en el proceso que pertenece a la aplicación de la cámara, no en el
proceso de su aplicación. Por lo tanto, a diferencia de la mayoría de las aplicaciones en otros
sistemas, las aplicaciones de Android no tienen un único punto de entrada (por ejemplo, no
hay la función main() como se suele usar en Java puro).

Debido a que el sistema ejecuta cada aplicación en un proceso separado con archivos de
permisos que restringen el acceso a otras aplicaciones, su aplicación no puede activar
directamente un componente de otra aplicación.  El sistema Android, sin embargo, sí puede. 
Por lo tanto, para activar un componente en otra aplicación, debe enviar un mensaje al
sistema que especifica su intención de poder iniciar un componente en particular.  Entonces, el
sistema activa el componente para usted.
 
3.1.3 Activación de componentes
Tres de los cuatro tipos de componentes vistos anteriormente: Las actividades (Activitys), los
servicios (services) y receptores de radiodifusión (broadcast receivers), son activados por un
mensaje asíncrono llamado un intent.  Los Intents enlazan los componentes individuales entre
sí en tiempo de ejecución (se puede pensar en ellos como los mensajeros que solicitan una
acción de otros componentes), si el componente pertenece a su aplicación o es de otra
aplicación.

Una intent es creado con un objeto Intent, el que define un mensaje para activar ya sea un
componente específico o un tipo específico de componente.  Un intent puede ser explícita o
implícito, respectivamente.

Para las actividades y servicios, un intent define la acción a realizar (por ejemplo, para "ver" o
"enviar" algo) y puede especificar el URI que debe actuar.  Por ejemplo, un intent podría
transmitir una solicitud para una activity para mostrar una imagen o para abrir una página
web. En algunos casos, puede iniciar un activity para recibir un resultado, en cuyo caso, el
activity también devuelve el resultado en un intent (por ejemplo, puede usar un intent para
que el usuario elija un contacto personal y tenerlo devuelta para usted, el intent que retorna
incluye un URI apuntando al contacto elegido).

Para los receptores de radiodifusión, el intent simplemente define el anuncio que se emitirá
(por ejemplo, una emisión para indicar que la batería del dispositivo está baja incluye sólo una
string de acción conocido que indica "batería está baja").
El otro tipo de componente, el proveedor de contenido (content provider), no es activado por
intents.  Más bien, se activa cuando una solicitud es dirigida desde un ContentResolver.   El
Content Resolver (resolución de contenido) se encarga de todas las transacciones directas con
el proveedor de contenido de modo que el componente que ha de realizar transacciones con
el proveedor no es necesario y, en cambio se debe llamar a métodos en el objeto
ContentResolver.
Existen métodos diferentes para la activación de cada tipo de componente:

 Puede iniciar una actividad (o indicarle algo nuevo por hacer) mediante pasar a un
intent el startActivity() o startActivityForResult() (cuando desea que la actividad
devuelva un resultado).  Ejemplo de código para llamar o iniciar una Actividad:

Intent i = new Intent(this, NombreDeActividad.class );


startActivity(i);

 Puede iniciar un servicio (o dar nuevas instrucciones a un servicio continuo) mediante


pasar a un Intent el StartService(). O se puede enlazar con el servicio mediante
bindService().
 Puede iniciar una transmisión broadcast mediante pasar a un intent los métodos
sendBroadcast (), sendOrderedBroadcast(), o sendStickyBroadcast().
 Puede realizar una consulta a un proveedor de contenido llamando a query() en un
ContentResolver .

3.1.4 El archivo Manifest


Antes de que el sistema Android puede iniciar un componente de aplicación, el sistema debe
saber que existe el componente mediante leer el archivo AndroidManifest.xml.  Su aplicación
debe declarar todos sus componentes en este archivo, que debe estar en la raíz del directorio
del proyecto de su aplicación.
El archivo Manifest, además de declarar los componentes de la aplicación, hace una serie de
cosas más tales como:

 Identificar los permisos de usuario que la aplicación requiere, como el acceso a


Internet o el acceso de lectura a los contactos del usuario.
 Declarar el mínimo nivel API requerido por la aplicación, a partir del cual se podrá usar
la aplicación.
 Declarar características de hardware y software utilizados o requeridos por la
aplicación, como cámara, bluetooth, o una pantalla multitouch.
 Declarar otras bibliotecas de APIS que su aplicación necesita (que no sean del
framework de Android), como la biblioteca de Google Maps.
 Y otras más que repasaremos más adelante.

3.2 Instalación de entorno de desarrollo y configuraciones


Antes de iniciar cualquier trabajo de desarrollo de una aplicación para Android, el primer paso
es instalar y configurar una plataforma o entorno de desarrollo.  Las 2 plataformas de
desarrollo para Android más utilizadas son:  Eclipse y Android Studio.

Eclipse ha sido por mucho tiempo el entorno de desarrollo oficial de aplicaciones Android. 
Para la instalación de este entorno es necesario seguir los siguientes pasos:

1. Instalar el JDK (Java Development Kit).


2. Instalar el IDE Eclipse.  Puede utilizarse la distribución IDE for Java EE Developers o
Eclipse IDE for Java Developers.
3. Download the Android SDK (Software Development Kit).
4. Install the ADT (Android Development Tools) plugin for Eclipse.
5. Configurar la vinculación entre el ADT con el SDK.

Este proceso siempre tuvo su cierta complejidad, por lo que hay que asegurarse de seguir
detalladamente las instrucciones para cada paso.

A partir del año 2013, Google presentó el nuevo IDE para desarrollo de aplicaciones Android, el
cual a pesar de ser aún una versión beta ha generado una gran migración de desarrolladores
que antes utilizaban Eclipse u otras herramientas.  Las razones son sencillas:

Android Studio es un nuevo entorno de desarrollo de Android basado en IntelliJ IDEA


Considerado hoy el IDE más actual e inteligente de Java.  Proporciona nuevas características y
mejoras sobre Eclipse ADT y será el IDE oficial de Android una vez que esté listo. Además de las
capacidades que se esperan de IntelliJ, Android Studio ofrece:

 Sistema de construcción flexible basado en Gradle.


 Construir variantes y múltiples generaciones APK.
 Plantilla de apoyo ampliado para los servicios de Google y varios tipos de dispositivos.
 Editor de diseño muy potente, con soporte para la edición de temas.
 Herramientas Lint para atrapar el rendimiento, facilidad de uso, compatibilidad de
versiones, y otros problemas.
 ProGuard y capacidades de firma de aplicaciones.
 El soporte integrado para Google Cloud Platform, lo que facilita la integración de
Google Cloud Messaging y App Engine.

La siguiente tabla obtenida de la web developer.andorid muestra algunas diferencias clave


entre Android Studio Beta y Eclipse con ADT.

En nuestro caso, considerando las nuevas opciones,  ventajas y el soporte completo que
Google está dando a este nuevo IDE, Hemos optado por utilizar Android Studio para este
curso.  Por lo tanto, debes considerar que todos los ejercicios planteados, así como los
exámenes, preguntas y ejercicios propuestos que debes realizar, debe hacerse utilizando esta
herramienta.  El Sistema operativo sobre el cual trabajaremos es Windows.  Aunque esto es
indiferente, Android Studio funciona también en Linux y en Mac.
3.2.1 Instalando Android Studio
Habiendo hablado antes de las ventajas de Android Studio.  Empezamos comentando la
instalación, indicando que los pasos también ahora, son mucho más sencillos (Comparado con
instalar y configurar el entorno utilizando Eclipse).  Solo se necesita lo siguiente:
1. Instalar el JDK (Java Development Kit).  Android Studio está desarrollado en Java, por
lo tanto requiere de este JDK para funcionar.  Descargamos desde Download JDK.
2. Instalar el IDE Android Studio.  Descargamos desde Download Android Studio 

Luego que ha quedado instalado el JDK, en algunas computadoras con Windows suele pasar
que no está correctamente configurada la variable JAVA_HOME en el sistema operativo, por lo
que, el Android Studio no podrá instalarse o iniciar ya que no encuentra el JAVA.   Por lo tanto,
luego de haber instalado el JDK, debemos asegurarnos de configurar de la manera adecuada la
variable JAVA_HOME.  Para esto debemos seguir los siguientes pasos:

Click menú Inicio
anticlick en Equipo
Seleccionamos Propiedades del Sistema
Clic en Configuración Avanzada del Sistema en la parte superior izquierda y en la pestaña
de Opciones Avanzadas
Clic en Variables de Entorno.

En la sección Variables del Sistema. Clic en el botón “Nueva...”.  y Colocamos lo siguiente:

Nombre de la variable:  JAVA_HOME


Valor de variable: C:\Program Files\Java\jdk_version_de_java

En el valor de la variable, asegúrate de colocar la ruta exacta del JDK que haz instalado. Si
instalaste una versión de 64 bits estará en:

“C:\Program Files\Java\jdk_version_de_java” y si utilizaste la versión de 32 bits o x86 estará en


“C:\Program Files(x86)\Java\jdk_version_de_java”.  Luego click en Aceptar.

Instalar Android Studio es sencillo, solo debemos dar doble click en el ejecutable que hemos
descargado y seguir los pasos del instalador.   

Una vez que lo tenemos instalado, iniciamos Android Studio.  Si usted ve un pop-up verde que
le alerta de nuevas actualizaciones, haga clic en "Buscar actualizaciones ahora" en la parte
inferior de la ventana de bienvenida, o también otra forma de actualizar el IDE es una vez
dentro, elegir el menú Help y “Check for Update”.

Una vez instaladas las actualizaciones es mejor reiniciar Android Studio.

Instalando Imágenes de sistemas y herramientas desde el SDK Manager

Un aspecto vital para el desarrollo con Android es el SDK, del cual ya hablamos al inicio de este
documento.  Android Studio cuenta con una herramienta llamada el SDK Manager desde la
cual podemos instalar imágenes de Sistemas para emular Android con el fin de probar nuestras
aplicaciones y otras herramientas y librerías que nos serán útiles en nuestro desarrollo.

Una vez que hemos iniciado Android Studio.  En la ventana "Welcom to Android Studio". 
Seleccione Configure -> SDK Manager

Desde este gestor del SDK, podrás ver muchos paquetes que se pueden instalar. Por el
momento, bastará con seleccionar sólo los casillas ilustradas en la siguiente imagen y proceder
a su instalación.  Acepte la licencia para cada conjunto de paquetes para completar la
instalación. Puede que tenga que instalar cada conjunto de paquetes por separado, ya que
están bajo licencias separadas.  

Trabajaremos solo con la API 19, la API 20 es para aplicaciones para relojes, la API 21 todavía
está en preview pueden cambiar algunas cosas, aún no puedes subir aplicaciones a Google
Play dirigidas para esta API.

El paquete extra “Android suppot library” es para compatibilidad en reversa, es decir para
lograr que nuestra aplicación pueda ser ejecutada en versiones de Android inferior a la API que
se utilizó para desarrollarla.  Este paquete siempre debemos instalarlo.

Primero check en “deselect All”  para deseleccionar todos los paquetes que por defecto
intentan instalarse.  Luego seleccionamos la API 19 y el paquete extra “Android suppot library”
y procedemos a instalar.

Eso es todo, ahora ya estamos listo para crear nuestra primera aplicación Android.

3.3 Construyendo nuestra primera aplicación


En la ventana de Bienvenida de Android, elegimos “New Project”.

Colocamos el nombre de nuestra aplicación, es el nombre con el que se identificará en el Play


Store.

El nombre de dominio de la empresa (Company Domain) se utiliza para identificar de forma


única su aplicación.  Así, incluso si dos empresas diferentes crean aplicaciones de Android con
el mismo nombre, estas se pueden diferenciar debido a sus nombres de dominio de cada
empresa los que serán diferentes.  Si usted tiene una empresa, escriba el nombre de dominio
de su empresa.  Si usted no tiene ninguna empresa, puede simplemente elegir un nombre de
dominio de empresa ficticio.  Por ser la primera aplicación esto no importa tanto.  Sólo si va a
liberar su aplicación en el Play Store, entonces el nombre de dominio de la empresa sí importa.

La ubicación del proyecto (Project Location) es un directorio en su disco duro en el que desea
guardar todos su proyecto Android Studio.  Es recomendable crear una carpeta en el que se
almacenan todos sus proyectos Android Studio. Bajo esa carpeta cada proyecto tendrá su
propio subdirectorio.  

En esta pantalla se le pide que seleccione los dispositivos donde su aplicación se ejecutará.
Form factors significa tamaños de pantalla y tipos de dispositivos.  En este caso seleccionamos
solo la opción "Phone and Tablet" y dejar el resto sin seleccionar.

En esta ventana también debemos elegir el “Minimium Sdk”, es decir la versión mínima
permitida para que un dispositivo pueda instalar nuestra aplicación.  Para esto, Android Studio
nos ayuda a elegir esta versión dando clic en la opción “help me choose” donde aparecerá la
siguiente ventana.

Como podemos observar en esta ventana, vemos las versiones de Android con su respectivo
número de API.  A la vez podemos ver el porcentaje de dispositivos que tienen instalada la
versión.  Por otro lado, en la parte derecha vemos las características a las que tenemos acceso
al dar clic en cada versión.  En nuestro caso, elegimos la API 15 que corresponde a la versión
4.0 de Android puesto que es una versión que ya está muy difundida y a la vez tenemos
muchas características de la API que podemos utilizar en nuestro desarrollo.  Elegimos la API
15 y presionamos OK.

En esta tercera pantalla se nos solicita añadir una actividad (Activity) a su aplicación.  Las
actividades son similares a las ventanas en una aplicación de escritorio.  Por lo tanto, debemos
tiene que elegir lo "ventana" o "pantalla" que nuestra aplicación utilizará.  Una aplicación
Android puede utilizar más de una activity, pero en este caso sólo seleccionamos "Blank
Activity". Luego clic en "Siguiente".

En esta cuarta debemos elegir un nombre de la Activity, nombre del Layout y un título. 
Aceptemos estos nombre que nos sugiere el mismo IDE.  A la vez aprovechemos para analizar
como el IDE aplica estos nombres aplicando una convención estándar y relacionada entre el
nombre del Activity y el nombre del layout.  Más adelante hablaremos un poco más de estos
Activitys con sus Layouts.

Al hacer clic en el botón "Finalizar" Android Studio se toma un poco de tiempo para crear su
nuevo proyecto y luego muestra la siguiente ventana: 

Ahora ya tenemos nuestro primer proyecto Android y cómo podemos observar el mensaje que
nos coloca en la pantalla es “Hello Word”.  Sin embargo, esto no es nuestra aplicación
ejecutándose, sino que es el Editor de diseño visual con el que cuenta Android Studio, el cual
nos permite previsualizar el Layout de los Activitys que tengamos en nuestro proyecto.

Por lo tanto ahora nos queda ejecutar nuestra aplicación.  Antes conozcamos de forma rápida
la organización y estructura de nuestro proyecto en Android Studio.

3.3.1 Conociendo el entorno de nuestro proyecto


La organización de nuestro proyecto en Android Studio es muy sencilla.  A continuación
veamos una imagen con las carpetas principales que debemos tener en cuenta:

Como un dato adicional, para quienes habían usado Eclipse, podemos ver algunos
archivos .gradle y una carpeta gradle, los cuales como se indica en la figura no debemos
manipular.  El editor se encarga de estos.

Como hemos mencionado anteriormente Gradle es la nueva herramienta para automatizar la


construcción de los proyectos Android.  Es muy flexible para la configuración.  Es una
herramienta usada por grandes proyectos Open Source como “Spring”, “Hibernate”, y “Grails”.
(También lo usan empresas como “LinkedIn” para sus proyectos).  Permite importar librerías
de forma automática (manejo de dependencias), pruebas unitarias y configurar un proyecto de
manera más sencilla.  Maneja compilaciones incrementales.  Verifica si hubo algún cambio en
el código fuente después de la última compilación, si es así re-compila todo, si no se ahorra la
tarea.
Como podemos notar en esta estructura principal entonces, nuestra preocupación principal es
solo la carpeta app que contiene todos los archivos de nuestra aplicación y es la carpeta donde
vamos a trabajar.

Ahora observemos nuestra carpeta app de forma más profunda:

Vamos a describir cada una de las carpetas de nuestra aplicación:

 Carpeta /src/

Contiene todo el código fuente de la aplicación, código de la interfaz gráfica, clases auxiliares,
etc. Inicialmente, Andorid Studio creará por nosotros el código básico de la pantalla (Activity)
principal de la aplicación, siempre bajo la estructura del paquete java definido.

 Carpeta src/main/java

Contiene todo el código fuente de la aplicación, código de la interfaz gráfica, clases auxiliares,
etc. Inicialmente, Eclipse creará por nosotros el código básico de la pantalla (Activity) principal
de la aplicación, siempre bajo la estructura del paquete java definido.

 Carpeta src/main/res

Contiene todos los archivos de recursos necesarios para la aplicación: audio, videos, bases de
datos, cadenas de texto, layouts, etc.  Los diferentes tipos de recursos se deberán distribuir
entre las siguientes carpetas:
/res/drawable/. Contienen las imágenes de la aplicación. Se puede dividir en: /drawable-ldpi,  
/drawable-mdpi, etc para utilizar diferentes recursos dependiendo de la resolución del
dispositivo. 

Más información podemos revisar aquí:  


http://developer.android.com/guide/practices/screens_support.html

La idea es proporcionar múltiples copias de cada imagen de recursos a diferentes resoluciones


y almacenarlos en las carpetas nombradas respetando las siguientes reglas:

res/drawable-ldpi/ (densidad baja) 75% del tamaño de las imágenes almacenadas en la


carpeta drawable-mdpi.   El ícono debe ser de 36*36 píxeles.

res/drawable-mdpi/ (densidad media) El ícono debe ser de 48*48 píxeles.

res/drawable-hdpi/ (densidad alta) 150% del tamaño de las imágenes almacenadas en la


carpeta drawable-mdpi.  El ícono debe ser de 72*72 píxeles.

res/drawable-xhdpi/ (densidad muy alta) 200% del tamaño de las imágenes almacenadas en la


carpeta drawable-mdpi.  El ícono debe ser de 96*96 píxeles.
 
/res/layout/. Contienen los ficheros de definición de las diferentes pantallas de la interfaz
gráfica.  Todos los XML que son las pantallas de nuestra aplicación.  Para definir distintos
layouts dependiendo de la resolución y orientación del dispositivo se puede dividir
subcarpetas:

res/layout/.  Layouts para pantallas de tamaño normal ("default")

res/layout-large/.  Layouts para pantallas grandes

res/layout-xlarge/.  Layout para pantallas extra grandes

res/layout-land/.   Layouts para pantallas que se encuentran en orientación landscape


 
/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.

/values-v21/.  Este y otros sufijos, se emplean para definir recursos independientes para


determinados dispositivos según sus características. Por ejemplo, los recursos de “values-v21”
se aplicarían tan sólo a dispositivos cuya versión de Android sea la 5.0 (API 21) o superior.

Luego de haber detallado la estructura de nuestra aplicación en Android Studio vamos a


proceder a ejecutar nuestra aplicación.  

3.3.2 Ejecutando nuestra aplicación


Tenemos 2 formas esenciales de hacerlo:

1.- Utilizar nuestro propio dispositivo Android

Es la forma más rápida de testear nuestras aplicaciones y ver su funcionamiento real en un


dispositivo.  La guía oficial y más información puedes encontrar en:
http://developer.android.com/intl/es/tools/device.html#setting-up
2.- Utilizar un dispositivo virtual Android (AVD)

Es mucho más lento que el primero, pero nos ayuda a testear nuestras aplicaciones cuando no
contamos con un dispositivo Android a la mano.  La guía oficial y más información puedes
encontrar en: http://developer.android.com/intl/es/tools/devices/index.html
Para ambos casos, Además puedes revisar esta guía paso a paso o esta otra las cuales pueden
resultar muy útiles para poder utilizar cualquiera de las 2 opciones y ejecutar nuestra
aplicación. 

Un dispositivo virtual Android o AVD es una configuración del emulador, lo que permite crear
un modelo de un dispositivo Android.  Esto hace que sea posible probar el funcionamiento de
nuestras aplicaciones en una amplia gama de dispositivos de una forma fácil. Con un
dispositivo virtual de Android, se puede especificar el hardware y el software del emulador de
Android que quieres emular.

La mejor forma de crear un dispositivo virtual de Android es a través del AVD Manager, que se
puede acceder seleccionando Android > AVD Manager desde el menú Tools. 

Desde esta ventana podemos crear y administrar todos nuestros dispositivos virtuales
Android.  Para crear uno, debemos dar clic en el botón “New” y nos mostrará la siguiente
pantalla, donde podemos elegir y colocar los datos que se muestran a continuación:

Para utilizar su AVD recién creada, seleccione de la lista en el administrador de AVD, y haga clic
en Inicio ... a la derecha.  Si su AVD está correctamente configurado, el emulador de Android
debería lanzar una aplicación como se muestra en la
siguiente imagen.
Con el emulador de Android ya en marcha, es el momento de ejecutar su aplicación
seleccionando Run 'App' del menú Run.

Una de las grandes debilidades de utilizar un AVD para testear nuestras aplicaciones es la
lentitud de ejecución de nuestra aplicación en el emulador.  Algunas opciones que ahora se
aplican para mejorar y solucionar este problema son las siguientes:

Instalar genymotion

Genymotion es un tercer emulador que es mucho más rápido que el emulador por defecto en
Android Studio. Puede revisar las instrucciones sobre cómo descargar e instalar genymotion.
Es necesario registrarse para obtener una cuenta gratuita con genymotion con el fin de
descargar el software. 

Configuración de VM Aceleración

Alternativamente, se puede brindar la aceleración de la máquina virtual utilizando el emulador


nativo de Android Estudio para Windows.  Esto requiere la instalación del paquete de Intel
HAXM (enumerados en "Extras" del Manager SDK).  Puedes revisar las instrucciones
disponibles de Intel aquí.

También podría gustarte