[ABC] Referencia de Android

Cuando conocemos una nueva cultura, es vital aprender su idioma, su método de comunicación. A menudo gesticular no es suficiente, tampoco hablando alto o lento. Para navegar con una nueva cultura debes saber cómo comunicarte con ella, o quedar como un tonto o peor, como un turista.

Android, como cualquier otra cultura, tiene su propio lenguaje, frases y léxico. Ésta guía es un intento por tratar de acercarte a una comunidad sin precedentes y/o límites. Esperamos que al final puedas sentirte menos ridículo y más adentrado.

Las siguientes definiciones fueron sacadas del sitio oficial de Desarrolladores de Android. Ten en cuenta que se maneja mucho el inglés debido a que así está concebido el lenguaje. Te recomiendo que hagas uso de Google y/o Wikipedia para que sepas el significado de alguna de ellas. Por mi parte trataré por todos los medios de ser lo más explícito posible, solo ten en cuenta que hay palabras que traducidas pierden todo el sentido, por ende las dejo tal y como son, aunque todos mis intentos van entorno al contexto que pueda darle al texto en general para que, a pesar de una o dos palabras en inglés, entiendas a qué me refiero.

.APK: Android application package (paquete de aplicación de Android). Cada aplicación de Android es compilada y empaquetada en un archivo que incluye todo el código de la aplicación (archivo .dex), recursos, medios, y un archivo de manifiesto. El paquete de la aplicación puede tener cualquier nombre, pero debe usar la extensión .apk.

.DEX: Ejecutable Dalvik. Es el código compilado de una aplicación de Android. Los diferentes programas de Android están compilados dentro de archivos .dex, los cuales están compactados dentro de un archivo .apk dentro del dispotitivo. Los archivos .dex pueden ser creados traduciendo automáticamente aplicaciones escritas en Java.

Action: Una acción es la descripción de algo que se necesita hacer por parte de un Intent. Una acción es un valor string asignado a un Intent. Las mismas pueden ser asignadas por Android o por cualquier desarrollador. Por ejemplo, la acción android.intent.action. busca una URL, así como com.example.rumbler.SHAKE_PHONE que lo que hace es vibrar el teléfono.

Activity: Una actividad es una pantalla en una aplicación, con soporte de código de Java, derivado de la clase Activity. Comúnmente una actividad es representada visiblemente por una ventana a pantalla completa que puede recibir y manipular eventos de Interfaz de Usuario (UI) además de complementar tareas complejas. A pesar de estar casi siempre a pantalla completa, también puede estar flotando o transparente.

ADB: Android Debug Bridge, es una potente aplicación de línea de comandos incluida dentro del Kit de Desarrollo (SDK). Ofrece herramientas para interactuar dentro del dispositivo sin una sola frontera. Si desarrollas con Eclipse a través del plugin ADT, podrás integrar ADB a tu interfaz.

Archivo AndroidManifest.xml: Cada aplicación debe tener un archivo AndroidManifest.xml en la raíz. Dicho archivo actúa como manifiesto, con información esencial sobre la aplicación respecto al sistema, información que el sistema debe poseer antes que corra un solo bit de tu código.

Aplicación: Desde una perspectiva de componente, una aplicación de Android consiste en una o más actividades, servicios, listeners, y receptores intent. Desde una perspectiva de archivo fuente, una aplicación de Android consiste en código, recursos, assets, y un manifiesto. Durante la compilación, estos archivos son empaquetados en un archivo .APK.

Boot: En total contraste con otros sistemas basados en Linux, Android posee una partición boot (con el contenido de un archivo boot.img), a diferencia de un sistema con boot directo. Esta partición posee un ‘ramdisk’ de solo lectura además de otro par de archivos. El ramdisk contiene archivos esenciales para el boot, tales como init.rc y default.prop. Esta partición configura la estructura de directorios del dispositivo, conteniendo carpetas vacías para /data, /dev/proc, /sbin, /sys, y /system.

Bootloader: El bootloader no es más que el firmware que corre dentro de cada inicio. Algunas veces es conveniente cambiar la versión de tu bootloader, o cargar un bootloader totalmente diferente al oficial para poder hacer uso de otras características no presentes en el actual o un sistema operativo diferente por completo. La versión actual puede ser comprobada entrando en el modo bootloader, proceso que depende de una combinación de teclas antes de encender el dispositivo, la cual es diferente en cada fabricante.

Broadcast Receiver (Receptor de Transmisión): Una clase que actúa como escucha para los Intents que son transmitidos, en vez de ser enviados como objetivo a una aplicación o actividad. El sistema entrega un Intent de transmisión a todos los receptores de transmisión interesados, que manipulan secuencialmente al Intent.

Canvas: Una superficie de dibujo que manipula la composición de los bits actuales contra un Bitmap o un objeto Surface. Posee métodos para el dibujo estandar computacional de bitmaps, líneas, círculos, rectángulos, texto, etc. y está atado a un Bitmap o a un Surface. Un canvas es el modo más sencillo de dibujar en la pantalla objetos en 2D. Sin embargo, no soporta aceleración por hardware, tal como hace OpenGL ES. La clase base es Canvas.

Content Provider (Proveedor de Contenido): Es una capa de abstracción de datos (data-abstraction) que puedes usar para exponer los datos de tu aplicación hacia otras aplicaciones. Está construido con la clase ContentProvider, la cual manipula cadenas de consulta de contenido de un formato específico para retornar datos en un formato específico.

Dalvik: Es la máquina virtual de la plataforma Android. La MV Dalvik es una máquina virtual de tipo interpreter-only que ejecuta archivos en el formato ejecutable de Dalvik (.dex), un formato que es optimizado para eficiencia de almacenamiento y ejecución de memoria mapeable (memory-mappable). La máquina virtual está basada en registros, por lo que puede correr clases compiladas por un compilador de Java que ha sido transformado hacia su formato nativo usando la herramienta incluída dx. La base de las librerías de clases de Dalvik están hechas para proveer una base familiar de desarrollo para aquellos que estén acostumbrados a programar con Java Standard Edition, además de estar optimizadas específicamente para las necesidades de un equipo móvil.

Data: La partición de datos en el equipo contiene los datos personales del usuario, tales como el registro de aplicaciones instaladas además de sus configuraciones, además de tu base de datos SQLite con las configuraciones de Android y los mensajes. Normalmente, el directorio /data/app está inaccesible para el comando adb shell, lo mismo sucede con otros comandos que corren de igual manera dentro del dispositivo, esto se debe a que dicho directorio contiene los apk de las aplicaciones. En un equipo rooteado, usando el comando su podremos tener acceso completo a dicha partición. Esta partición puede ser flasheada usando Fastboot o Nandroid.

DDMS: Dalvik Debug Monitor Service, es una aplicación GUI (visual) incluida dentro del SDK. Proporciona una captura de pantalla, obtención de log, además de capacidades de examinación de procesos. Por ejemplo, si estás desarrollando en Eclipse usando el plugin ADT, tendrás de manera integrada al DDMS dentro de tu interfaz de desarrollo.

Deodex: Deodex es el proceso de combinar los elementos ya optimizados para una aplicación encontrados en un archivo .odex, comprimiéndolos dentro del .apk junto con el resto de la aplicación. La razón principal para hacer esto es permitirles a los desarrolladores de aplicaciones y ROMs editar la parte gráfica y las configuraciones de una aplicación.

Dialog: Es una ventana flotante que actúa como un formulario lightweight. Un dialog puede tener controles de botón solamente y está concebido para ejecutar una acción sencilla y en algunos casos retornar un valor. No está hecho para ejecutar acciones complejas. Android provee por defecto un dialog bastante sencillo con botones opcionales, no obstante tú puedes definir tu propio esquema de dialog. La clase base para un dialog es Dialog.

Drawable: Una fuente visual compilada que puede usada como un fondo, título u otra parte de la pantalla. Típicamente un drawable es cargado dentro de otro elemento de interfaz de usuario. No es capaz de recibir eventos, sin embargo puede asignar otras propiedades tales como state y scheduling, para habilitar sub-clases tales como objetos de animación o librerías de imágenes.

Fastboot: Es el medio que le permite al usuario ejecutar o flashear un archivo .img en su dispositivo. Algunos equipos permiten este tipo de nivel de acceso de manera predeterminada, otros no. Un ejemplo de ello está en los dispositivos Nexus, que te permiten desbloquear el bootloader.

Flash: Flash (flasheo, flashing, etc.) es el proceso de escribir datos en la memoria interna de tu dispositivo. Donde más se usa para instalar ROMs con el objetivo de actualizar tu equipo o simplemente pasarte a otro desarrollador. Puedes flashear además radios de señal, bootloaders y muchas más cosas.

Flash Memory: Se le conoce comúnmente como memoria NAND, la cual retiene información incluso cuando el dispositivo está apagado. Esta memoria es el equivalente al disco duro en una PC. Es en ésta dónde se aloja el sistema operativo (frecuentemente llamado firmware) además de las aplicaciones. Es más lenta que la RAM pero más rápida que una tarjeta SD.

Logcat: Es una potente herramienta que te permite ver y guardar logs de todas las funciones de tu dispositivo en tiempo real. Es de inmensa ayuda cuando estás a la caza de bug y problemas. Aprovechando su gran nivel de funcionalidad, existen miles de aplicaciones que utilizan esta función para facilitarte la detección de posibles problemas

Market (también Play Store): Es la tienda oficial de Android para la compra de aplicaciones y descarga gratuita en las que aplique. Tiene una peculiaridad ÚNICA en el mundo de las tiendas de app, y es que basta con que toques en el botón de descarga y automáticamente la app se comenzará a descargar en tu dispositivo, sin la necesidad de pasar primero por un molesto gestor (como es el caso de iTunes en Apple) que posteriormente sea el encargado de instalártelo en tu dispositivo.

Intent: Es un objeto de mensaje que puedes usar para lanzar o comunicarte con otras aplicaciones/actividades de manera asíncrona. Un objeto Intent no es más que una instancia de un Intent. Incluye muchos campos que puedes utilizar para determinar qué aplicación/actividad recibe el Intent y lo que hace el receptor mientras lo manipula.

Intent Filter: Es un objeto de filtro que declara una aplicación en su archivo de manifiesto para decirle al sistema qué tipo de Intents están dispuestos a aceptar sus componentes y con qué criterio. A través de un filtro Intent, una aplicación puede manifestar un interés en algún tipo de dato específico, acciones Intent, formatos URI, y así sucesivamente.

Layout Resource: Es un archivo XML que describe el marco de la pantalla Activity.

Manifest File: Es un archivo XML que deben definir cada aplicación para describir el nombre de paquete de la aplicación, versión, componentes (actividades, filtros Intent, servicios), librerías importadas, etc.

Nandroid: Es un proceso muy usado para hacer copias de rescate o para restaurar copias de rescate desde tu Recovery. Puedes escoger entre hacer una copia de seguridad regular (solamente en el dispositivo) o una copia de seguridad + sd-ext. Ambas van a rescatar todo tu sistema, pero la segunda incluirá aplicaciones salvadas en el sd-ext de tu tarjeta sd.

Nine-patch / 9-patch / Ninepatch image: Es un recurso bitmap ampliable que puede ser usado para fondos u otras imágenes en el dispositivo.

Odex: Según sus siglas en inglés es un archivo “Optimized Dalvik Executable” (Ejecutable Optimizado de Dalvik). Los sistemas Android, como se ha definido más arriba, utiliza datos comprimidos alojados dentro del .apk. Para acelerar este proceso, los elementos más críticos de una aplicación se alojarán de manera descomprimida en un archivo .odex, brindándole a Android la posibilidad de interpretar de manera rápida dichos elementos antes de continuar con el resto de la aplicación.

OpenGL ES: Android provee librerías OpenGL ES que puedes usar de manera rápida imágenes 3D complejas. Es más difícil de usar que un objeto Canvas, pero mucho mejor para objetos 3D. Los paquetes android.opengl y javax.microedition.khronos.opengles exponen la funcionalidad de OpenGL ES.

Radio: En los móviles, el radio es la parte que trata las conexiones móviles. Se encarga de las redes CDMA, GSM, LTE, 3G, 4G. del Bluetooth, WiFi y GPS. Contiene un software que controla la manera en que opera, y versiones más recientes del firmware del Radio se hacen disponibles a través de actualizaciones de sistema. Éstas actualizaciones son transparentes para el usuario, sin embargo los usuarios que eligen instalar software personalizado (custom) pueden actualizar su Radio usando un archivo update.zip que hace disponible la comunidad de desarrollo personlizado. Flashear el Radio es potencialmente riesgoso, y NUNCA quites la batería de tu dispositivo mientras está dicho proceso. De hacerlo, es posible que tu teléfono sufra un brick. No obstante, puede brindarte mejor vida de batería, fuerza de señal, etc.

Recovery: La partición de Recovery es de tipo boot, y le permite a tu dispositivo efectuar muchas funciones, tales como hacerle un reset de fábrica al dispositivo (esto ocurre en la partición Data), efectuar una actualización a partir de un archivo update.zip en la raíz de tu SD. Es muy común (sin embargo no obligado) flashear un recovery avanzado como TWRP o ClockworkMod, esto te permitirá acceder a opciones avanzadas tales como hacer una copia de seguridad a tu Nandroid, flashear modificaciones, instalar ROMs. Para acceder a un Recovery se requiere una combinación de teclas que difiere en cada fabricante.

Resources: Componentes de aplicación no-programáticos que están externos respecto al código de una aplicación, pero que pueden ser cargados desde el código de la misma usando un formato de referencia conocida. Android soporta una variedad de tipos de recursos, sin embargo  el recurso típico de una aplicación consiste en strings de interfaz de usuario, componentes de disposición de interfaz de usuario, gráficos u otros archivos multimedia. Una aplicación usa recursos (resources) para lidear eficientemente con posicionamiento, varios perfiles y estados. Los recursos de una aplicación están siempre guardados por defecto en el sub-directorio res/* del proyecto.

ROM: Literalmente quiere decir “Read-Only Memory” (Memoria de Solo Lectura), pero su uso ha cambiado cuantiosamente con el paso del tiempo. Hoy en día ROM se refiere al área no-volátil de la memoria flash de un dispositivo en la cual reside solamente datos de solo lectura o el paquete de imagen que va a ser escrito en dicha área.

Root: Tal y como muchos usuarios ya deben conocer (oh… esa gente linda de Linux) root se refiere al conocido usuario de niveles de accesos más altos dentro del sistema (“cariñosamente” se le conoce como su) en sistemas como Unix, tales como Android. El usuario root y las aplicaciones ejecutadas por éste poseen accesos administrativos a archivos protegidos y servicios los cuales lo hacen bien peligroso para el uso de alguien con un conocimiento de la materia no avanzado. Un dispositivo ‘rooteado’ es aquel que ha sido hackeado para proveer una escala de privilegios desde un usuario estandar a un super usuario (el término usado es superuser). El primer paso para la instalación de ROMs personalizadas es precisamente el rooteo de tu dispositivo.

S-OFF/S-ON: Esto se refiere a una partición NAND bloqueada/desbloqueada. HTC bloquea la NAND en sus teléfonos para prevenir la escritura en la partición de sistema. Como ya habrás obtenido por lógica (y si no, te lo aclaramos ahora) S-ON se refiere al estado bloqueado, mientras que S-OFF se refiere al estado desbloqueado, el cual se logra con un exploit para flashear un SPL.

Service: Un objeto de clase Servicio que se ejecuta a bajo nivel (sin ninguna presencia de interfaz de usuario) que efectúa varias acciones de caracter persistente, tales como reproducir sonidos o monitorear actividad en una red, entre otros.

SPL: Secondary Program Loader (traducido sería algo así como Cargador Secundario de Programa… ufff, es momentos así que odio el español) no es más que un pedazo de código boot encargado de ejecutarse al inicio de un dispositivo, mostrando la pantalla inicial del mismo, y de paso cargando los archivos iniciales de una ROM. Chequea si alguna combinación de botones es efectuada (tales como las que hay que efectuar para entrar en Modo Recovery o al Bootloader). Si no se presiona ninguna de las combinaciones para las cuales está hecho, el bootloader carga el software de sistema de manera normal.

Stock: El término ‘stock’ se refiere con frecuencia al archivo, proyecto o parte de un software que no ha sido tocado por ningún desarrollador más allá de sus autores. Por ejemplo, una ROM stock sería aquella que ha sido producida por HTC, Samsung y que no ha sido modificada por nadie en ningún punto. El término hace mención constantemente al software que traen de fábrica los dispositivos.

SU: Como decíamos más arriba, SU (cariñosamente le decimos así, pero en realidad se refiere a ‘substitute user’) es un comando Linux que, cuando corre sin ningún parámetro de usuario, corre por defecto con permisos root. Originalmente, este comando binario no está incluido en Android, sin embargo el proceso de rooteo de un dispositivo copia este archivo al directorio ‘/system/bin/’ habilitando por ende el comando. Debido a que los privilegios root pueden ser aprovechados abusiva y maliciosamente por malwares, etc. es altamente recomendable instalar (y de hecho el 99% de los procesos de root la incluyen) una aplicación que reúna en un mismo espacio a todas las aplicaciones con este nivel de acceso de manera tal que puedas tener ese conocimiento esencial a tu vista. Dos ejemplos de este tipo de aplicaciones son SuperSU y Superuser.

Surface: Un objeto de tipo Surface representa un bloque de memoria que es compuesto en la pantalla.  Un Surface retiene a un objeto de tipo Canvas para dibujo, y provee además varios métodos de ayuda para dibujar capas y redimensionar la superficie. No debes usar esta clase directamente, mejor usa la SurfaceView.

SurfaceView: Un objeto de tipo View que contiene uno de tipo Surface para dibujo, y expone métodos para especificar su tamaño y formato dinámicamente. Un SurfaceView provee una vía para dibujar independientemente de la interfaz de usuario para operaciones recurso-intensivas (tales como juegos o vistas previas de cámaras). SurfaceView soporta gráficos Canvas y OpenGL ES. La clase base es SurfaceView.

System: En el directorio /system de tu dispositivo es donde está alojado el software operacional principal de Android. Posee un número de sub-directorios de los cuales /system/apps (donde están alojadas las aplicaciones) es el único al que el usuario tiene la necesidad de acceder. Es de solo lectura por defecto y necesita ser remontado a través de adb para permitir accesos de escritura.

Theme: Es un set de propiedades (tamaño de texto, tipografía, color de fondo, y todo lo que contiene una interfaz) empaquetadas que definen varias configuraciones visuales.

Update.zip: Es un archivo que contiene algunos archivos que serán copiados a la memoria interna del dispositivo. Normalmente los archivos update.zip se usan para instalar modificaciones tales como themes o aplicaciones que son instaladas en la partición System. Al cambiar un aspecto en específico del sistema, hacer uso de este tipo de archivos te permite evitarte la reinstalación de una ROM.

URIs en Android: Android usa strings URI de manera básica para solicitar datos en un proveedor de contenido (tal como mostrar una lista de contactos) y para solicitar acciones en un Intent (tal como abrir una página web en un navegador).

View: Es un objeto que dibuja un área rectangular en la pantalla, aceptando clics, teclas y otros eventos de interacción. View es una clase base para muchos componentes de disposición de pantallas de tipo Activity o Dialog (check boxes, ventanas, etc.).

Viewgroup: Es un objeto contenedor que agrupa un set de Views child (busca acerca del concepto child y parent para que entiendas). Éste es responsable de decidir dónde vistas child son posicionadas y cuan largos pueden ser, así como ordenarles que se dibujen a sí mismas cuando sea apropiado.

Widget: Es una dentro del set de subclases de View que renderea elementos de formulario y otros componentes de interfaz de usuario, tales como campos de texto o menú contextual o emergente. Están contenidos dentro del paquete <code>android.widget</code>.

Window: Es en una aplicación de Android, un objeto derivado de la clase abstracta Window que especifica los elementos de una ventana genérica , tal como el estilo (barra de texto de título, localización, contenido de los menús, etc.).

Dejar un comentario

Your email address will not be published. Required fields are marked *