Primeros pasos para la implementación de aplicaciones para dispositivos Android.

1. Presentación

Este proyecto es una introducción al desarrollo de aplicaciones Android.

2. Competencias

En esta proyecto se trabajarán las siguientes competencias:
  • Capacidad para entender cómo funciona el sistema operativo Android.
  • Capacidad para crear una aplicación para dispositivos Android.

3. Objetivos

Los objetivos de esta artículo son que el estudiante aprenda a:
  • Configurar un entorno de desarrollo integrando todas las herramientas necesarias para desarrollar aplicaciones Android.
  • Crear un proyecto Android y conocer los elementos que lo conforman.
  • Crear un dispositivo virtual (Android Virtual Device) para utilizarlo como emulador y/o configurar los drivers de un dispositivo móvil para poder utilizarlo para hacer pruebas.
  • Ejecutar una aplicación Android en el emulador y/o dispositivo físico real.

4. Ejercicios

Valoración de un 20%. Leer el siguiente artículo sobre Android donde se describen diferentes mitos relacionados con este sistema operativo. Responded a las siguientes preguntas:
  • ¿Qué tipo de mitos desmonta el artículo?

  • Todos aquellos mitos que critican o intentan desmontar la propia definición de Android como Software Libre. Como podemos observar en el documento de Robert Ramírez Vique podemos definir Android como:

    Una solución completa de software para dispositivos móviles. Incluye toda una pila de aplicaciones, como el sistema operativo, el middleware y las aplicaciones clave. También incluye herramientas para desarrollar en la plataforma, principalmente con el lenguaje de programación Java. Todo ello bajo licencia de código libre Apache.

    Es decir, Android es un software libre, implementado para ser utilizado en todo tipo de dispositivos independientemente de su hardware a diferencia de otros sistemas operativos como IOS de Apple. Entre los mitos que desmonta el artículo nos encontramos:
    • Las aplicaciones Google son instaladas por defecto en aquellos dispositivos con licencia válida. Esta práctica (muy habitual en otros sistemas operativos como Red Hat o Microsoft) es criticada por determinados artículos. Realmente no es para ayudar a Google a expandirse suprimiendo una posible competencia sino el cliente que quiere obtener un dispositivo con licencia Oficial espera obtener dichas aplicaciones.
    • Los servicios de Google definen Android. Este mito es totalmente falso, por ejemplo en China donde Google está en continua confrontación con el gobierno Chino solamente el 80 por ciento de los S.O. tiene incluido estos servicios.
    • Android no es de código abierto. Como hemos dicho anteriormente, es un código bajo la licencia libre de Apache. Aunque es cierto que las empresas más grande son las que reciben primero las versiones de pruebas de la distribución.
    • Android no es Linux. No es cierto, se basa en un Kernel Linux.
    • Google cobra una tarifa de licencia para los servicios de Google Mobile. Falso, hay una cuota para crear dispositivos "oficiales" o incluso mejor dicho, certificados.

  • ¿Por qué hay discusión sobre si Android es de código abierto o no?

  • Rotundamente sí. No solamente en el artículo estudiado sino que en diferente fuentes podemos leer definiciones como la siguiente:

    Plataforma totalmente libre basado en Linux que permite desarrollar aplicaciones y/o modificar las ya existentes con lenguaje de Java.

    Dicho esto, otros puntos en los cuales nos basamos son las siguientes:
    • Su núcleo está basado en el kernel de Linux, en el que se han realizado algunas modificaciones para adaptarlo a las necesidades de Android (dispositivos donde es necesario optimizar al máximo su hardware). Esto sirve como capa de abstracción del hardware al que tienen que acceder las aplicaciones. De esta manera, si se necesita un elemento hardware, la aplicación simplemente pedirá el recurso en genérico, sin tener que conocer el modelo exacto de hardware. Por ejemplo, si queremos acceder a la cámara, no importará el tipo, la definición ni el fabricante, simplemente accederemos a la cámara mediante el driver correspondiente.

    • Realmente este hecho nos otorga libertad para realizar modificaciones en su Kernel y independencia completa del hardware que estemos utilizando
    • La licencia de Android es la de código libre de Apache. Cualquier persona que lo desee puede obtener el código, modificarlo y distribuirlo de forma gratuita y sin ninguna restricción. Otra cosa diferente será si deseamos que Google certifique nuestra distribución como válida según sus criterios, ya que para ello tendrá que cumplir una serie de requisitos.
  • ¿Estás de acuerdo con las conclusiones del artículo? ¿Cuál es tu opinión?

  • En gran parte sí que estoy de acuerdo. Según mi opinión, toda la información que se muestra en el texto es verídica y los mitos realmente serán falsos o erróneos como ellos bien indican.

    Ahora bien, hay un mito (Google cobra una tarifa de licencia para los servicios de Google Mobile) que no es cierto pero si juega un poco en la ambigüedad. Es decir, considero que Google tiene que controlar un poco como evoluciona este sistema operativo y cómo evolucionan las nuevas distribuciones para cada uno de los hardware. Su manera de actuar, me imagino, que será pidiendo la distribución a certificar y analizara que cumpla algunos requisitos mínimos de seguridad.

    Este hecho puede ser que otorgue un sobre coste al dispositivo pero también evita posibles incidencias. Si, por ejemplo, un usuario busca un dispositivo más económico, puede acceder al mercado a dispositivos sin certificar, que no nos da tanta seguridad pero sí un coste más reducido.

    Dicho esto, está clarísimo que Android es un software libre,multidispositivo y modificable.
Valoración de un 25%. Instala y configura Android Studio, el IDE oficial y recomendado para el desarrollo de aplicaciones Android. La web de descarga de Android Studio es la siguiente:

Descarga

La web detecta automáticamente el sistema operativo del ordenador. Sólo se debe apretar el enlace de descarga.El paquete descargado incluye todas las herramientas necesarias para comenzar a desarrollar aplicaciones:
  • Android Studio IDE
  • Herramientas Android del SDK
  • Herramientas de la plataforma Android
  • La última versión de la plataforma Android
  • La última imagen del sistema para el emulador
  • ¿En qué sistema operativo has instalado Android Studio? Explica si has tenido alguna incidencia durante el proceso.
  • Version Ordenador
    1.Version Ordenador

    El problema que he tenido se ha encontrado en la figura [2] . La solución que he aportado al sistema es actualizar la versión de java a una versión de 64 y actualizar esta variable de entorno.

    Problema
    2.Problema

  • Periódicamente aparecen nuevas versiones de Android y con ellas nuevas versiones del SDK oficial de Android. Si hubiera un nuevo cambio de versión, indica cómo acceder a la ventana que permite actualizar la versión más reciente del SDK.

  • En la figura [3] hay un círculo verde donde podemos ver el botón que nos da acceso a las versiones del SDK oficial.

    Actualizar SDK
    3.Actualizar SDK

    Una vez abierto nos aparece la figura [4]

    Versiones SDK<
    4.Versiones SDK

  • Una vez abierto el SDK Manager, instala el paquete Google USB driver y Google Play Services. Adjunta una captura de pantalla.

  • Para instalar Google USB driver hemos accedido al SDK Manager como en el apartado anterior y hemos activado el check de instalar en el color azul. En la figura [5] hemos indicado Apply para actualizar el sdk.

    Instalar Google USB driver
    5.Instalar Google USB driver

    Una vez actualizado ya tenemos instalado Google USB driver y Google Play Services como se muestra en la figura [6]

    Instalar Google USB driver y Google Play Services
    6.Instalar Google USB driver y Google Play Services

  • Android Studio también se va actualizando cada cierto tiempo. Indica qué pasos se deben seguir para obtener la última actualización y dónde podríamos ver qué novedades incorpora.

  • En un circulo de color rojo he marcado la forma para acceder a las actualizaciones desde dos formas diferentes tal como se muestra en las figuras [7 a] y [7 b]

    Actualizar Android Studio

    Actualizar Android Studio
    7 Actualizar Android Studio

Valoración del 20%. El proceso de desarrollo de las aplicaciones sigue un ciclo de codificar, compilar y ejecutar en un entorno de pruebas. Las aplicaciones Android se pueden testear en un dispositivo Android físico o en un dispositivo virtual Android, Android Virtual Device (AVD). Los AVDs se crean y administran mediante la herramienta ‘Android Virtual Device Manager’ que puede ser utilizada como una herramienta de línea de comandos o mediante una interfaz gráfica desde el propio IDE. Al crear un AVD para simular un modelo específico de dispositivo Android es importante que el dispositivo virtual se configure con una especificación de hardware que coincida con la del dispositivo físico que se quiere simular.
  • Mediante Android Studio, crea un dispositivo virtual Android. Este dispositivo virtual debe tener las siguientes características:
    • Nexus 5 con una pantalla de 4’95”
    • Última API disponible
    • La cámara del detrás debe ser la de la webcam
    • Almacenamiento interno de 400MB.
    • SD card de 500MB.
    Indica las características de software y hardware que has elegido para generar el AVD (tipo de dispositivo, versión del sistema operativo, número de API, memoria, etc) y adjunta capturas de pantalla de las configuraciones.

    Una vez configurado, arranca el emulador y explica si ha habido alguna incidencia durante el proceso. En caso contrario, adjunto una captura de pantalla del emulador. NOTA: Si la resolución de este dispositivo es demasiado grande y no se ve bien en la pantalla de vuestro ordenador, escoged otro dispositivo con una resolución menor justificando la elección.

    La configuración del dispositivo se ha realizado de la siguiente manera:
    • Nexus 5 con una pantalla de 4’95”

    • Nexus 5 con una pantalla de 4’95
      8 Nexus 5 con una pantalla de 4’95”

    • Última API disponible

    • Api
      9.API

    • La cámara del detrás debe ser la de la webcam

    • Cámara
      10.Cámara

    • Almacenamiento interno de 400MB y SD card de 500MB.

    • 11 Almacenamiento interno de 400MB y SD card de 500MB

    El resultado obtenido se puede observar en la figura [12]

    Motorola G
    12.Motorola G

  • (OPCIONAL) Si dispones de un dispositivo móvil con sistema operativo Android configura los drivers para que Android Studio reconozca el dispositivo cuando se conecte al ordenador. Indica qué dispositivo has conectado y explica los pasos que has seguido.

  • En este caso el dispositivo a emular ha sido un Motorola G. La verdad es que al ser un dispositivo de 5 pulgadas no ha variado mucho el resultado obtenido en el dispositivo de Nexus 5. El resultado se puede observar en la figura [13]

    13 Motorola G

Valoración del 35%. Una vez creado y configurado el AVD, el siguiente paso es crear una aplicación sencilla y ejecutarla en el emulador o el dispositivo móvil.Tal y como se explica en el apartado 2.2. de la wiki, el primer paso para crear una aplicación es crear un proyecto en Android Studio.

  • Crea un proyecto Android mediante Android Studio (escoge el tipo de proyecto “Blank Activity”). Explica todos los parámetros seleccionados para la creación del proyecto y justifica el motivo de su elección.

  • Para realizar esta tarea he realizado una serie de capturas a la aplicación Android Studio y además explicare los motivos que me han llevado a la selección de estas configuraciones. El segundo de los datos indicados tan sólo se utilizará como paquete de nuestras clases java.
    • Primero de todo vamos a hacer una elección del nombre del nuevo proyecto en la figura [14] . El nombre será PrimeraAplicacion y el dominio 1938.com.es.
    • Nombre del proyecto
      14 Nombre del proyecto

    • El segundo punto del proceso es la elección de la versión de Android que vamos aplicar. En la figura [15] utilizamos el asistente para la elección y utilizamos la información que nos muestra el visual estudio sobre cada versión en la figura [16] . Nosotros nos centraremos en aplicaciones para teléfonos y tablets, en cuyo caso tan sólo tendremos que seleccionar la API mínima (es decir, la versión mínima de Android) que soportará la aplicación. En esta aplicación nos centraremos en Android 4.0.3 como versión mínima ya que según la información que nos proporciona android studio una aplicación en esta versión puede ser ejecutada en el 94% de los dispositivos. Aparte de eso nos proporciona todas las extensiones que deseamos.
    • Elecciones de la Versión de Android
      15 Elecciones de la Versión de Android

      Características de la versión de Android
      16 Características de la versión de Android

    • En la siguiente pantalla del asistente elegiremos el tipo de actividad principal de la aplicación. Según el enunciado es una actividad de “ventana” o “pantalla” eligiendo el modelo Blank Activity como muestra la figura [17]
    • Tipo de actividad principal
      17 Tipo de actividad principal

    • Una vez terminado este proceso obtenemos como último resultado la siguiente figura [18]
    • Resultado del asistente
      18 Resultado del asistente

  • Una vez creado el proyecto, estudia cómo está estructurado el proyecto y comenta a qué corresponde cada parte. ¿Dónde encontramos….?
    • El icono del proyecto
    • Lo primero que debemos distinguir son los conceptos de proyecto y módulo (figura 19. La entidad proyecto es única, y engloba a todos los demás elementos. Dentro de un proyecto podemos incluir varios módulos, que pueden representar aplicaciones distintas, versiones diferentes de una misma aplicación, o distintos componentes de un sistema (aplicación móvil, aplicación servidor, librerías, …). En la mayoría de los casos, trabajaremos con un proyecto que contendrá un sólo módulo correspondiente a nuestra aplicación principal.

      19 Diferencia entre modelo y proyecto

      Dentro de nuestro módulo, el icono del proyecto se almacena en la ruta mostrada en la figura [20] en un recuadro rojo que se encuentra en la ruta src/main/res/mipmap:

      Ruta donde se almacena el Icono de la aplicación.
      20.Ruta donde se almacena el Icono de la aplicación.

    • El código fuente
    • La ruta que contendrá todo el código fuente de la aplicación corresponde src/main/res/java/ tal como se muestra en la figura [21]

      Ruta donde se almacena el código fuente.
      21 Ruta donde se almacena el código fuente.

    • La interfaz gráfica
    • La figura [22] muestra como en la ruta /res/layout/ que contiene los ficheros de definición XML de las diferentes pantallas de la interfaz gráfica.

      Ruta donde se almacena la interfaz gráfica.
      22 Ruta donde se almacena la interfaz gráfica.

    • Texto de la aplicación
    • La figura [23] muestra como en la ruta /res/values/ que contiene otros ficheros XML de recursos de la aplicación, como por ejemplo cadenas de texto (strings.xml), estilos (styles.xml), colores (colors.xml), arrays de valores (arrays.xml), tamaños (dimens.xml), etc.

      Ruta donde se almacena el texto de la aplicación
      23 Ruta donde se almacena el texto de la aplicación.

  • Explica que definen los siguientes archivos:
    • AndroidManifest.xml
    • El fichero lo hemos encontrado en la siguiente ruta /app/src/main/AndroidManifest.xml tal como muestra en la figura [24]

      Ruta donde se almacena AndroidManifest.xml y su contenido
      24 Ruta donde se almacena AndroidManifest.xml y su contenido

      Este fichero contiene la definición en XML de muchos de los aspectos principales de la aplicación, como por ejemplo su identificación (por ejemplo podemos observar el nombre de la aplicación "Primera Aplicación"), sus componentes (pantallas, servicios,...), o los permisos necesarios para su ejecución.
    • build.gradle (el que corresponde a la aplicación).
    • El fichero /app/build.gradle se muestra en la figura [25]

      Ruta donde se almacena build.gradle y su contenido
      25 Ruta donde se almacena build.gradle y su contenido

      Contiene información necesaria para la compilación del proyecto, por ejemplo la versión del SDK de Android utilizada para compilar, la mínima versión de Android que soportará la aplicación, referencias a las librerías externas utilizadas, etc.

      En un proyecto pueden existir varios ficheros build.gradle, para definir determinados parámetros a distintos niveles. Por ejemplo, en nuestro proyecto podemos ver que existe un fichero build.gradle a nivel de proyecto, y otro a nivel de módulo dentro de la carpeta /app. El primero de ellos definirá parámetros globales a todos los módulos del proyecto, y el segundo sólo tendrá efecto para cada módulo en particular.
  • Cambia el texto del TextView y escribe tu nombre. Adjunta una captura de pantalla.

  • Para ello simplemente tenemos que acudir al fichero que se muestra en la figura [27] y modificar el contenido de la etiqueta "hello_world". Una vez se ha producido la modificación al compilar el código obtenemos como resultado la figura [26] . Otro método diferente para introducir mi nombre como una nueva variable del fichero xml.

    Resultado de cambiar el texto del TextView
    26 Resultado de cambiar el texto del TextView

    Modificar el texto del TextView
    27 Modificar el texto del TextView

  • Añade un Log al final del método onCreate() del archivo MainActivity.java. Como etiqueta (Tag) pon el nombre de la clase y como texto del mensaje tu nombre. Copia la línea de Log utilizada en este apartado.
  • En la figura [28] observamos el resultado de aplicar las modificaciones en el código mostrados en la figura anterior. Mientras tanto en la figura [30] se observa cómo se ejecuta el simulador de la aplicación.

    Resultado de aplicar todas las modificaciones
    28 Resultado de aplicar todas las modificaciones

    Puedes observar en la figura [28] cómo he aplicado un filtro para encontrar el log buscado.

     Modificaciones Aplicadas en el código
    29 Modificaciones Aplicadas en el código

    Móvil funcionando mientras se muestra el log
    30 Móvil funcionando mientras se muestra el log

Bibliografía