C1 Android
C1 Android
NACIONAL
Escuela Superior de Ingeniería Mecánica y Eléctrica
Unidad Culhuacán
ANDROID
Grupo: 6CM24
07 / Mayo / 2021
CUESTIONARIO
1. ¿Qué es Android?
Es un sistema operativo, inicialmente diseñado para dispositivos móviles. En la
actualidad, se instala no sólo en móviles, sino también en múltiples dispositivos,
como tabletas, GPS, televisores, discos duros multimedia, miniordenadores,
etcétera. Incluso se ha instalado en microondas y lavadoras. Está basado en
Linux, que es un núcleo de sistema operativo libre, gratuito y multiplataforma.
2. ¿Qué es una máquina virtual?, ¿Cuál es su utilidad?
Es un software que crea una capa independiente donde se emula el
funcionamiento de una computadora real con todos los componentes de hardware
que necesita para funcionar (disco duro, memoria RAM, tarjetas de red, tarjeta
gráfica, etc.) y que puede ejecutar cualquier sistema operativo o programa, tal y
como lo haría una computadora real.
Son útiles para:
Compilar e implementar aplicaciones en la nube.
Probar un nuevo sistema operativo (SO), incluidas las versiones beta.
Poner en marcha un nuevo entorno para que les resulte más sencillo y
rápido a los desarrolladores ejecutar escenarios de desarrollo y pruebas.
Crear copias de seguridad del sistema operativo.
Acceder a datos infectados por virus o ejecutar una versión anterior de una
aplicación con la instalación de un sistema operativo anterior.
Ejecutar software o aplicaciones en sistemas operativos para los que no se
habían diseñado inicialmente.
3. ¿Cuál es la máquina virtual de Android?
Es una variación de Java llamada Dalvik (o ART a partir de la versión 5.0 de
Android, con plugin ARM) y proporciona todas las interfaces necesarias para
desarrollar fácilmente aplicaciones que acceden a las funciones del teléfono
utilizando el lenguaje de programación Java.
4. ¿Qué significa que Android sea Open Source?
Ni para programar en este sistema ni para incluirlo en un teléfono hay que pagar
nada. Cualquier programador puede descargarse el código fuente, inspeccionarlo,
compilarlo e incluso modificarlo. Por esta razón, hay muchas versiones paralelas
de Android de grupos de desarrollo de muy diferentes fuentes. Sin embargo,
Google, lo ha llevado a un estándar de la industria del desarrollo de Software, por
lo que se sigue, desde entonces, una sola línea de desarrollo. Android, tanto el
sistema operativo, como la plataforma de desarrollo, están liberados bajo la
licencia de Apache. Esta licencia permite a los fabricantes añadir sus propias
extensiones propietarias, sin tener que ponerlas en manos de la comunidad de
software libre.
5. Defina los siguientes términos:
a. Branch de un proyecto o sistema software
Son espacios o entornos independientes para que un desarrollador pueda usar un
código y así pueda trabajar sobre un mismo proyecto sin borrar el conjunto de
archivos originales del proyecto, que da flexibilidad para desarrollar un proyecto.
b. Framework de desarrollo
Es un conjunto de archivos y directorios que facilitan la creación de aplicaciones,
ya que incorpora funcionalidades ya desarrolladas y probadas, implementadas en
un determinado lenguaje de programación.
Su objetivo principal es facilitar las cosas a la hora de desarrollar una aplicación.
c. API’s
Es un conjunto de definiciones y protocolos que se utiliza para desarrollar e
integrar el software de las aplicaciones. Significa Interfaz de Programación de
Aplicaciones. Permiten que sus productos y servicios se comuniquen con otros,
sin necesidad de saber cómo están implementados.
d. SDK
Kit de desarrollo de software (Software Development Kit); es un conjunto de
herramientas que ofrece generalmente el fabricante de una plataforma de
hardware, un sistema operativo (SO) o un lenguaje de programación. Permite que
los desarrolladores creen aplicaciones específicas para la plataforma, el sistema o
el lenguaje de programación.
6. ¿De qué se compone Android?
Núcleo basado en el de Linux para el manejo de memoria, procesos y
hardware.
Bibliotecas open source para el desarrollo de aplicaciones, incluyendo
SQLite, WebKit, OpenGL y manejador de medios.
Entorno de ejecución para las aplicaciones Android.
Un framework de desarrollo que pone a disposición de las aplicaciones los
servicios del sistema como el manejador de ventanas, de localización,
proveedores de contenidos, sensores y telefonía.
SDK que incluye herramientas, plug-in para Eclipse, emulador, ejemplos y
documentación.
Interfaz de usuario útil para pantallas táctiles y otros tipos de dispositivos de
entrada.
Aplicaciones preinstaladas que hacen que el sistema operativo sea útil para
el usuario desde el primer momento.
Existencia del Android Market, y presencia de una comunidad de
desarrolladores que suben ahí aplicaciones, tanto de pago como gratuitas.
7. ¿Quién ó quienes desarrollan Android?
La Open Handset Alliance. Consorcio de varias compañías que tratan de definir y
establecer una serie de estándares abiertos para dispositivos móviles. El
consorcio cuenta con decenas de miembros que se pueden clasificar en varios
tipos de empresas:
Operadores de telefonía móvil
Fabricantes de dispositivos
Fabricantes de procesadores y microelectrónica
Compañías de software
Compañías de comercialización
8. ¿Qué desventajas tiene Symbian con respecto a sus Libraries?
Symbian todavía requiere que el programador escriba código C/C++, haciendo uso
de bibliotecas (libraries) propietarias. Especiales complicaciones pueden surgir
cuando se trabaja con hardware específico, como GPS, trackballs o touchscreens,
etc. Ya que en la actualidad los sistemas operativos abstraen al programador del
hardware.
9. ¿Por qué usar Android y no Java ME?
Java ME abstrae completamente al programador del hardware, pero su limitación
de máquina virtual le recorta mucho la libertad para acceder al hardware del
dispositivo, mientras que en Android no está diseñado para un solo dispositivo
móvil.
10. ¿En qué año Google compró Android Inc y con qué objetivo?
En 2005, empezaba el desarrollo de una plataforma móvil basada en el kernel de
Linux. La idea entonces era la de crear un sistema parecido al de BlackBerry,
basado en teclado QWERTY.
11. ¿En qué año se lanzó la primera versión de Android?
En noviembre de 2007, junto con el SDK (del inglés, Software Development Kit).
12. ¿Qué versión de API tiene el Android Marshmallow?
API 23.
13. Mencione algunas de las características más relevantes del SDK de
Android.
Licencias, distribución y desarrollo gratuitos, tampoco hay procesos de
aprobación del software.
Acceso al hardware de WiFi, GPS, Bluetooth y telefonía, permitiendo
realizar y recibir llamadas y SMS.
Control completo de multimedia, incluyendo la cámara y el micrófono.
APIs para los sensores: acelerómetros y brújula.
Mensajes entre procesos (IPC).
Almacenes de datos compartidos, SQLite, acceso a SD Card.
Aplicaciones y procesos en segundo plano.
Widgets para la pantalla de inicio (escritorio).
Integración de los resultados de búsqueda de la aplicación con los del
sistema.
Uso de mapas y sus controles desde las aplicaciones.
Aceleración gráfica por hardware, incluyendo OpenGL ES 2.0 para los 3D.
14. ¿Qué tipo de arquitectura de procesador es la que más utilizan los
Smartphone, que utilizan Android?
Usan la arquitectura ARM, que significa Advanced RISC Machine y, como su
nombre indica, se trata de arquitecturas RISC (Reduced Instruction Set Computer)
y son procesadores de 32 bits.
15. ¿A qué se refiere la arquitectura de Android?, ¿Cuál es el esquema de
la Arquitectura por capas de Android?
Android está basado en Linux para los servicios base del sistema, como
seguridad, gestión de memoria, procesos y controladores. El diagrama de la
arquitectura de Android está dividido en capas pues esto permite la creación de
programas de desarrollo, con la total modularidad y portabilidad necesarias.
16. Explique de forma general los siguientes elementos de Android:
Núcleo de Linux (Linux Kernel). Capa encargada de los controladores (drivers)
del hardware, los procesos, la memoria, seguridad, red, y gestión de energía.
Abstrae el resto de las capas del hardware.
Android Run Time. Es lo que hace a Android diferente de una distribución de
Linux embebido. Está compuesto por las librerías "core" (núcleo) y por Dalvik, la
máquina virtual de Java, basada en registros que cuenta con el núcleo de Linux
para la gestión de hilos y para el manejo de memoria a bajo nivel.
Framework. (De aplicaciones) está compuesto por las clases que se utilizan para
crear aplicaciones Android: actividades, servicios, views, proveedores de
contenidos, etc. Finalmente, la capa de aplicaciones está compuesta por las
aplicaciones nativas y por las de terceros, así como las de desarrollo.
Capa de Abstracción de hardware. Brinda interfaces estándares que exponen
las capacidades de hardware del dispositivo al framework de la Java API de nivel
más alto. Consiste en varios módulos de biblioteca y cada uno de estos
implementa una interfaz para un tipo específico de componente de hardware,
como el módulo de la cámara o de bluetooth.
17. ¿Cómo funciona de manera general Dalvik?
Interviene al final como receptor de un archivo ejecutable producto de una
recopilación de los archivos .class de java. Dalvik espera que javac traduzca la
aplicación a byte codes, cuando están listos los archivos, estos son compilados
por el compilador Dex. Esta herramienta traduce los byte codes de java a un
estilo de byte codes nativos que serán convertidos a un ejecutable .dex.
Finalmente, este archivo es ejecutado por una instancia de Dalvik VM.
18. ¿Qué es Gradle? ¿A qué se refiere el proceso de “automatizar” ?,
¿Qué ventajas tiene?
Gradle es una herramienta para automatizar el compilado, empaquetado, testeo y
liberación de aplicaciones que se basen en la JVM. Ha sido creado para expandir
el uso de javac.
El proceso de automatizar significa que podemos programar nuestras propias
condiciones de construcción. Esto es posible a través de Scripting mediante
DSL(Domain-Specific-Language), un lenguaje claro y especializado, con énfasis
en configurar y construir aplicaciones con Gradle.
Ventajas
El programador decide el orden de ejecución de tareas. Asimismo, puede elegir
que archivos compilar primero, cuando detener la compilación, establecer
condiciones para que se recompile o no el código y muchas situaciones más.
Ejecuciones incrementales: Le ahorra al programador gran cantidad de tiempo
de espera.
Múltiples versiones: Gradle permite que construyamos varias versiones de
nuestra aplicación.
19. ¿Cuáles son las fases de desarrollo de una aplicación Android?,
Explique de forma general.
Configuración de entorno. Durante esta fase se instala y configura el entorno de
desarrollo. Además, se realiza la conexión a los elementos en donde se puede
realizar la instalación de las apps, y se crean dispositivos virtuales Android
(AVDS). Configuración del Proyecto y Desarrollo. Durante esta se realiza la
configuración del proyecto y el desarrollo de este. Creación de módulos que
contengan recursos para la aplicación y archivos de código fuente.
Las pruebas, depuración y construcción de la aplicación. A esta altura se
construye el proyecto en un paquete depurable .apk que se puede instalar y
ejecutar en el emulador o en un dispositivo con Android. Se utiliza un sistema de
construcción basado en Gradle. Con este se proporciona flexibilidad, variantes de
construcción a la medida y la resolución de dependencias
Publicación de la aplicación. En esta etapa se realiza la configuración y se arma
la solicitud para el uso y libre distribución de la aplicación a los usuarios.
20. ¿Qué es Kotlin?, ¿Por qué su uso?
Es un lenguaje de programación moderno de tipo estático. Ayuda a aumentar la
productividad, la satisfacción de los desarrolladores y la seguridad del código. Su
uso debe a que:
Es expresivo y conciso.
Código más seguro. Cuenta con muchas funciones de lenguaje que
ayudarán a evitar errores de programación comunes.
Interoperabilidad. Se puede llamar al código basado en Java desde Kotlin, o
viceversa.
Simultaneidad estructurada. Las corrutinas de Kotlin hacen que sea tan fácil
trabajar con código asíncrono como con código de bloqueo.
REFERENCIAS BIBLIOGRÁFICAS
Microsoft Azure. Qué es una máquina virtual y cómo funciona. [Online]. Disponible
en https://azure.microsoft.com/es-mx/overview/what-is-a-virtual-machine/#how-do-
work
ComputesHoy (2017, mayo 31). R. Andrés. Qué es una máquina virtual, cómo
funciona y para qué sirve. [Online]. Disponible en
https://computerhoy.com/noticias/software/que-es-maquina-virtual-como-funciona-
que-sirve-46606
Blog Nube Colectiva (2019, mayo 28). Que son las Ramas (Branches) en Git,
como utilizarlas y otros detalles. [Online]. Disponible en:
https://blog.nubecolectiva.com/que-son-las-ramas-branches-en-git-como-
utilizarlas-y-otros-detalles/