Tips, Noticias, aplicaciones, juegos y utilerias para Android.

Taller «Mi primera APP Android»

Por medio de la presente envío a usted el temario y requerimientos para taller de 8 hrs
“Mi primera APP Android”

Facilitador: Ing Edwin Orozco Ordaz (desarrollador en mundoSICA y master en YaChingamos.com)

Entorno de desarrollo: Eclipse

Plugins necesarios: ADT Plugin, ELiFA

Para ECLIPSE instalar ADT Plugin:
http://www.aprendeandroid.com/l1/instalacion.htm

Ejecutar Eclipse —> help —> Install new software: https://dl-ssl.google.com/android/eclipse/

 

Descargar el .jar de ELiFA:
https://github.com/mrp2kkck/ELiFA/blob/master/bin/elifa.jar

Programa del taller:

0.- Instalacion de ELiFA (Edwin’s Library for Android )
1.- Hola mundo en android
1.1.- Creación de layouts en XML (Vistas o pantallas en android)
1.2.-Activity class(Vistas o pantallas en android)
2.- SQLite
2.1.- Creación de base de datos
2.2.- Modelado de base de datos en android
2.3.- Leer, Insertar, Modificar, Borrar registros de la base de datos
3.- HTTP request en android
3.1.- AsyncTask (Tareas asíncronas)
3.2.- Información en formato Json
3.3.- Post request hacia servidor
3.4.- Guardar en base de datos información en json del servidor

 

Dudas y sugerencias: programacion@mundosica.com y/o YaChingamos.com

Montando para escritura la carpeta system de Android

Android cuenta con una carpeta con el nombre system que es en donde se encuentran los archivos del sistema operativo(recordemos que Android es una versión de Linux).

Dicha carpeta se encuentra en la memoria ROM del dispositivo y cada vez que se prende se monta(vincula) esta carpeta pero solo con permisos de lectura, esto con la finalidad de que el usuario no modifique estos archivos para que no dañe el sistema operativo. Ya que si esto llegara a pasar el dispositivo quedaría sin Android(sistema operativo) y solo se podría arrancar en modo bootloader o en modo recuperación para instalar una nueva ROM.

En ocasiones es necesario modificar algunos archivos de esta carpeta, por ejemplo cada que se actualiza el sistema el sistema es montado para lectura escritura(read and write rw) para poder escribir en dicha carpeta, como se puede ver en la siguiente figura:

En la imagen se puede ver la actualizacion de android y se puede ver que intenta escribir erronea mente el archivo /system/app/AsusEmailWidget.apk.jpg

En la imagen se puede ver la actualizacion de android y se puede ver que intenta escribir erronea mente el archivo /system/app/AsusEmailWidget.apk

Bueno lo interesante es que si contamos con los permisos adecuados(root user) nosotros podemos montar dicha carpeta.

Para esto vamos a ocupar la aplicación «Terminal Emulator»  la cual es una  aplicacion de código abierto que nos permite acceder al shell del sistema operativo y  poder ejecutar instrucciones, sin mas accedemos a dicha aplicación y ejecutamos:

# Nos logeamos como usuario root
su
# Montamos la carpeta /system como lectura(r) y escritura(w)
mount -o remount,rw /system

¿Pero para que nos podría servir?

  • Para quitar aplicaciones precargadas.
  • Agregar aplicaciones precargadas.
  • Modificar archivos de configuración del sistema.
  • Agregar scripts propios para el sistema operativo.

Para no dejar esto inconcluso vamos a modifcar algun archivo del sistema, esperando en articulos posteriores explicar algunas de estas tareas. vamos a modificar el archivo

/etc/hosts

Cabe mencionar que /etc es un vinculo simbólico que apunta a /system/etc Para esto basta con que este montada la carpeta /system como lectura escritura y abrir el archivo.

Este archivo contiene la lista de hosts conocidos para los cuales no necesita utilizar el protocolo de descubrimiento de nombres de dominios (DNS), probemos con editar con el siguiente contenido.

127.0.0.1 localhost
127.0.0.1 google.com

Ahora si intentamos acceder a google.com desde nuestro navegador vamos a ver que no podemos acceder por que en teoría el hosts google.com se encuentra en la ip 127.0.0.1 que es la dirección del mismo dispositivo(dirección lockback https://en.wikipedia.org/wiki/Loopback). Bueno si revisamos este comportamiento entonces esto nos podria servir para bloquear a todos los servidores con los que no queremos que se comunique nuestro dispostivo p.e. si queremos bloquear el servicio de google ads podemos agregar la linea:

127.0.0.1 googleadservices.com

De esta forma podemos bloquear a todos los servidores de servicio de publicidad y con esto ahorrarnos una cantidad considerable de ancho de banda consumida por nuestros datos.

Les dejo el enlace de una lista completa de hosts para agregarlos:

http://pgl.yoyo.org/as/serverlist.php?showintro=0;hostformat=hosts

Que es el protocolo ARP y como acceder a sus tablas desde Android.

El protocolo ARP (Address Resolution Protocol) nos sirve para resolver direcciones físicas(MAC) a partir de las direcciones logicas(IP).

En ocasiones un nodo en la red necesita saber la dirección MAC de determinado equipo y sí solo conoce la dirección IP entonces realiza una solicitud ARP con esta dirección IP esperando que el equipo propietario de dicha dirección le responda con su dirección MAC.

Para que quede mas claro tratare de explicar esto con una imagen:

protocolo_arpComo podemos ver el nodo con IP 192.168.0.1 y MAC 10:16:F8:BA:19:57 Desea saber la dirección MAC del equipo con IP 192.168.0.9 por lo tanto envía una solicitud ARP a todos los equipos(broadcast) preguntando algo como:

Equipo 192.168.0.9 ¿me puedes enviar tu dirección MAC?

 

Esta «pregunta»(ARP – Request) les llega a todos los equipos a la red, pero solamente el equipo que tenga la dirección 192.168.0.9 será quien responda dicha pregunta(ARP-Reply) con algo como:

Equipo 192.168.0.1, yo soy 192.168.0.9 y mi dirección física es: 00:D1:16:19:34:01

Si nos percatamos en el ARP-Reply(respuesta) la respuesta la envia al equipo con MAC 10:16:F8:BA:19:57 por lo cual la solicitud no es enviada a todos los equipos como en el caso del ARP-Request(solicitud).

Tablas ARP

Todo este proceso de obtener la relaciones de direcciones IP y MACs puede provocar bastante trafico en la red sobre todo en el proceso de solicitud ya que como vimos se llena toda la red de paquetes.

Por esta razón los equipos van generando una tabla en donde almacenan esta información y con esto evitar la necesidad de realizar solicitudes ARPs. Dichas tablas son conocidas como Tablas ARPs.

Obteniendo las tablas ARPs:

Cuando configuramos una red es bastante común el ocupar las direcciones MAC y su relación con las direcciones IPs para determinadas configuraciones p.e. configurar una NAT, asignación de direcciones IPs especificas, bloqueo de equipos, etc…

La mayoría de los sistemas operativos cuentan con el comando arp el cual nos muestra dichas tablas veamos como obtenerlas en los sistemas operativos mas comunes:

#Linux, MAC y Windows
arp -a
#En Windows tmb se puede ocupar
arp -g

Tablas ARPs en Android.

En android no contamos con dicho comando sin embargo podemos acceder a un archivo (arp) ubicado en /proc/net/ (en esta carpeta están las configuraciones de red de android) en el cual se encuentran las tablas arp, sin mas veamos como visualizar dichas tablas.

cat /proc/net/arp

Nota: para acceder a la consola en android podemos ocupar la aplicación: «Terminal Emulator for Android», la cual puedes acceder desde:

https://play.google.com/store/apps/details?id=jackpal.androidterm&hl=es

NOTA2: Los sistemas operativos Unix(Linux & MAC) cuentan tambien con el archivo /proc/net/arp

Para mayor info: