Está en la página 1de 34

Programación I

Prog. Móvil
Segundo Cuatrimestre

UCSE - 2022
Aplicaciones móviles, un mercado en auge
A día de hoy, ¿quién no tiene un smartphone? el mercado de las aplicaciones
móviles está en auge y no para de crecer año tras año.
Las grandes empresas e instituciones cada vez apuestan más por este mercado
de apps, debido a su infinidad de posibilidades, ofreciendo a los usuarios sus
propias.
Algunas son informativas, otras sirven para descargar cupones de descuento y
otras, en cambio, funcionan como juegos de entretenimiento y ocio.

Por ello, cada día más empresas encuentran oportunidades en el mercado de las
apps, para intentar aprovechar todas las oportunidades que brinda este reciente
mercado en constante desarrollo.
Sistemas Operativos Móviles

Representa la lógica que tiene el dispositivo móvil tal como se presenta en una
computadora, es decir, permite gestionar de manera adecuada los recursos de
hardware del dispositivo móvil. Por otro lado, también provee capacidades de
servicios a los programas de aplicación para que estos pueda ejecutarse.
Sistemas Operativos Móviles

Características:
● Gestionar y administrar un entorno de trabajo adecuado para el usuario.
● Administrar de forma adecuada los componentes de hardware.
● Administrar la distribución y asignación de recursos frente a solicitudes realizadas por las
aplicaciones.
● Administrar la correcta ejecución de una aplicación en cualquier dispositivo.
● Administrar la sincronización de los dispositivos móviles con otros dispositivos.
Sistemas Operativos Móviles
Principales sistemas operativos existentes:
● iOS: es un sistema operativo cerrado que solamente funciona en dispositivos iPhone, iPad y iPod de la
empresa Apple. Es cerrado también porque no permite la modificación de las características originales
que presenta el sistema.
● Android: es un sistema operativo de código abierto, el que abarca la mayor porción del mercado
mundial de dispositivos móviles frente a sus competidores. Está disponible para cualquier dispositivo
móvil de cualquier marca o fabricante.
● Windows Phone (SO de Microsoft que surgió para ser utilizado en algunos dispositivos móviles), Tizen
(SO de Samsung utilizado en relojes inteligentes), WebOS (SO de LG utilizado en los Smart TV del
mismo fabricante), entre otros.
Sistemas Operativos Móviles
Componentes:

• Aplicaciones

• Estructura de Aplicaciones

• Bibliotecas

• Núcleo de Kernel
Tipos de Aplicaciones
Existe una aplicación para cada SO móvil y existen varios tipos de aplicaciones de acuerdo a su desarrollo:
● Aplicaciones Nativas: apps desarrolladas en su mismo software, creadas exclusivamente para una plataforma de SO en
particular. Ejemplo: una app creada en Java o en Kotlin es exclusiva para Android.
● Aplicaciones Web: apps que se ejecutan en el navegador del dispositivo, son desarrolladas utilizando tecnologías web
como HTML, CSS3 y Javascript; por ello son independientes del sistema operativo en el que se ejecutan haciéndolas más
portables. Ejemplo: apps del tipo progressive web app.
● Aplicaciones Híbridas: apps que combinan las tecnologías nativas con las webapps, utilizan las tecnologías web, se
ejecutan en un contenedor nativo y emplean un marco de trabajo o framework específico para el desarrollo como
PhoneGap, Apache Cordova, Ionic, etc. Son independientes del sistema operativo en el que se ejecutan. Ejemplo: app
desarrollada en PhoneGap.
Aplicaciones Nativas
Ventajas
● Control absoluto de los recursos de hardware y software.
● Tienen mejor desempeño y muy alto rendimiento en los dispositivos que se ejecutan.
● Se pueden publicar en la tienda de aplicaciones del sistema operativo.
● No necesariamente requieren de conexión a Internet para ejecutarse.
● Son más estables y pesan menos.

Desventajas
● Alto costo de desarrollo en cuanto a tiempo y esfuerzo.
● Solamente se ejecutan en un SO determinado, no son portables.
Aplicaciones Web o Webapps

Ventajas
● Pueden ejecutarse en cualquier dispositivo móvil que cuente con navegador web.
● El costo de desarrollo es variable comparador con las aplicaciones nativas.
● No requiere de la instalación de una app para el manejo de webapps.

Desventajas
● Casi siempre requiere de una conexión a Internet para su todo su funcionamiento.
● No son distribuibles mediante las tiendas de aplicaciones.
● No pueden utilizar muchos de los recursos del dispositivo móvil ni del SO.
Aplicaciones Híbridas

Ventajas
● Se desarrollan de manera independiente del SO.
● Son distribuibles a través de las diferentes tiendas de aplicaciones ya que son multiplataforma.
● Tienen acceso a los recursos de hardware y software del dispositivo móvil.

Desventajas
● El usuario cree o percibe estar usando una aplicación web y no una nativa.
● No se cuenta con documentación suficiente de los frameworks ni de una comunidad de desarrolladores
muy grande como para realizar un desarrollo complejo.
● El rendimiento es inferior al de una app nativa, tiene limitaciones.
Características de Android

● Plataforma adaptable a cualquier tipo de pantalla sin importar su tamaño.


● Incluye librerías de gráficos 3D para videos y juegos.
● Tiene un gestor de base de datos llamado SQLite aunque también existen
otras alternativas.
● Posee una máquina virtual que le permite ejecutar sus aplicaciones.
● Permite el uso de cualquier recurso del dispositivo móvil ya sea cámara,
sensores, micrófono, GPS, etc.
Historia

● Nació como un SO simple para móviles


● Comprado por Google en 2005
● Se lanzó la primera versión por Google en 2007
● Se lanzó junto al SDK para programadores
● Fue evolucionando hasta convertirse en lo que es hoy
Versiones de Android
Las versiones de Android y niveles de API

https://andro4all.com/guias/android/versiones-android-historia
¿Qué es Android?

● Sistema Operativo para dispositivos móviles


● De código abierto
● Basado en Linux
● Gratuito
● Multiplataforma
● El SO más usado en los dispositivos móviles en todo el mundo
Las versiones de Android y niveles de API

● Antes de empezar a programar en Android hay que elegir la versión del


sistema para la que deseamos realizar la aplicación
● Es muy importante observar que hay clases y métodos que están
disponibles a partir de una versión
● Cuando se ha lanzado una nueva plataforma, siempre ha sido compatible
con las versiones anteriores
● https://www.xatakandroid.com/sistema-operativo/android-10-esta-1-
cada-10-dispositivos-ultimos-datos-distribucion-versiones
Ventajas

● Plataforma realmente abierta: es de desarrollo libre, basada en Linux y de


código abierto. Cualquier programador puede usar y modificar a su gusto el
sistema.

● Adaptable a cualquier tipo de hardware: es utilizable en cualquier tipo de


dispositivo móvil como por ejemplo teléfonos, tablets, relojes, autos,
televisores, etc.
Ventajas

● Portabilidad asegurada: las apps son desarrolladas en Java o en Kotlin,


permitiendo que sean ejecutadas en cualquier tipo de CPU, tanto presente
como futuro. Esto se logra gracias al concepto de máquina virtual.

● Gran cantidad de servicios incorporados: por ejemplo, localidación basada en


GPS, Glonass, basada en la red celular, base de datos SQL, reconocimiento y
síntesis de voz, navegador, etc.
Ventajas

● Optimizado para baja potencia y poca memoria: en el diseño de Android se ha


tenido en cuenta el hardware específico de los dispositivos móviles. Por ello,
Android utiliza una máquina virtual llamada ART (anteriormente Dalvik en
versiones antiguas). Es una implementación de Google de la máquina virtual
de Java optimizada para dipositivos móviles.
Otras plataformas - Comparativa
Android iOS
● Pertenece a Google ● Pertenece a Apple
● Núcleo del SO Linux ● Núcleo del SO MacOS X
● Licencia de software libre y abierto ● Licencia de software propietaria
● Disponible en múltiples dispositivos sin ● Disponible en un único dispositivo iPhone,
importar marca iPad, etc. de Apple
● Utiliza máquina virtual ● No utiliza máquina virtual
● Se programa en Java/Kotlin/C++ ● Se programa en ObjectiveC/Swift
● Plataforma desarrollo Windows/Linux/Mac ● Plataforma desarrollo Mac
● Costo de publicación de app: 25 dólares por ● Costo de publicación de app: 99 dólares por
única vez año
Arquitectura Android
Arquitectura Android

Núcleo Linux

● Está formado por el sistema operativo Linux.

● Esta capa proporciona servicios como la seguridad, el manejo de memoria, el multiproceso, la pila de

protocolos y el soporte de drivers para dispositivos.

● Esta capa actúa como capa de abstracción entre el hardware y el resto de los componentes de la

arquitectura.

● Es la única capa dependiente del hardware.


Arquitectura Android

Runtime de Android

● Basado en el concepto de máquina virtual utilizado en Java.

● Utiliza una máquina virtual llamada ART que fue construida como alternativa a Dalvik (Java) para

responder mejor a las limitaciones de los dispositivos en cuanto a memoria y procesador.

● Utiliza ficheros ejecutables con extensión .dex optimizados para ahorrar memoria.

● Cada aplicación ejecuta su propio proceso Linux con su propia instancia de la máquina virtual.
Arquitectura Android

Librerías nativas

● Incluye un conjunto de librerías en C/C++ usadas en varios componentes de Android.

● Están compiladas en código nativo del procesador.

● Son librerías de proyectos de código abierto en su gran mayoría.

● Estas librerías permiten reproducción de video, manejo de gráficos 2D/3D, navegador web,

seguridad, entre otros.


Arquitectura Android

Entorno de aplicación

● Proporciona una plataforma de desarrollo libre para aplicaciones con grandes posibilidades
como uso de sensores, localización, servicios, notificaciones, etc.
● Permite reutilizar componentes.
● Las apps pueden publicar sus capacidades y otras pueden hacer uso de ellas (sujetas a
restricción de seguridad).
● Permite el manejo de vistas, acceso a recursos, manejo del ciclo de vida de las
aplicaciones, manejo de alertas, acceso a datos de otras apps, etc.
Arquitectura Android

Aplicaciones

● Esta capa está conformada por el conjunto de aplicaciones instaladas en un dispositivo


que ejecuta el SO Android.
● Todas las apps deben ejecutarse en la máquina virtual ART para garantizar la seguridad del
sistema.
● Las apps se escriben normalmente en los lenguajes Java y Kotlin (desarrollo nativo).
● Para desarrollar una app se necesita utilizar el Android SDK,
Instalación del Entorno de Desarrollo

Para desarrollar una app en Android se requiere:


● Android SDK: es un paquete de software que incorpora todas las herramientas necesarias
para desarrollo de aplicaciones en Android. Incluye conversor de código, depurador,
librerías, emuladores, documentación, ejemplos de código, etc.

● Android Studio: IDE o entorno de desarrollo integrado para la creación de aplicaciones.


Agrupa un entorno visual y un editor de código con todas las herramientas de desarrollo.

● Máquina virtual de Java: necesaria para el desarrollo utilizando el lenguaje Java.


Instalación de la Máquina Virtual de Java

● Java RE/SDK: necesario para programar aplicaciones en Android, ya que se


utiliza el lenguaje Java. Se descarga su última versión del sitio web de Java.

● Android Studio: se deben tener en cuenta dos cosas luego de instalarlo:

○ SDK Manager: para la instalación y gestión de paquetes para programación según la versión del

SDK de Android a utilizar para la construcción de una app.

○ AVD: para la gestión de las máquinas virtuales que emulan dispositivos Android. Esto permite,

mediante un emulador, probar una aplicación como si se ejecutara en un dispositivo físico (real).
Proceso de desarrollo de una app
El proceso de diseño y desarrollo de una app implica una serie de pasos que se siguen
teniendo conocimientos en programación Java/Kotlin y orientación a objetos.

● Análisis
● Formalización del proyecto
● Maquetado
● Codificación
● Publicación
Proceso de desarrollo de una app

Análisis

● Se analiza el proyecto y se determina qué soluciones se le brindará al usuario final.

● Toda aplicación se debe centrar en el usuario y no en el desarrollador.

● Esta etapa implica el entendimiento del problema, estudio del dominio del problema, el

estudio de viabilidad y la propuesta de solución de acuerdo a las necesidades.


Proceso de desarrollo de una app

Formalización del proyecto

● Se define formalmente la funcionalidad que deberá tener la aplicación.

● Se determinan las reglas de negocio que debe cumplir el desarrollador de la aplicación.

● Se definen los requerimientos de software tanto funcionales (qué debe hacer) como no

funcionales (qué limitaciones debe tener).

● Se utiliza documentación escrita, diagramas del funcionamiento, etc.


Proceso de desarrollo de una app

Maquetado

● Se definen prototipos sobre cómo será el proyecto al finalizarlo.

● Sirve para dar una idea clara al desarrollador sobre cómo implementará dicha aplicación.

● Se visualiza cómo se relaciona el usuario con la aplicación.

● Permite facilitar el entendimiento del problema y comunicación con el cliente.


Proceso de desarrollo de una app

Codificación
● Es llevar a cabo la programación o desarrollo propiamente dicho de la aplicación.
● Es la construcción de la misma utilizando un lenguaje de programación y un IDE.
● El desarrollo debe basarse en los requerimientos definidos en la formalización del
proyecto para que la aplicación cumpla con la funcionalidad especificada en los pasos
anteriores del proceso.
Proceso de desarrollo de una app

Publicación
● Implica subir o publicar la aplicación terminada en la tienda de aplicaciones del SO.
● La tienda de aplicaciones se conoce como Android Play Store.
● Todo desarrollador, para poder subir una aplicación, debe pagar por única vez una
membresía de 25 dólares; luego de eso podrá subir todas las aplicaciones que quiera.
● Toda publicación implica definir un nombre para la app, una clasificación de edad,
categoría, aceptación de términos, condiciones y otras regulaciones, capturas de pantalla,
y completar una ficha con información detallada tanto de la app como del programador.

También podría gustarte