Desarrollo
Android:
Acercamiento
al desarrollo de aplicaciones en Android Studio
Integrantes:
-
Marcelo Araya
-
Gabriel Fuentes
Vergara
Profesor:
-
Agustín González
Ramo:
-
ELO390: Diseño y
Programación Orientada a Objetos
Del Proyecto
El
desarrollo de aplicaciones Android, define hoy un campo laboral y área de trabajo
tan amplio como la necesidad del usuario o la creatividad del desarrollador lo
permita, por lo cual, como equipo buscamos documentar a través de un proyecto
de implementación de una aplicación, los conceptos y términos básicos que
cualquier persona se encontrará al indagar al respecto, sumado a los errores
comunes y problemas de compatibilidad. En otras palabras, más que resolver un problema, lo que se bucaba
con el proyecto era aprovechar la instancia de el tener que desarrollar un proyecto relacionado con
las materias del ramo para asi investigar y aprender
sobre un tema que no se vió con mucha profundidad pero que nos pareció interesante.
Glosario
y contexto de desarrollo:
Para
nuestro caso, utilizaremos el entorno de desarrollo Android Studio, creado por ingenieros
de Google, el cual facilita gran cantidad de problemas y permite el trabajo
colaborativo, tanto de códigos y lógica del programa, como del diseño gráfico
mismo de la aplicación. Al adentrarse en el uso de esta herramienta,
encontraremos conceptos variados y en gran cantidad, cuyo entendimiento
facilitará inmensamente el avance de cualquier proyecto. Para esto, hemos recopilado
el siguiente glosario de conceptos vitales:
1) Gradle:
Gradle
es un sistema de compilación que reúne en uno solo las mejores prestaciones de
otros sistemas de compilación. Está basado en JVM (Java Virtual Machine), lo
que significa que puedes escribir tu propio script en java, y que Android
Studio lo entenderá y lo usará.
Se
manejan, además, archivos .xml para definir los
parámetros de compilación.
Lo
mejor de Gradle es que es un plugin, lo que facilita
su actualización y su exportación de un proyecto a otro. Esto significa que
puedes tener tu propio lenguaje de programación y automatizar el proceso de
compilación en un solo paquete (de la misma manera que un jar
en caso de Java) y poder distribuirlo al resto del mundo.
<
2) AVD:
La definición de un Android Virtual Device (AVD) te
permite definir las características de un teléfono Android, una tablet, o un dispositivo Android Wear
o Android TV que desees simular en Android Emulator.
Esta herramienta nos permite visualizar y probar nuestra aplicación bajo
distintas pruebas simuladas, dentro de un emulador cuyos parámetros son
ajustables, permitiendo estudiar la respuesta de una aplicación bajo distintas situaciones
posibles (batería baja, al minimizar, activación de periféricos, giro de
pantalla, etc.)
3) SDK:
El SDK (Software Development
Kit) de Android, incluye un conjunto de herramientas de desarrollo. Comprende
un depurador de código, biblioteca, un simulador de teléfono basado en QEMU(**), documentación, ejemplos de código y tutoriales.
Este kit, permite el desarrollo multiplataforma, facilitando la compatibilidad de
la aplicación con cada dispositivo disponible? en el mercado.
**QEMU es un emulador de procesadores basado
en la traducción dinámica de binarios (conversión del código binario de la
arquitectura fuente en código entendible por la arquitectura huésped).
4) API:
Una API (siglas de ?Application
Programming Interface?) es un conjunto de reglas
(código) y especificaciones que las aplicaciones pueden seguir para comunicarse
entre ellas:
sirviendo de interfaz entre programas diferentes de la misma manera en que la
interfaz de usuario facilita la interacción humano-software.
Las API son valiosas, ante todo, porque permiten hacer uso de funciones ya existentes
en otro software (o de la infraestructura ya existente en otras plataformas)
para no estar reinventando la rueda constantemente, reutilizando así código que se sabe
que está probado y que funciona correctamente.
5) Activity:
Una Activity es un
componente de la aplicación que contiene una pantalla con la que los usuarios
pueden interactuar para realizar una acción, como marcar un número telefónico,
tomar una foto, enviar un correo electrónico o ver un mapa. A cada actividad se
le asigna una ventana en la que se puede dibujar su interfaz de usuario. La
ventana generalmente abarca toda la pantalla, pero en ocasiones puede ser más
pequeña que esta y quedar "flotando" encima de otras ventanas. Las diferentes
instancias de la clase Intent (nativa de Android Studio), permiten
definir el proceso en el cual el usuario intenta pasar de una Activity a otra.
6) Resources:
Directorio del proyecto, que maneja los
recursos gráficos, Layout's, y los Values. Estos últimos, son archivos .xml
que manejan la organización de los Strings, colores y
estilos del diseño de la interfaz gráfica.
7) Layout:
Se define un Layout como una estructura visual para una
interfaz de usuario, es decir, aquello que hace de intermediario entre el
terminal móvil y el usuario.? Un elemento
de una interfaz de usuario (widgets o Layouts) se
puede declarar desde un fichero XML o en tiempo de ejecución de la aplicación.
Además, Android Studio permite realizar esta edición de manera gráfica,
pudiendo agregar a cada?
View elementos básicos de manera sencilla, y de manera paralela,
se actualizan los archivos .xml automáticamente.
8) Manifiesto:
Todas las
aplicaciones deben tener un archivo AndroidManifest.xml (con ese nombre exacto)
en el directorio raíz. El archivo de manifiesto proporciona información
esencial sobre tu aplicación al sistema Android, información que el sistema
debe tener para poder ejecutar el código de la app.
Entre otras cosas,
el archivo de manifiesto hace lo siguiente:
9) Java:
Cada Activity
definida, tiene por defecto un código Java. Este tiene una clase hija que
hereda de AppCompatActivity (o de Activity,
dependiendo de los parámetros especificados al crearla) las cualidades por
defecto de una Activity, tanto atributos de clase,
como los métodos básicos para inicializarse automáticamente al abrir la
aplicación desde un dispositivo.
Diagrama de Clases:
Desde la aplicacion Android Studio se genera el
diagrama de clases correspondientes al codigo creado. De estas clases solo las clases Calculadora y MainActivity
fueron creadas por nosotros, el resto son clases que vienen desde las librerias del programa
Demostracion y problemas encontrados:
Durante nuestro avance, debemos destacar que
una de las primeras problemáticas encontradas, era respecto al vasto (y nuevo)
vocabulario de trabajo tanto para programar/diseñar, como al momento de navegar
e investigar para resolver alguna duda en particular. Esto ameritó bastante
tiempo de estudio y recopilación de definiciones (algunas de ellas están
incluidas en este informe), para en una etapa posterior, comenzar a
desarrollar.
Por otro lado, existe gran complejidad al manejar
código y diseño de manera multiplataforma, esto debido a la inmensa cantidad de
versiones, SDK?s y dispositivos disponibles tanto
para pruebas físicas (con un dispositivo real), como para pruebas simuladas por
medio del AVD. Entender el concepto de API, y asegurar un trabajo previo de
orientar el trabajo a ciertas versiones de Android, buscando un equilibrio
entre compatibilidad, porcentaje de dispositivos que correrán la aplicación, disponibilidad
de periféricos, entre otros, es esencial para el correcto desarrollo de una
aplicación Android. La problemática anterior se puede suplir por medio del
estudio de los conceptos anteriores, sumado a la vita importancia del manejo de
excepciones al programar (en Java, para nuestro caso, se debió dar constante uso
a los bloques try y catch), de tal forma que se pueda
continuar ejecutando el programa con medidas de contingencia para la gran
cantidad de excepciones que se pueden generar para cada versión de Android.
A continuacion se muestran unas imagenes de la aplicacion funcionando
en un celular
Decarga de codigos
Click aqui
para descargar los codigos