Está en la página 1de 51

INTRODUCCIÓN A LAS

APLICACIONES WEB Y MÓVILES

Escuela Politécnica Nacional

By Danny S. Guamán
danny.guaman@epn.edu.ec
@dan2ysgl

43
Nov 2021 – Mar 2021
RESULTADOS DE APRENDIZAJE

• Describir la anatomía de una aplicación web y una aplicación móvil


• Explicar las diferencias entre las aplicaciones web y las aplicaciones móviles
• Listar las soluciones arquitectónicas para el desarrollo de apps multi-plataforma
• Desarrollar el “Hola Mundo” de aplicaciones web y aplicaciones móviles

44
1. Introducción a las 2. Introducción a las
aplicaciones web aplicaciones móviles
01

04 02

3. Aplicaciones web vs
4. Introducción al desarrollo de 03 aplicaciones móviles
apps multi-plataforma

AGENDA 45
1. Introducción a las 2. Introducción a las
aplicaciones web aplicaciones móviles
01

04 02

3. Aplicaciones web vs
4. Introducción al desarrollo de 03 aplicaciones móviles
apps multi-plataforma

AGENDA 46
INTERNET VS LA WEB

Introducción a las
1 aplicaciones web

 Internet: una red de computadoras


interconectadas, unidas por cables, conexiones
2
Introducción a las
aplicaciones móviles inalámbricas, etc.
 Web: conjunto de documentos y otros recursos
interconectados.
Aplicaciones web vs.
3 Aplicaciones móviles  La World Wide Web (WWW) es accesible a través
de Internet, al igual que muchos otros servicios
como el correo electrónico, el intercambio de
4 Introducción al archivos, etc.
desarrollo de apps multi-

 ¿Qué es Shodan?
plataforma

 https://www.shodan.io/
CLIENTES, SERVIDORES Y
LA NUBE

Introducción a las
1 aplicaciones web

 Clientes:
 Dan acceso a información y servicios en Internet
Introducción a las
2 aplicaciones móviles

 Servidores:
 Alojan la información y los servicios
Aplicaciones web vs.
3 Aplicaciones móviles

 La nube (Internet): conjunto de terminales y servidores


 interconectados con aplicaciones y protocolos de Internet
Introducción al
4
desarrollo de apps multi-
plataforma  TCP/IP: protocolos de interconexión de redes de fibra, cable, WIFI,
...
 sobre los que se implementan las aplicaciones de Internet y sus protocolos
CLIENTES,
NAVEGADORES Y I
TIENDAS
1 Introducción a las
aplicaciones web  Clientes de acceso a Internet más importantes
 PCs, portátiles, tabletas, teléfonos inteligentes
Introducción a las
2 aplicaciones móviles
 Navegador (browser) cliente Web de acceso a
servidores
3
Aplicaciones web vs.
Aplicaciones móviles
 Utilizando: URL, HTTP, HTML, CSS y JS
 p.e. Chrome, Firefox, Internet Explorer, Opera, Safari, ...

4 Introducción al
desarrollo de apps multi-
 Tiendas de aplicaciones
plataforma
 Instalan aplicaciones en móviles y tabletas
 Las aplicaciones usan las normas de la Web (URL, HTTP, ....)
MÁQUINA SERVIDORA I
(HOST)
Introducción a las
1 aplicaciones web

 Contiene información y servicios

2
Introducción a las
aplicaciones móviles
 Una máquina servidora tiene una dirección “conocida” en
Internet
 Dirección simbólica (de dominio o DNS): upm.es,google.com, …
 Cada dirección de dominio tiene una dirección IP (binaria) asociada
Aplicaciones web vs.
3 Aplicaciones móviles  Hay 2 tipos de direcciones IP: IPv4 e IPv6
 IPv4: versión 4 del protocolo IP con dirección de 32 bits o 4 octetos
 ejemplo: 192.9.0.144, 127.0.0.1 (localhost - mi máquina), ...
 IPv6: versión 6 del protocolo IP (última) con dirección de 128 bits
Introducción al
4
desarrollo de apps multi-  ejemplo: 2001:db8:85a3::8a2e:370:7334, ....
plataforma
Servidor (host)
SERVIDORES Y puerto 25 email:
dirección SMTP I
PUERTOS IP puerto 80
Web:
HTTP
1
Introducción a las
aplicaciones web
Puerto
 Dirección de 16 bits dentro de la máquina servidora
 Es donde se instala el programa servidor

2
Introducción a las  El programa servidor es lo que normalmente denominamos servidor
aplicaciones móviles
 Cliente y servidor se comunican a través de un protocolo: HTTP, SMTP, .....
 Utilizando el interfaz de sockets TCP/IP para comunicar entre ambos

3 Aplicaciones web vs. Los servicios tienen un protocolo y un puerto por defecto
Aplicaciones móviles
 Web: protocolo HTTP (puerto 80), HTTPS (443)
 Email: protocolo SMTP (puerto 25), POP3 (110), IMAP143)
 Shell segura: protocolo SSH (puerto 22)
Introducción al
4
desarrollo de apps multi-
plataforma Si un servidor no está en el puerto por defecto
 Su dirección debe incluir el puerto, p.ej. epn.edu.ec:8080, 192.9.0.144:8080
I
MÁQUINA WEB
SERVIDORA (HOST)
Introducción a las
1 aplicaciones web

• Principales funciones:
2
Introducción a las • El servidor espera las solicitudes de conexión
aplicaciones móviles

• Cuando se recibe una solicitud de conexión, el servidor crea un nuevo proceso para
gestionar esta conexión
Aplicaciones web vs.
• El nuevo proceso establece la conexión TCP y espera las peticiones HTTP
3 Aplicaciones móviles
• El nuevo proceso invoca un software que mapea la URL solicitada a un recurso en el
servidor
• Si el recurso es un archivo, crea una respuesta HTTP que contiene el archivo en el
4 Introducción al
desarrollo de apps multi-
cuerpo del mensaje de respuesta
plataforma
• Si el recurso es un programa, ejecuta el programa y devuelve el resultado
W3
LA WWW ( WORLD WIDE WEB)
Introducción a las
1 aplicaciones web

• La WWW es un sistema de documentos de hipertexto interconectados


Introducción a las
que funciona a través de Internet
2 aplicaciones móviles
• Dos tipos de software:
• Cliente: un sistema que desee acceder a la información proporcionada por los
Aplicaciones web vs.
servidores debe ejecutar un software cliente (por ejemplo, un navegador web)
3 Aplicaciones móviles
• Servidor: un ordenador conectado a Internet que desee proporcionar
información a otros debe ejecutar un software de servidor
• Las aplicaciones cliente y servidor se comunican a través de Internet
4 Introducción al
desarrollo de apps multi-
siguiendo un protocolo construido sobre TCP/IP: el Protocolo de Transporte
plataforma
de Hipertexto (HTTP)

Ir a la siguiente diapositiva:
W3
HIPERTEXTO
Introducción a las
1 aplicaciones web

• Formato de información que permite


2
Introducción a las
aplicaciones móviles
pasar de una parte de una otra de un
documento o de un documento a otro
mediante hipervínculos.
3 Aplicaciones web vs.
Aplicaciones móviles • Ejemplo:
• Regresar a la diapositiva anterior:

Introducción al
4
desarrollo de apps multi-
plataforma
W3
HIPERTEXTO
Introducción a las
1 aplicaciones web

• Otro ejemplo:
2
Introducción a las
aplicaciones móviles • Use este código para crear un
hipertexto:
• <a href=“http://URL”>Texto a visualizar.</a>
Aplicaciones web vs.
3 Aplicaciones móviles • <a href=https://www.epn.edu.ec>EPN</a>
• <a href=https://www.google.com>Google
Home</a>
Introducción al
4
desarrollo de apps multi-
plataforma
google.com

URL W3
http://google.com/picture.png

Introducción a las
1 aplicaciones web
 URL (Uniform Resource Locator)
 Dirección de un recurso en un servidor en Internet
2
Introducción a las
aplicaciones móviles
 Internet soporta muchos tipos de servicios diferentes
 Cada tipo de servicio utiliza un URL y protocolo diferentes
 Algunos ejemplos de tipos de URLs
Aplicaciones web vs.
3 Aplicaciones móviles

 URL Web: utiliza HTTP para acceder a recursos, incluye


 Protocolo, servidor y recurso (camino): http://google.com/picture.png

4 Introducción al
 URL de correo (email): identifica el buzon de usuario,
incluye
desarrollo de apps multi-
plataforma

 protocolo, buzon de usuario y servidor: mailto:juan_perez@gmail.com


HTTP
(HIPERTEXT TRANSFER PROTOCOL) W3

 Protocolo de la Web
 Procesa recursos identificados por un URL en un servidor remoto
Introducción a las
1 aplicaciones web
 Métodos o comandos principales de HTTP
 GET: trae al cliente (lee) un recurso identificado por un URL
Introducción a las
 POST: crea un recurso identificado por un URL
2 aplicaciones móviles
 PUT: actualiza un recurso identificado por un URL
 DELETE: borra un recurso identificado por un URL
3
Aplicaciones web vs.
 ....... (hay mas comandos)
Aplicaciones móviles
epn.edu.ec Clientes 2, 3 y 4 solicitan recursos:
Cliente 1 solicita recurso: http://epn.edu.ec/.../......html
http://www.epn.edu.ec/rec5.html
google.com HTTP GET
Introducción al
4
desarrollo de apps multi-
plataforma
HTTP GET
gob.ec
APLICACIÓN WEB W3

 Aplicaciones ejecutables en un navegador creadas con


1 Introducción a las
aplicaciones web
 HTML, CSS y JavaScript

 HTML
Introducción a las
2 aplicaciones móviles
 Lenguaje de marcado de páginas Web
 define la estructura del contenido de documentos de hipertextos (una página Web)

Aplicaciones web vs.


 En WebApps define la interfaz de la aplicación con el usuario
3
 CSS
Aplicaciones móviles

 Define el estilo visual de un una página o aplicación Web (HTML)


4 Introducción al
desarrollo de apps multi-
 JavaScript
plataforma
 Lenguaje de programación de aplicaciones de cliente
APLICACIÓN WEB: HTML, CSS Y
W3
JAVASCRIPT

1
Introducción a las
aplicaciones web
 HTML
 Lenguaje de marcado

Introducción a las
 CSS
2 aplicaciones móviles
 Estilo la visualización
 JavaScript
3 Aplicaciones web vs.
Aplicaciones móviles
 Lenguaje de programación

Introducción al
4
desarrollo de apps multi-
plataforma
WEBAPPS O APLICACIONES DE
W3
CLIENTE
 Aplicaciones que residen en un servidor
Introducción a las
 pero se ejecutan en un cliente
1 aplicaciones web
 Se identifican con un URL: http:/www.epn.edu.ec/apps/webapp.html
 El cliente trae la aplicación del servidor con el protocolo HTTP (GET)

2
Introducción a las  Las apps se construyen con las tecnologías de la Web
aplicaciones móviles

 URLs, HTTP, HTML, CSS y JavaScript


1) Cliente solicita WebApp
Aplicaciones web vs. identificada con URL
3 Aplicaciones móviles
Solicitud HTTP GET
2) Script se ejecuta al asociada a un URL
cargar la página Web en el
navegador:

Introducción al
4 Respuesta HTTP:
desarrollo de apps multi-
plataforma página Web con script

Servidor sirve fichero


identificado por URL 20
W3
WEBAPPS O APLICACIONES DE
CLIENTE
Introducción a las
1 aplicaciones web

• ¿Por qué programar una aplicación web?


2
Introducción a las • ¿Cuál es el inconveniente del modelo de documento simple
aplicaciones móviles
(páginas web estáticas)?
• Supone que los documentos se crean antes de ser
solicitados
Aplicaciones web vs.
3 Aplicaciones móviles
• ¿Cuáles son los ejemplos de información que puede
formar parte de los documentos web y que no se
conoce antes de que se soliciten?
Introducción al
4
desarrollo de apps multi-
plataforma
W3
PROGRAMACIÓN DEL LADO DEL
CLIENTE
Introducción a las
1 aplicaciones web

• Lenguaje de scripting: un
lenguaje de programación • ¿Qué puede hacer un
2
Introducción a las
aplicaciones móviles ligero JavaScript?
• Scripting en el navegador: • Poner texto dinámico en una página
HTML
3
Aplicaciones web vs. JavaScript
Aplicaciones móviles
• Reaccionar a eventos
• Diseñado para añadir
• Leer y escribir elementos HTML
interactividad a las páginas
Introducción al HTML • Validar datos antes de enviarlos al
4
desarrollo de apps multi-
plataforma
servidor
• Suele estar incrustado en las • Crear cookies
páginas HTML
W3
PROGRAMACIÓN DEL LADO DEL
SERVIDOR
Introducción a las
1 aplicaciones web

• Las peticiones hacen que se genere la respuesta.

2
Introducción a las • Scripting en el servidor:
aplicaciones móviles

• CGI/Perl: Common Gateway Interface (*.pl, *.cgi)


• PHP: Código abierto, fuerte soporte de base de datos (*.php)
Aplicaciones web vs.
3 Aplicaciones móviles
• ASP: Producto de Microsoft, utiliza el marco .Net (*.asp)
• Java mediante JavaServer Pages (*.jsp)
4 Introducción al
desarrollo de apps multi-
• ...
plataforma
W3
APP WEB: HOLA MUNDO
Introducción a las
1 aplicaciones web

• Requisitos:
a) DJANGO
Introducción a las
2 aplicaciones móviles • Un framework (marco de trabajo) basado en Python para el desarrollo de
aplicaciones web.
• Download: https://www.djangoproject.com/
Aplicaciones web vs.
3 Aplicaciones móviles b) PYTHON
• Lenguaje de programación interpretado de propósito general
• Download: https://www.python.org/
Introducción al
4
desarrollo de apps multi-
plataforma
c) PYCHARM
• Entorno de Desarrollo Integrado para Python
• Download: https://www.jetbrains.com/es-es/pycharm/
W3
APP WEB: HOLA MUNDO
Introducción a las
1 aplicaciones web

• Instalar PyCharm (ya incluye Python).


• Crear un nuevo proyecto.
Introducción a las
2 aplicaciones móviles
• Instalar Django
• En el terminal: pip3 install Django
3
Aplicaciones web vs.
Aplicaciones móviles
• Crear un proyecto en Django
• En el terminal: django-admin startproject
miproyecto
4 Introducción al
desarrollo de apps multi-
• Ejecutamos el servidor web de desarrollo
plataforma
que viene integrado en Django
• python manage.py runserver 80
W3
APP WEB: HOLA MUNDO
Introducción a las
1 aplicaciones web

• Creamos una nuestra app llamada HolaMundo:


• python manage.py startapp HolaMundo
Introducción a las
2 aplicaciones móviles
• Registramos nuestra aplicación en el fichero settings

Aplicaciones web vs.


3 Aplicaciones móviles

Introducción al
4
desarrollo de apps multi-
plataforma
W3
APP WEB: HOLA MUNDO
Introducción a las
1 aplicaciones web
En el fichero urls.py, asignar la vista
• En el fichero views.py, cambiamos la vista de index
recién modifica para sea enviada a los
(página HTML) a mostrar a los clientes: clientes cuando hagan una petición al
2
Introducción a las
aplicaciones móviles index.html:

Aplicaciones web vs.


3 Aplicaciones móviles

Introducción al
4
desarrollo de apps multi-
plataforma
W3
APP WEB: HOLA MUNDO
Introducción a las
1 aplicaciones web

• Reiniciamos el server web de desarrollo:


• python manage.py runserver 80
Introducción a las
2 aplicaciones móviles

Aplicaciones web vs.


3 Aplicaciones móviles

Introducción al
4
desarrollo de apps multi-
plataforma
W3
RECURSOS ADICIONALES
Introducción a las
1 aplicaciones web

• W3School JavaScript Tutorial

Introducción a las
• W3School HTML Tutorial
2 aplicaciones móviles
• W3School CSS Tutorial
• W3School Python Tutorial
Aplicaciones web vs.
3 Aplicaciones móviles • Cliente web de Python (requests)
• Django Tutorial
Introducción al
4
desarrollo de apps multi-
plataforma
1. Introducción a las 2. Introducción a las
aplicaciones web aplicaciones móviles
01

04 02

3. Aplicaciones web vs
4. Introducción al desarrollo de 03 aplicaciones móviles
apps multi-plataforma

AGENDA 70
(PARTIAL) APPS DEPLOYMENT ENVIRONMENT
App developers/
App providers

Introducción a las
1 aplicaciones web

Supervisory authority

publish

Introducción a las App store


2 aplicaciones móviles (Google Play)

User
<<Data subject>>

Aplicaciones web vs. Android app (APK) Android app (APK)


3 interact
Aplicaciones móviles (third-party libraries) (third-party libraries)

intents API access API access intents

App framework

Introducción al Android Middleware


4 Third-party providers
desarrollo de apps multi-
plataforma
Inter-process communication (IPC)

Linux kernel Analytics providers

Internet
Sensors and data structures
(GPS, address book, identifiers, Wi-Fi, Bluetooth, …) Advertising
providers
Mobile device

Privacy and data protection in mobile applications


Social networking
https://www.enisa.europa.eu/publications/privacy-and-data-protection-in-mobile-applications
APPS DEPLOYMENT ENVIRONMENT

1
Introducción a las
• Google Play Store is the
aplicaciones web
official distribution platform
of Android apps.
• Interface between developers
2
Introducción a las
aplicaciones móviles
and users
• Google Play Store hosts:
• Apps (APKs)
3 Aplicaciones web vs.
Aplicaciones móviles
• Privacy policy
• Other relevant metadata,
including app version, permissions,
app category, installs number, user
reviews, etc.
Introducción al
4
• CLIIP platform already crawls
desarrollo de apps multi-
plataforma
mobile apps, privacy policies
and metadata.
APPS DEPLOYMENT ENVIRONMENT

Introducción a las
1 aplicaciones web

• APK (Android PacKage)


2 Introducción a las
aplicaciones móviles
• Package file format used by Android for distribution
and installation of apps.
• It includes app’s code (.dex files), the Manifest file,
Aplicaciones web vs.
project resources (e.g., images), and APK metadata
3 Aplicaciones móviles (e.g. the certificate)

Introducción al
4
desarrollo de apps multi-
plataforma

Detailed information: https://developer.android.com/studio/build/apk-analyzer


APPS DEPLOYMENT ENVIRONMENT
• Relevant APK artifacts:
Introducción a las
1 aplicaciones web

Introducción a las
2 aplicaciones móviles

Aplicaciones web vs.


3 Aplicaciones móviles

APK Metadata Android Manifest App’s code XML Layouts


Certificate

Introducción al
4
desarrollo de apps multi-
plataforma
THE APP CERTIFICATE

• Provides clues on the country where


the app owner/developer is established.
• Info on the app developer can be useful
to distinguish first from third-party
domains.
• …
THE MANIFEST FILE

The Manifest file declares:


• App package
• Minimum and target API levels
Introducción a las
1 aplicaciones web • Permissions requested
• Components: <activity>, <service>, <receiver>, <provider>
·name attribute identifies the class implementing the component
·exported attribute to false avoids other apps calling the component
2
Introducción a las ·intent-filters allow declaring the component capabilities to be called implicitly by other apps
aplicaciones móviles
·Activities, services and providers MUST be declared to be called
·Receivers can be declared in the manifest or created in code
• Hw/Sw requirements
· uses-features, uses-sdk…
3
Aplicaciones web vs. ·required attribute to true makes the attribute mandatory, and the app won’t be installed unless satisfied
Aplicaciones móviles
• API (shared) libraries needed in the device
• Whether debugging or data backup is allowed
·Debugging is off by default
· Backup is on by default
Introducción al
4
desarrollo de apps multi- <application android:allowBackup="false" android:debuggable="false" ...
plataforma

Detailed information: https://developer.android.com/guide/topics/manifest/manifest-intro


THE MANIFEST FILE
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0"
package="privapp.dit.upm.es.devicedata">
App metadata
<uses-sdk
android:minSdkVersion="25"
Introducción a las
1 aplicaciones web
android:targetSdkVersion="28" />

<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission

2
Introducción a las Permissions android:name="android.permission.GET_ACCOUNTS" />
aplicaciones móviles
<uses-permission
android:name="android.permission.READ_PHONE_NUMBERS" />
<application>

<activity
android:theme="@ref/0x7f0f0008"
Aplicaciones web vs.
3 Aplicaciones móviles android:label="@ref/0x7f0e0028"
android:name="privapp.dit.upm.es.devicedata.MainActivity">

<intent-filter>

App components <action


android:name="android.intent.action.MAIN" />
Introducción al
4
desarrollo de apps multi- <category
plataforma android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
THE MANIFEST FILE

• Permissions in the Manifest file:


1 Introducción a las • Normal  automatically granted, as access
aplicaciones web
• By default, each app has access cannot imply real harm to the data subject
only to its own components and (e.g. change the wallpaper).
data. • Dangerous  need data subject confirmation,
as access implies real harm to the data subject
2
Introducción a las
aplicaciones móviles • Access to the system resources or system trustworthiness (e.g. access to
location or email accounts, and open Internet
and to other apps’ resources is connections)
possible if the application has
• Signature automatically granted if the app is
required permissions. signed by the same certificate as that which
Aplicaciones web vs.
3 Aplicaciones móviles declared the permission
• Apps declare in their manifest file
which permissions they • Signature/System  same as signature, but in
this case system image gets the permissions
request/require automatically as well (for use by device
manufacturers only)
4 Introducción al
desarrollo de apps multi-
• Android permissions fall into four
plataforma levels 
THE APP CODE

• As already mentioned, an app can be composed of four types of components (each is a potential entry point):

Activity Service Broadcast receiver Content provider

Intents

A little bit of practice …

Detailed information: https://developer.android.com/guide/components/fundamentals


ADB: INSTALLING APKS

• Install the APK “DeviceData” via ADB (name


privapp.dit.upm.es.devicedata)
$ adb -s ada8b19b0406 install DeviceData.apk
Success
• Install the APK “Pinngle Safe Messenge” from the Google Play
Store
• List apps installed
$ adb -s ada8b19b0406 shell pm list packages
package:com.miui.screenrecorder
package:com.amazon.mShop.android.shopping
package:com.qualcomm.qti.qms.service.telemetry
package:com.google.android.youtube
package:com.qualcomm.qti.perfdump

package:privapp.dit.upm.es.devicedata
package:com.beint.pinngle

ADB: EXTRACTING APKS

• Find the apk name of the app (“Pinngle Safe Messenger”)


$ adb -s ada8b19b0406 shell pm list packages | grep pinngle
package:com.beint.pinngle
• Find the path of the app
$ adb -s ada8b19b0406 shell pm path com.beint.pinngle
package:/data/app/com.beint.pinngle-2R0Sk138EP7a3XDjEPmJIw==/base.apk
• Extract the app to your system
$ adb -s ada8b19b0406 pull /data/app/com.beint.pinngle-
2R0Sk138EP7a3XDjEPmJIw==/base.apk
/data/app/com.beint.pinngle-2R0Sk138EP7a3XDjEPmJ...ile pulled.
28.9 MB/s (62414505 bytes in 2.059s)
UNPACKAGING APKS

• Unpack the APK Get the APK certificate info


$ unzip DeviceData.apk -d cliip $ openssl pkcs7 -inform DER -in cliip/META-INF/CERT.RSA -
noout -print_certs –text
Archive: DeviceData.apk
Certificate:
inflating: cliip/AndroidManifest.xml Data:
inflating: cliip/META-INF/CERT.RSA Version: 3 (0x2)
Serial Number: 1643442071 (0x61f4ef97)

Signature Algorithm: sha256WithRSAEncryption
• List the unpacked files Issuer: C=ES, ST=Madrid, L=Madrid, O=Universidad
$ ls cliip
Polit\xC3\xA9cnica de Madrid, OU=DIT-STRAT, CN=CLIIP
Validity
AndroidManifest.xml classes.dex META-INF res Not Before: Sep 3 19:26:17 2020 GMT
resources.arsc Not After : Aug 28 19:26:17 2045 GMT
Try looking at the Manifest file.
Android Platform Architecture
Android software stack:
1
Introducción a las -Application framework, with Java
aplicaciones web
APIs to gain access to functionality.
-Native libraries.
-Android Runtime (ART), to run each
2
Introducción a las
aplicaciones móviles app in an ART virtual machine.
-Hardware Abstraction Layer, to
abstract the specfic device hardware
Aplicaciones web vs.
-Linux kernel, operating system.
3 Aplicaciones móviles

Introducción al
4
desarrollo de apps multi-
plataforma

83
Source: https://developer.android.com/guide/platform
Android Framework versions

Introducción a las
1 aplicaciones web

Introducción a las
2 aplicaciones móviles

Aplicaciones web vs.


3 Aplicaciones móviles

Introducción al
4
desarrollo de apps multi-
plataforma

84
Source: https://en.wikipedia.org/wiki/Android_version_history
Android File System
6 main device partitions (and wipping effects)
/boot: kernel and initrd (unable to boot anymore)
Introducción a las
1 aplicaciones web /system: Android OS (but for kernel and initrd) (no OS, still bootable)
/recovery: Alternative boot partition for recovery
/data: User data partition (contacts, settings, apps) (Factory reset)
Introducción a las
2 aplicaciones móviles /cache: Frequently accessed data and app components
/misc: Miscellaneous system settings (hardware, Ids) (malfunctioning)

3 Aplicaciones web vs.


Aplicaciones móviles
SD Card partitions (Apps can write here)
/sdcard: Internal device memory for storage (personal data/docs loss)
/sdcard/sd /sdcard2: External SD Card (personal data/docs loss)
Introducción al
/sd-ext: Alternative/Extension to /data (Factory reset)
4
desarrollo de apps multi-
plataforma

Know your device (via adb): ‘df’ or ‘cat proc/mounts’


85
Details: http://www.uobabylon.edu.iq/eprints/publication_4_13681_1356.pdf
Android File System
/system is read-only without root
/app: pre-installed Android/Vendor/Carrier system apps
Introducción a las
1 aplicaciones web /priv-app: pre-installed privileged apps (signatureOrSystem permission)
/lib
/lib64
Introducción a las
2 aplicaciones móviles /vendor
/etc/security/cacerts

3 Aplicaciones web vs.


Aplicaciones móviles
/data: User data partition (contacts, settings, apps)
/app: User-installed applications
/data: Folder for each app named as package name
Introducción al
4
desarrollo de apps multi-
plataforma

86
Android Debug Bridge
ADB is a command-line tool that lets you communicate with a device
-UNIX Shell to run commands on the device from a computer
Introducción a las
1 aplicaciones web -Many different functionalities:
·Extract APKs
·Debug apps
Introducción a las
2 aplicaciones móviles -Part of the Android SDK Platform Tool
·Download from https://developer.android.com/studio/releases/platform-tools
Unzip the file  platform-tools folder
3 Aplicaciones web vs.
Aplicaciones móviles
·Enable USB debugging in your device system settings
Settings > About phone  Tap Build number 7 times
Settings > About phone > Developer options > USB debugging ON
Introducción al
·Connect your device over USB
4
desarrollo de apps multi-
plataforma
Open a terminal and go to the platform_tools folder
Run adb devices
The first time you need to authorize access on the device screen
87
Details: https://developer.android.com/studio/command-line/adb
Android Debug Bridge
Simple exercises
-Get to your device shell
Introducción a las
1 aplicaciones web adb shell
-Check where you are, who you are and your groups:
pwd
Introducción a las
2 aplicaciones móviles whoami
groups
-Check your filesystem and permissions
3 Aplicaciones web vs.
Aplicaciones móviles
ls –la
-Try to find an app you have got installed e.g.
Gmail
Introducción al
Whatsapp
4
desarrollo de apps multi-
plataforma

88
Details: https://developer.android.com/studio/command-line/adb
App Lifecycle
Apps are written in Java, Kotlin or C/C++
-Java source code is converted into DEX bytecode (portable)
Introducción a las
1 aplicaciones web -The DEX bytecode is translated to native machine code via
ART/Dalvik runtimes

2
Introducción a las
aplicaciones móviles
Apps are distributed as an Android Package (APK) file:
-Compiled code (.dex)
-Native code (if any)
3 Aplicaciones web vs. -Application resources
Aplicaciones móviles
-Data
-Manifest file (AndroidManifest.xml)

Introducción al
4
desarrollo de apps multi- Apps can be downloaded:
plataforma
-From official marketplaces e.g. Google Play Store
-From alternative repositories e.g. APKMirror
89
·Only free apps, but includes older versions
Android security fundamentals
Android is a multi-user Linux operating system:
-By deafult, each app is a different user
Introducción a las
1 aplicaciones web -Each process has its own virtual machine
-By default, every app runs in its own process
·The system starts the process when needed
Introducción a las
2 aplicaciones móviles ·The system shuts down the process if no longer required, or
when resources (memory) are needed

3 Aplicaciones web vs.


Aplicaciones móviles
However:
-Two apps can share the same user
·They must be signed with the same certificate
Introducción al
·They can access each other’s files
4
desarrollo de apps multi-
plataforma
·They can run in the same process and virtual machine
-Two apps can communicate and access to device data e.g. files
90
App components
Building blocks of an Android app
System/Users/Apps entry points to an app
Introducción a las
1 aplicaciones web

Types of components:
-Activity: Entry point for user interaction, representing a single screen
2
Introducción a las
aplicaciones móviles
with a user interface. (Subclass of android.app.Activity)
-Service: Entry point for a background processing (Subclass of
android.app.Service)
·Started services run until their work is completed, either with
3 Aplicaciones web vs.
Aplicaciones móviles foreground notice or purely in background.
·Bound services provide an API for client-server interactions.
-Broadcast receiver: Entry point for events’ notification (Subclass of
Android.content.BroadcastReceiver)
Introducción al
4
desarrollo de apps multi-
plataforma
-Content provider: Entry point for the management of private/shared
data using different channels (Subclass of
android.content.ContentProvider)
91
android.content.Intent
Asynchronous messaging object used to request the system to start
an action from another component (Activity/Service/Receiver)
Introducción a las
1 aplicaciones web

For Activity/Service the intent includes:


-Target component
2
Introducción a las
aplicaciones móviles
·Implicit: Type of component and capabilities required
·Explicit: Class implementing the component
-Data to be passed to the target
3 Aplicaciones web vs. An Intent can be also used to return an Activity result
Aplicaciones móviles

For Receivers the intent includes the announcement

Introducción al
4
desarrollo de apps multi-
plataforma

92
MOBILE APP: HOLA MUNDO
Introducción a las
1 aplicaciones web

• Pre-requesitos:
a) ANDROID STUDIO
Introducción a las
2 aplicaciones móviles
• https://developer.android.com/studio
b) TERMINAL MÓVIL CON S.O. ANDROID
Aplicaciones web vs.
3 Aplicaciones móviles

Introducción al
4
desarrollo de apps multi-
plataforma

También podría gustarte