24 de julio de 2013

PLATAFORMAS DE DESARROLLO PARA ANDROID

Android SDK
Figura 1.- Android SDK corriendo sobre Ubuntu.

El SDK de Android incluye un conjunto de herramientas de desarrollo: el depurador de código, una biblioteca, un simulador de teléfono basado en QEMU, documentación, ejemplos de código y tutoriales. Entre los SO soportados se incluyen a Linux, Max OS X 10.4.9 o posterior, y Windows (XP o posterior). El IDE soportado oficialmente es Eclipse junto con el complemento ADT (Android Development Tools plugin), aunque también puede utilizarse un editor de texto y con la ayuda de comandos en una terminal (se necesitan los paquetes JDK, Java Development Kit y Apache Ant) se crean y depuran las aplicaciones. Otra característica de este SDK es que pueden controlarse dispositivos Android que estén conectados a la computadora (e.g. reiniciarlos, instalar aplicaciones en remoto).

Las Actualizaciones del SDK están coordinadas con el desarrollo general de Android. El SDK soporta también versiones antiguas de Android, por si los programadores necesitan instalar aplicaciones en dispositivos ya obsoletos o más antiguos. Las herramientas de desarrollo son componentes descargables, de modo que una vez instalada la última versión, pueden instalarse versiones anteriores y hacer pruebas de compatibilidad.
Una aplicación Android está compuesta por un conjunto de ficheros empaquetados en formato .apk y guardada en el directorio /data/app del sistema operativo Android (este directorio necesita permisos de root, por razones de seguridad). Un paquete APK incluye ficheros .dex (ejecutables Dalvik, un código intermedio compilado), recursos, etc.

Android Studio
Figura 2.- Android Studio con Emulador integrado.

Android Studio es un entorno de desarrollo basado en IntelliJ IDEA. Siendo similar a Eclipse con el plugin ADT, Android Studio también proporciona herramientas integradas para el desarrollo y depuración de errores.

De las mejores capacidades esperadas de IntelliJ, Android Studio ofrece entre otras cosas:
  • Soporte para diseño basado en cuadriculas.
  • Asistente basado en plantillas para la creación de diseños y componentes comunes de Android.
  • Un editor de Layouts que permite el arrastrar y pegar de componentes de UI.
  • Un editor WYSIWYG.
La versión mas reciente de Android Studio es la 0.20 lo que significa que es una versión beta. En la página de Android Developers se indica que debido a que Android Studio se encuentra en desarrollo, muchas funciones están inhabilitadas y que tiene errores.

Native Development Kit (NDK)
Figura 3.- Interfaz y emulador del NDK.

El NDK permite instalar bibliotecas escritas en C y otros lenguajes, una vez compiladas para ARM o código x86 nativo. Los programas Java corriendo en la máquina virtual Dalvik (Dalvik VM) pueden llamar a clases nativas por medio de la función System.loadLibrary, que forma parte de las clases estándar Java en Android.

Se pueden compilar e instalar aplicaciones completas utilizando las herramientas de desarrollo habituales. El depurador ADB proporciona un shell root en el Simulador de Android que permite cargar y ejecutar código nativo ARM o x86. Este código puede compilarse con GCC en un ordenador normal. La ejecución de código nativo es difícil porque Android utiliza una biblioteca de C propia (libc, llamada Bionic). Se accede al dispositivo gráfico como un framebuffer disponible en /dev/graphics/fb0. La biblioteca gráfica que utiliza Android para controlar el acceso a este dispositivo se llama Skia Graphics Library (SGL), disponible con licencia de código abierto. Skia tiene implementaciones en win32 y Unix, permitiendo el desarrollo cruzado de aplicaciones, y es el motor de gráficos que soporta al navegador web Google Chrome.

App Inventor para Android
Figura 4.- App Inventor es un entorno visual Web de desarrollo para Android.

Google anunció en julio de 2010 la disponibilidad de App Inventor para Android, que es un entorno de desarrollo visual Web, para programadores novatos, basado en la biblioteca Open Blocks Java, del MIT. Este entorno proporciona acceso a funciones GPS, acelerómetro y datos de orientación, funciones de teléfono, mensajes de texto, conversión habla a texto, datos de contacto, almacenamiento permanente y servicios Web, incluyendo inicialmente Amazon y Twitter. 

Hal Abelson, director del proyecto en el MIT, dijo: "Sólo hemos podido hacerlo porque la arquitectura Android es tan abierta". Después de un año de desarrollo, la herramienta de edición de bloques se ha utilizado para enseñanza a principiantes en ciencias de computación en Harvard, MIT, Wellesley, y en la Universidad de San Francisco, donde el profesor David Wolber desarrolló un curso de introducción a la ciencia de los ordenadores y un libro de enseñanza para estudiantes que no estudian computación, basado en App Inventor para Android.

HyperNext Android Creator (HAC)
Figura 5.- HAC es un entorno visual de desarrollo para programadores novatos.

HyperNext Android Creator (HAC) es un sistema de desarrollo de programas dirigido a programadores novatos, permitiéndoles crear sus propias aplicaciones sin necesitar conocimientos de Java y del SDK de Android. Está basado en HyperCard, que gestiona el software como una pila de tarjetas en la que sólo una de ellas es visible en un momento dado y por tanto encaja bien en aplicaciones para teléfonos móviles, con una sola ventana disponible a la vez.

El lenguaje principal de desarollo se llama simplemente HyperNext y está relacionado con el lenguaje de HyperCards HyperTalk. HyperNext es un intérprete de un lenguaje similar al inglés y tiene muchas funciones para crear aplicaciones Android. Soporta un subconjunto creciente del SDK de Android incluyendo sus propias versiones de controles gráficos de interfaz de usuario (GUIs) y ejecuta automáticamente su propio servicio, de forma que las aplicaciones pueden continuar ejecutándose y procesando información, sin estar en el frontal del usuario.

El proyecto Simple
El objetivo de Simple es ser un lenguaje fácil de aprender para la plataforma Android. Simple es un dialecto de BASIC para Android. Sirve tanto para progrAamadores profesionales como aficionados permitiendo escribir rápidamente aplicaciones que utilizan los componentes de Android.

Parecido a Visual Basic 6 de Microsoft, los programas Simple consisten en definiciones de formularios (que contienen componentes) y código (con la lógica del programa). La interacción entre ellos se hace por medio de eventos lanzados por los componentes. La lógica del programa consiste en gestores de eventos, que ejecutan código dependiendo del evento.

El proyecto Simple no tiene mucha actividad. La última actualización de código se realizó en agosto de 2009. Existe un producto comercial parecido llamado Basic4android, inspirado en Visual Basic 6 y Microsoft Visual Studio. Este proyecto si tiene actividad y hay una comunidad sólida de programadores.

Referencias


[1] http://es.wikipedia.org/wiki/Desarrollo_de_Programas_para_Android

[2] http://applicantes.com/una-herramienta-gratuita-para-desarrollar-apps-en-ios-y-android/

LA TARJETA SIM

Una tarjeta SIM (acrónimo en inglés de subscriber identity module, en castellano módulo de identificación del suscriptor) es una tarjeta inteligente desmontable usada en teléfonos móviles y módems HSDPA o HSUPA que se conectan al puerto USB. Las tarjetas SIM almacenan de forma segura la clave de servicio del suscriptor usada para identificarse ante la red, de forma que sea posible cambiar la línea de un terminal a otro simplemente cambiando la tarjeta [1].

El uso de la tarjeta SIM es obligatorio en las redes GSM. Su equivalente en las redes UMTS se denomina USIM o UICC (acrónimo de Universal Integrated Circuit Card, ‘Tarjeta Universal de Circuito Integrado’), siendo más popular el RUIM (Removable User Identify Module, ‘Módulo de Identidad de Usuario Desmontable’) en los teléfonos CDMA [1].

Las tarjetas SIM están disponibles en tres tamaños. El primero es similar al de una tarjeta de crédito (85,60 × 53,98 × 0,76 mm). El segundo y más popular mide 25 × 15 × 0,76 mm. El tercero y más reciente, conocido como micro-SIM, tiene unas dimensiones de 15 × 12 × 0,76 mm [1].

Las especificaciones aplicables a las tarjetas SIM son [1]:
  • GSM 11.11: Especificación de la interfaz SIM-ME (Mobile Equipment, ‘Equipamiento Móvil’).
  • GSM 11.14: Especificación del SIM Application Toolkit (‘Herramientas de Aplicación SIM’) para la interfaz SIM-ME.
     
LA TARJETA SIM
La tarjeta SIM o Modulo de Identificación del Subscriptor (Subscriber Identification Module) es una "tarjeta inteligente" que es incluida en cualquier teléfono celular de la familia de redes GSM. Físicamente la tarjeta puede ser de dos tamaños [2]:
  • ID-1: que posee las dimensiones de una tarjeta de crédito.
  • Plug-in ó micro tarjeta (con unas dimensiones de 25x15 milímetros).
En cualquiera de los dos tamaños, el modulo tiene las mismas capacidades de procesamiento y almacenamiento por medio de los siguientes elementos [3]:
  • Contiene memoria RAM (Random Acceso Memory) y EEPROM (Electrically Erasable Programmable Read-Only Memory) (ver Figura 1).
  • Contiene memoria ROM (Read-Only Memory) que se encuentra protegida físicamente, hace a la tarjeta una herramienta poderosa (ver Figura 1).
  • Un microprocesador que le otorga capacidad de procesamiento local e independencia del Handset (ver Figura 1).
  • Entradas y salidas de control para comunicarse con el Handset (ver Figura 1).
Figura 1.- Descripción del modulo SIM y el tamaño ID-1.
Respecto a las características de las tarjetas, existen tres modos de operación: 5V, 3V y 1.8V, con unos consumos máximos de corrientes asociados. El terminal GSM ó UMTS intentará activar la tarjeta desde del voltaje más bajo hasta obtener una respuesta estable. En GSM se suelen utilizar las tarjetas que se alimentan con 5V ó 3V, mientras que en UMTS se utilizan 3v ó 1.8V [2].

ESTRUCTURA LOGICA
El diálogo de alto nivel entre el terminal y la tarjeta hace referencia a una estructura lógica basada en ficheros, con condiciones de acceso asociadas. Los conceptos empleados en 2G como en 3G son los mismos. Sin embargo en 3G la estructura es genérica y abierta, soportando la noción de aplicación (que también se soporta en fases de desarrollo mas tardías de la tarjeta SIM) [2].

La estructura lógica se basa en un árbol de directorios y ficheros. Los directorios pueden contener otros directorios o ficheros, y hacen agrupaciones lógicas de estos elementos basándose en funcionalidades asociadas. Existen dos tipos de directorios: el directorio MF y el directorio DF. Además se define un directorio de aplicación o ADF, que es la raíz absoluta dentro de dominio de una aplicación [2].

Todos los ficheros de la tarjeta tienen un FID (File Identifier) asociado, que junto a su ruta de acceso lo definen unívocamente. Adicionalmente, los ficheros tienen unas condiciones de acceso respecto a cada una de las operaciones que se pueden realizar sobre ellos. Para cada uno, se puede definir una matriz que asocia cada operación (lectura, escritura, borrado, etc.) con la condición necesaria para poder ejecutar la operación: Always, PIN, clave administrativa, Never, etc. Por ejemplo, para poder leer un registro de la agenda se necesita modificar el PIN. Para modificar el IMSI de la tarjeta, la condición es Never, por lo que nunca se podrá modificar utilizando mecanismos convencionales. En la Figura 2 se puede observar la estructura de ficheros de la tarjeta SIM [2].



Figura 2.- Estructura de ficheros de la Tarjeta SIM .

Como puede observarse, bajo el directorio raíz (MF) existen dos ficheros y dos directorios. El fichero EF ICCID almacena el identificador de la tarjeta de circuitos integrados (ICC: Integrated Circuits Card) que es único y no modificable. El fichero EF ELP define los lenguajes preferidos del usuario en orden de prioridad. El directorio DF GSM contiene la aplicación GSM y el directorio DF TELECOM almacena información relacionada con los servicios que ofrece la operadora de telecomunicación a las aplicaciones presentes en la tarjeta (DF ADN: agenda telefónica, DF SMS: almacén de SMS, DF LND: últimos números marcados, DF MSISDN (Mobile Station International ISDN Number): contiene el numero asociado al abonado, etc.) [2].

El directorio de la aplicación GSM (DF GSM) está contenido en el directorio principal o MF de la tarjeta. En DF GSM se encuentran todos los contenidos relacionados con la aplicación GSM. A continuación se explicara la función de algunos ficheros elementales de DF GSM [2]:
  • EF LP: Contiene la lista de los lenguajes preferidos (LP: Language Preference) por orden de prioridad, de forma que el usuario pueda escoger sus preferencias. El ME quizás use esta información para propósitos que tengan que ver con MMI (Man Machine Interface) o para presentar en pantalla los mensajes de difusión en la lengua preferida.
  • EF LOCI: contiene información de localización (LOCI: Location Information). Los datos guardados son: el TMSI (Temporary Mobile Subscriber Identity), el temporizados que controla las actualización de posición periódicas (indica cada cuanto debe realizarse una actualización de posición periódica) el estado de la actualización (se ha actualizado o no),  si la PLMN o el área de localización no son permitidas, etc.
  • EF IMSI: contiene el IMSI (International Mobile Subscriber Identity) del usuario.
  • EF PLMN: Contiene una lista de PLMN´s (Public Land Mobile Network) en orden de preferencia. Esta información la determina el usuario o el operador de red.
  • EF FPLMN: contiene los códigos de redes móviles prohibidas (FPLMN: Forbidden PLMN).
  • EF SST: contiene la tabla de servicios de la SIM, SST (SIM Service Table), es decir, indica los servicios que han sido definidos en la SIM y dentro de éstos, cuáles están activos. Los servicios a los que se refiere son por ejemplo: ADN, FDN, SMS, CCP, PLMN Selector, LDN, MSISDN, etc.

CONCLUSIONES
La tarjeta SIM es un modulo que proporciona capacidad de almacenamiento (128 Kb) y de procesamiento según la señal de reloj. Además la SIM es en sí misma un sistema de cómputo completo, puesto que cuenta con ROM, RAM y EEPROM.

Los rangos de operación de voltaje de la tarjeta son los adecuados para ser utilizados en cualquier Handset. Además que al tener tres distintas opciones (1.8V, 3V y 5V) el Handset puede elegir la más adecuada para optimizar la energía disponible en la batería.

La estructura lógica del SIM incluye los tipos de directorios (MF, DF y ADF) y los ficheros (EF). Dentro de este tópico se inspecciono los EF más importantes, como ejemplo el fichero que almacena el IMSI (EF ‘6F07’).

REFERENCIAS
[1] http://es.wikipedia.org/wiki/Tarjeta_SIM
[2] Benita, J. (s.f.). Proyecto de Fin de Carrera. Cifrado de la Información con Algoritmos Simétricos usando Claves de Identificación Única de la Java Card para la Java ME . Sevilla, España.
[3] http://www.cicomra.org.ar/cicomra2/asp/Present.%20F.%20Giannattasio%20-%20GEMALTO.pdf